使用java itext或pdfbox在现有pdf中添加便笺

使用java itext或pdfbox在现有pdf中添加便笺,java,pdfbox,Java,Pdfbox,我正在尝试将便签添加到现有的pdf中。请在itext或pdfbox中提供任何建议 我尝试过使用pdfbox,但找不到任何解决方案。 请帮忙 这是我想要哪种类型的便笺的pdf示例:我找到了解决方案 根据PDF规范,“文本注释表示 “便签”附在PDF文档中的一个点上。因此,两者 类PDAnnotationTextMarkup或子类型SUB\u TYPE\u POLYGON 似乎符合您的要求。相反,您应该使用 PDAnnotationTextclass。另外,PDAnnotationTextMarku

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

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

这是我想要哪种类型的便笺的pdf示例:

我找到了解决方案

根据PDF规范,“文本注释表示 “便签”附在PDF文档中的一个点上。因此,两者 类
PDAnnotationTextMarkup
或子类型
SUB\u TYPE\u POLYGON
似乎符合您的要求。相反,您应该使用
PDAnnotationText
class。另外,
PDAnnotationTextMarkup
是 documented(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);

它可能对未来的开发人员有用:-)

您是否尝试了PDFBox源代码下载中的AddAnnotations.java示例?是,注释对我的用例没有用处,因为我想创建便笺,这样每个应用程序都可以打开它们…你能展示一个带有便笺的文档和可以打开这些便笺并访问它们的应用程序的示例吗?请检查我在问题中附加的URL:看起来你与Apache的某个人有联系PDFBox项目?如果你把回答你问题的人归功于他,那就太好了。当然这是@mklAha建议的。可能在某个邮件列表上,或者在另一个问题上@mkl是极少数对PDF标准有很好理解并拥有多个PDF SDK经验的人之一(这里也是关于堆栈溢出的)。