注释用pdfbox嵌入子集字体.第2部分

注释用pdfbox嵌入子集字体.第2部分,pdf,fonts,pdfbox,acrobat,Pdf,Fonts,Pdfbox,Acrobat,我正在创建一个单独的问题,源于。使用的代码几乎相同。原因是最初的问题是关于用pdfbox对字体进行子集设置,这是我处理过的。我还面临着另一个问题,那就是注释,以及AcrobatReaderDC如何解释注释中使用的字体 我尝试了不同的字体组合和嵌入选项,结果非常绝望。事实上,我有一种感觉,特别是解释PDF文件的程序处理这些事情的方式是非标准的。我想我在某个地方读到,注释和它们的显示方式是有意的,而不是PDF格式的标准化,以便让口译员自由地以自己的方式处理它们,因为注释的主要目的是与用户的交互。TL

我正在创建一个单独的问题,源于。使用的代码几乎相同。原因是最初的问题是关于用pdfbox对字体进行子集设置,这是我处理过的。我还面临着另一个问题,那就是注释,以及AcrobatReaderDC如何解释注释中使用的字体

我尝试了不同的字体组合和嵌入选项,结果非常绝望。事实上,我有一种感觉,特别是解释PDF文件的程序处理这些事情的方式是非标准的。我想我在某个地方读到,注释和它们的显示方式是有意的,而不是PDF格式的标准化,以便让口译员自由地以自己的方式处理它们,因为注释的主要目的是与用户的交互。TL;DR I无法理解为什么Acrobat Reader DC不喜欢我用PDFBOX创建和保存的注释。我甚至打开了友好和有用的Adobe用户社区论坛。但正如我所料,有人建议我与PDFBOX团队更好地调查这个问题

一切都是可能的,但我不想在PDFBOX邮件列表上写一个问题(顺便说一句,我永远不会习惯或理解邮件列表的有效使用),我想在这里提出一个问题,因为我希望它能帮助其他人更好地理解PDF格式

我基本上在Adobe论坛上重新表述了上述问题:这里是(Google Drive链接)和FreeText注释(但如果我改用邮票注释似乎没有什么区别),当Adobe Acrobat Reader DC(文件)版本21.001.20149.37945(我想这对应于4月16日的'21更新)打开时,它会导致问题。特别是当用户手动或自动打开“注释”窗格时,问题就会出现

手动:

自动:

在实验过程中,我还尝试取消设置“首选项->页面显示”中的“使用本地字体”选项。我的印象是,一旦不允许用可能的本地字体替换错误嵌入的字体,Acrobat Reader可能会更渴望显示错误消息。我不确定这是不是真的

我得到的错误是臭名昭著的“无法提取嵌入字体XXXXXX+SomeFontName”,如下图所示:

如果我使用完全字体嵌入(使用PDType0Font.load时,subsetting选项设置为false),同样的问题也会发生。我还尝试嵌入OpenSans字体而不是LiberationSans,还尝试使用FontForge手动将LiberationSans转换为具有较少字形的TTF字体,甚至尝试使用Windows ARIALN.TTF,认为可能是字体的问题。在Acrobat Reader DC中,所有这些都会导致相同的行为。我还尝试在文档上运行Acrobat Reader 2019 Pro Preflight,并在扫描文档的配置文件中查找可能的字体不一致,它不会报告任何错误

当然,当我使用例如PDType1Font.HELVETICA而不是自定义TTF字体时,我不会出现上述错误。但我不能使用它,因为它不包含我使用的Unicode字符的标志符号。有人有更好的主意吗

多谢各位

编辑:澄清一下-错误并不总是出现。它经常出现在某些机器上(例如,我使用Windows 7 64位,安装了最新的Acrobat Reader DC,以很好地复制它),而在我的Windows 10 64位,安装了相同版本的Acrobat Reader DC,它有时出现,有时不出现-我还不知道为什么或在什么情况下这让我想到——但不是——我也检查过了——我使用的字体在机器上打开的很好,问题一直存在。)

更新:我又绞尽脑汁,用ApacheOpenOffice创建了一个空白页面,导出为PDF,用AcrobatReaderDC(最新版本)打开,添加了一个FreeTextTypewriter注释(查看->工具->注释->打开),其中有4个希腊字母,为ArialArrow字体,保存了它,用AcrobatReaderDC重新打开了它,它给了我同样的错误(无法提取嵌入的字体…)。。这可能是读者的问题?但是他们让这很难诊断,但我不希望它在其他机器上显示错误。这是你开始相信魔法和祈祷的力量(以及良好睡眠)的时刻之一

更新日期:2021年4月30日 总之,我还没有找到解决方案,但我找到了三个用PDFBOX、OpenPDF(iText5 fork)和Acrobat Reader DC本身创建的文件(可以附加注释和保存,只需通过注释窗格添加一个简单的希腊文本框),当Acrobat Reader DC打开时,它们都会发出上述错误消息。我已经在Acrboat读者论坛上发布了详细信息(与评论中的链接相同)


我已经添加了用于创建OpenPDF示例文件的代码,示例3文件位于同一个存储库中

如果有一个发生在哪里的文件和一个没有发生在哪里的文件会很有趣。最好只有一个注释。下一步是在PDFDebugger中查看这两个工具。@tilmahausher:)感谢PDFDebugger的提示-从未听说过-也没有其他工具的主机。我在玩弄这些文件,似乎我在用showText输出的文本的编码上出了问题。我已经用AcrobatReader创建了一些注释,并保存了它们,现在正在检查它们。注释内容流的实际内容是通过一系列命令完成的,比如Tj,而我从showText的输出中看到的内容流就像(…一些方块)Tj。这并不意味着什么,在PDF中有几种方法可以完成相同的事情。内容流中的文本不一定要可读,我得到了一个w