嗨,我是 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的位置?这两个类有哪些关系?
谢谢!
答案 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);