Java 如何使用PDFBox展平带批注的PDF

Java 如何使用PDFBox展平带批注的PDF,java,pdf,annotations,pdfbox,Java,Pdf,Annotations,Pdfbox,我已经用PDFBox创建了一些注释,我不希望其他读者编辑/更改注释 我试着用 PDAnnotation.setLocked(true); PDAnnotation.setReadOnly(true); PDAnnotation.setNoRotate(true); 修正了注释,效果完美 然而,当在浏览器中使用pdf阅读器(如Edge、Google Chrome)时,带有中文的多云多边形自由文本将消失 在AdobeAcrobatReaderDC中阅读 在谷歌浏览器中阅读 我知道有一个函数可以

我已经用PDFBox创建了一些注释,我不希望其他读者编辑/更改注释

我试着用

PDAnnotation.setLocked(true);
PDAnnotation.setReadOnly(true);
PDAnnotation.setNoRotate(true);
修正了注释,效果完美

然而,当在浏览器中使用pdf阅读器(如Edge、Google Chrome)时,带有中文的多云多边形自由文本将消失

在AdobeAcrobatReaderDC中阅读

在谷歌浏览器中阅读


我知道有一个函数可以在PDFBox中展平PDF,但它只展平acroform字段,不能展平批注。是否有任何方法确保所有注释都可以在任何阅读器中显示?

您使用的是什么PDFBox版本?由于2.0.16,通过调用
annotation.constructAppearancess()
,许多注释类型都支持创建外观流(当然支持cloudy,但我不确定中文文本)。扁平化不是解决方案,问题是缺少外观流。谢谢@TilmanHausherr,我正在使用PDFBox 2.0.16,并在阅读您的评论后尝试使用annotation.ConstructAppearancess()。得到一个异常“在这个字体中不可用Helvetica编码:WinAnScienceODing”,我认为这是中文单词的问题。在使用
注释.constructAppearancess()
后,现在可以显示云多边形,但我发现链接注释(PDF是从网站打印的)处于非活动状态,如果是链接注释,我必须查看PDF文件(有时看起来像链接,但这只是带下划线的文本)。关于中文文本,我快速查看了源代码,现在确实只有Helvetica:-(哦…对我们的用户来说,显示中文文本很重要:-)(,这是我的示例pdf&xfdf:。无论如何,谢谢@Tilmahausherr