使用PDFBox和Swing显示嵌入式字体的java
我使用PDFBox在JInternalFrame中显示PDF文件。打开PDF时,我会收到很多这样的警告:
Changing font on <m> from <Tahoma Negrita> to the default font
我知道所报告的字体不是标准的14种字体的一部分。所以我决定检查这些字体是否嵌入到PDF文件中(认为加载嵌入字体应该不会有问题,对吧?)
因此,我在不同的阅读器上打开文件并检查属性/字体。我怀疑本节是否报告了文档所需的字体或文档中实际嵌入的字体
我得到的资料如下:
BAAAA+Tahoma-Bold (embedded Subset), type:TrueType, Encoding:
CAAAA+Tahoma (Embedded Subset), type:TrueType, Encoding:
对此感到困惑的是,我研究了如何从OpenOffice嵌入字体,发现应该选中PDF/A-1a选项。因此,我使用这个选项制作了另一个PDF(以防在制作原始PDF文件时没有使用),但我得到了相同的结果
我希望您的指导能够理解这是如何工作的。我希望能够像PDF阅读器一样打开PDF文件。我还阅读了关于PDFBox_外部_字体的文章。属性,但我猜这个文件不应该被修改,因为我处理的是嵌入式字体
谢谢
# 1 楼答案
pdfbox无法分析TrueType字体的嵌入子集
据我所知,嵌入式TrueType子集缺少pdfbox所需字体文件的一些元数据
该漏洞是已知的,但不容易解决。现在我只能建议尽可能使用嵌入式Type 1字体,pdfbox可以处理这些字体
您还可以尝试在pdfbox中设置完整字体文件的路径。org/apache/pdfbox/resources/pdfbox_External_字体下的jar。属性,因此如果pdfbox无法解析子集,至少它可以找到原始字体文件的完整路径。也许可以,但我还没有测试过
祝你好运