【问题标题】:QuadBounds Order for PdfAnnotation markup using itext or pdfbox使用 itext 或 pdfbox 的 PdfAnnotation 标记的 QuadBounds 顺序
【发布时间】:2013-09-17 21:10:15
【问题描述】:
  0  1                      2  3
 *  (x1,y1) ***************  (x2,y2)
 *          *             *
 *          *             *             
 *   4  5   *             *    6 7       
 *  (x3,y3) ***************  (x4,y4)

PdfAnnotation 或 PDFAnnotation 的浮点数组的顺序是否正确?我尝试创建一个 pdf 注释,但注释是凹的而不是像通常使用 adobe reader 或 acrobat 创建的那样凸的注释

【问题讨论】:

    标签: java itext pdfbox


    【解决方案1】:

    我在使用 iText 2.1.7 时遇到了同样的问题,这让我发疯了。 jrubins 描述的顺序对我不起作用,它产生了凹面注释。最终我找到了正确的顺序,即 lr > ll > ur > ul 。

        /* 
         * PDF Specification Order - results in broken annotation
         * 
         *  7,8             5, 6
         *  (x,y)___________(x,y)
         *      |           |
         *      |           |
         *      |___________|
         *  (x,y)           (x,y)
         *  1, 2            3, 4 
         */
    
        /* 
         * Concave order - results in working, but concave annotation; don't know why
         * 
         *  5, 6            7, 8
         *  (x,y)___________(x,y)
         *      |           |
         *      |           |
         *      |___________|
         *  (x,y)           (x,y)
         *  1, 2            3, 4 
         */
    
        /* 
         * Convex order - this is the one working like expected:
         * 
         *  7,8             5, 6
         *  (x,y)___________(x,y)
         *      |           |
         *      |           |
         *      |___________|
         *  (x,y)           (x,y)
         *  3, 4            1, 2 
         */
    
        float[] quad = { rect.getRight(), rect.getBottom(), rect.getLeft(),rect.getBottom(), rect.getRight(), rect.getTop(),
                rect.getLeft(), rect.getTop() };
    

    【讨论】:

      【解决方案2】:

      我使用 iText 的发现如下:

      *     4  5                         6  7
      *   (x3, y3)  *****************  (x4, y4)
      *             *               *
      *             *               *
      *             *               *
      *     0  1    *               *    2  3
      *   (x1, y1)  *****************  (x2, y2)
      

      使用此顺序使我的高亮输出具有与 Adob​​e Acrobat 中的高亮注释工具相同的凸面效果。

      【讨论】:

      • 是的。当我从 pdfbox 切换到 iText 时,我遇到了这个注释问题。pdfbox 和 itext 中的顺序与 pdf iso 文档中的顺序不同。因为四边形被扭曲了,所以有凹边。
      【解决方案3】:

      四边形坐标上的 Pdf 规范说明:

      每个四边形的坐标按顺序给出

      x1 y1 x2 y2 x3 y3 x4 y4

      逆时针的顺序指定四边形的四个顶点。出于定位目的,例如在应用下划线边框样式时,四边形的底部是由 (x1, y1) 和 (x2, y2) 形成的线。

      ISO 32000-1 中第 12.5.6 节的多个小节)

      因此:

      *   6  7                      4  5       
      *  (x4,y4) ***************  (x3,y3)
      *          *             *
      *          *             *             
      *   0  1   *             *    2  3
      *  (x1,y1) ***************  (x2,y2)
      

      【讨论】:

      • pdf库也一样? esp pdfbox 和 itext?
      • 这就是所有库必须将坐标写入注释的方式。他们对您的参数期望在理论上可能有所不同。话虽如此,PdfAnnotation.createMarkup 中的 iText 和 PDAnnotationLinkPDAnnotationTextMarkup 中的 PDFBox 使用它们来时的值。
      • 不,这不起作用。注释变形了。我使用了 itext。
      • 那么请提供一个简短的程序来说明这个问题。也许您的问题完全有不同的原因。
      • 谢谢我终于弄明白出了什么问题。顺序从一开始就是正确的
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-03
      • 2020-07-26
      • 1970-01-01
      • 2011-10-29
      • 2015-06-20
      相关资源
      最近更新 更多