PDFBox PDTrueTypeFont 错误/宽度错误的解决方法?

发布于 2024-10-31 02:58:33 字数 516 浏览 0 评论 0原文

我正在使用 Java 中的 Apache PDFBox 库生成 pdf。我已在 pdf 中嵌入了字体,但每当我打开 pdf 时,都会收到一条错误消息:

“字体 font_name 包含错误的/宽度”

无论嵌入的字体是什么,都会出现此错误,但在该错误上单击“确定”后,字体和 pdf 仍会正确显示。然而,对于生产代码来说,即使正确渲染了 pdf,在生成的每个 pdf 上弹出此警告也是不可接受的。

有没有解决方法可以避免弹出错误?

作为参考,这里是相关的 bug (这是版本 1.4,我会喜欢继续使用而不是回到 1.3)

这是用于嵌入字体的代码:

font = PDTrueTypeFont.loadTTF( doc, new File( "VERDANA.ttf" ));

I'm generating a pdf using the Apache PDFBox library in Java. I've embedded a font in the pdf, but whenever I open the pdf I get an error that says:

"The font font_name contains bad /Widths"

This error occurs no matter what the font is that is embedded, but the font and the pdf are still displayed correctly after you hit "OK" on that error. However, for production code it is unacceptable to have this warning pop up on every pdf that is generated even if the pdf is correctly rendered.

Is there a workaround for this so that I can avoid the error popping up?

For reference here is the related bug (this is in version 1.4, which I would like to continue using rather than going back to 1.3)

And here is the code used to embed the font:

font = PDTrueTypeFont.loadTTF( doc, new File( "VERDANA.ttf" ));

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

两个我 2024-11-07 02:58:34

此问题已于 2012 年 7 月得到解决,包含修复程序的第一个版本是 1.7.1。

详情参见。 Apache Jira 中的问题 PDFBOX-954

This issue has been resolved in July 2012 and the first version containing the fix is 1.7.1.

For details cf. the issue PDFBOX-954 in the Apache Jira.

伏妖词 2024-11-07 02:58:33

仅使用 PDType1Font.FONT 可以正常工作,直到您需要将 true type 字体“嵌入到 pdf 文档中(许多出版商需要),这是通过像 OP 一样从 ttf 文件加载它来完成的。

虽然嵌入变得必要,但可能的解决方法可能是,

font = PDTrueTypeFont.loadTTF( doc, new File( "helveltica.ttf" ));
font.setWidths(PDType1Font.HELVETICA.getWidths());

在下一版本的 pdfbox 中寻找永久解决此问题的方法! :)

only using PDType1Font.FONT works fine until you have a need for 'embedding true type fonts' into pdf document (which many publishers require), which is done by loading it from ttf file as OP did.

whilst embedding becomes necessary probable workaround could be,

font = PDTrueTypeFont.loadTTF( doc, new File( "helveltica.ttf" ));
font.setWidths(PDType1Font.HELVETICA.getWidths());

looking fwd to a permanent fix to this issues in next ver of pdfbox! :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文