使用Java itext或pdfbox在现有的pdf中添加便签

时间:2020-02-24 10:41:53

标签: java pdfbox

我正在尝试将便笺添加到现有的pdf中。请使用itext或pdfbox提出任何建议。

我尝试使用pdfbox,但找不到任何解决方案。 请帮助...

这是我想要哪种类型的便签的样本pdf:http://www.pdfill.com/example/pdf_commenting_new.pdf

1 个答案:

答案 0 :(得分:2)

我找到了解决方法。

根据PDF规范,“文本注释代表 PDF文档中某个点的“便签”。因此, 类PDAnnotationTextMarkup或子类型SUB_TYPE_POLYGON 似乎符合您的要求。相反,您应该使用 PDAnnotationText类。顺便说一句,PDAnnotationTextMarkup是 文档(JavaDocs)是代表文本的抽象类 标记注释。虽然它实际上不是抽象的,但是 表征应明确表明它可能不起作用 事不宜迟。

所以我使用了下面的代码,它对我来说就像魔术一样

PDRectangle position = new PDRectangle();
position.setUpperRightX(textPosition.getX());
position.setUpperRightY(ph - textPosition.getY());

position.setLowerLeftX(textPosition.getX()-4);
position.setLowerLeftY(ph - textPosition.getY());
PDGamma colourBlue = new PDGamma();
colourBlue.setB(1);

PDAnnotationText text = new PDAnnotationText();
text.setContents(commentNameWithComments.get(word));
text.setRectangle(position);
text.setOpen(true);
text.setConstantOpacity(50f);

assert annotations != null;
annotations.add(text);
page1.setAnnotations(annotations);
replaceText(word);

这可能对将来的开发人员有用:-)