使用PDFbox突出显示文本

时间:2014-07-10 11:46:19

标签: highlight pdfbox

嗨,我是 Pdfbox 的新手,我想突出显示PDF文件的某些特征。 现在我可以得到角色的坐标,我想突出它。

我在这个链接上看到: highlight text using pdfbox when it's location in the pdf is known

显示了要突出显示的步骤。

我的问题在于以下两个步骤: markup.setRectangle(); markup.setQuads();

我试图理解Quadpoints和PDRectangles但却失败了。

实际上,如果我编写这样的代码:

    PDRectangle position = new PDRectangle(50,50);
    markup.setRectangle(position);
    float []p=new float[8];
    p[0]=100;p[1]=100;p[2]=200;p[3]=100;p[4]=100;p[5]=500;p[6]=200;p[7]=500;
    markup.setQuadPoints(p);

我什么也得不到,但如果我为PDRectanlge设置LowerLeftX,LowerLeftY,UpperRightX,UpperRightY,我可以获得高位文本,但坐标不是我的预期。

有人可以向我解释这两个班级之间的区别吗?由于我在Quadpoints中已经有4个点,为什么我还要添加Rectangle的位置?这两个类有哪些关系?

谢谢!

1 个答案:

答案 0 :(得分:1)

List<PDAnnotation> annotations =document.getPage(pageNumber-1).getAnnotations();
PDAnnotationTextMarkup markup = new PDAnnotationTextMarkup(PDAnnotationTextMarkup.SUB_TYPE_HIGHLIGHT);
//set the page type can be A4,Letter,etc.
markup.setRectangle(PDRectangle.LETTER);
//set the 4 co-ordinates to quadpoints in the order (left,top,right,top,left,bottom,right,bottom)
quads[0] =  quadValues[0];
quads[1] =  pageLength-quadValues[1]+2.0f;
quads[2] =  quadValues[2];
quads[3] =  pageLength-quadValues[3]+2.0f;
quads[4] =  quadValues[4];
quads[5] =  pageLength-quadValues[5];
quads[6] =  quadValues[6];
quads[7] =  pageLength-quadValues[7];
markup.setQuadPoints(quads);