在此处附加(推荐)或链接到 PDF 文件:
EMG8 -Cambridge Essentail Gold Maths 8-B 117.pdf
配置:
重现问题的步骤:
什么是预期行为? (添加截图)
在任何其他 PDF 阅读器上它呈现良好:
链接到查看器(如果托管在 mozilla.github.io/pdf.js 以外的网站上或作为 Firefox/Chrome 扩展):
当前 github 页面查看器: https :
笔记:
我们设法通过编辑 PDF 中的字体使其工作。 它目前是“Times New Roman PS”,只用“Times New Roman”重新渲染它似乎可以解决它。
没有控制台错误,也没有任何其他可见的解决方案迹象,例如缺少 CMap。
不幸的是,我们不允许更改 PDF,因此重新渲染每个 PDF 并不是一个可行的解决方案。
如果有人能对此有任何见解和可能的解决方案,那将不胜感激🤠
PDF 多次定义相同的字体。 例如,字体LULQLP+TimesLTStd-Roman
定义了九次。 每一个都引用相同的 FontDescriptor 和相同的嵌入 CFF 数据流。
在 core/evaluator.js 中的PartialEvaluator.prototype.preEvaluateFont()
中有一个字体哈希计算。 它在哈希中添加了 Encoding、ToUnicode 和 Widths 条目。 PDF 中的某些字体获得相同的哈希码,因为所有提到的条目都是相同的,甚至宽度也是如此。 只有条目 FirstChar 和 LastChar 不同。 如果字体获得相同的哈希码,是否会导致跳过某个字体以使其不会转换为 OpenType?
这是一个简化的 PDF,其中包含原始 PDF 中的两种字体
issue10665_reduced.pdf
在 core/evaluator.js 中的
PartialEvaluator.prototype.preEvaluateFont()
中有一个字体哈希计算。 它在哈希中添加了 Encoding、ToUnicode 和 Widths 条目。 PDF 中的某些字体获得相同的哈希码,因为所有提到的条目都是相同的,甚至宽度也是如此。 只有条目 FirstChar 和 LastChar 不同。
非常好的分析,谢谢; 这使错误易于修复!
如果字体获得相同的哈希码,是否会导致跳过某个字体以使其不会转换为 OpenType?
在一些生成不良的 PDF 文件中,可能会有大量相同的字体,而preEvaluateFont
目的只是为了避免加载/解析重复的字体。 因此loadFont
将比较hash
es,如果可能,使用已经加载/解析的字体。
显然,这一切都取决于这样一个事实,即hash
实际上是正确/唯一的,但幸运的是,多年来该代码中的错误相对较少。
这太棒了,非常感谢您的帮助!
最有用的评论
PDF 多次定义相同的字体。 例如,字体
LULQLP+TimesLTStd-Roman
定义了九次。 每一个都引用相同的 FontDescriptor 和相同的嵌入 CFF 数据流。在 core/evaluator.js 中的
PartialEvaluator.prototype.preEvaluateFont()
中有一个字体哈希计算。 它在哈希中添加了 Encoding、ToUnicode 和 Widths 条目。 PDF 中的某些字体获得相同的哈希码,因为所有提到的条目都是相同的,甚至宽度也是如此。 只有条目 FirstChar 和 LastChar 不同。 如果字体获得相同的哈希码,是否会导致跳过某个字体以使其不会转换为 OpenType?这是一个简化的 PDF,其中包含原始 PDF 中的两种字体
issue10665_reduced.pdf