【问题标题】:Java PDFBOX text encodingJava PDFBOX 文本编码
【发布时间】:2011-03-15 00:31:39
【问题描述】:

我尝试将一些数据从我的 Java 应用程序导出到 pdf 文件。我决定使用 pdfBox 库,但我意识到我无法将希腊字符正确显示到 pdf 文件中。有没有办法设置编码?到 utf8 还是 iso-8859-7?我尝试了 PdFontEncoding 或 Encoding 之类的方法,但没有得到任何结果。

感谢您的宝贵时间。

【问题讨论】:

    标签: java pdf unicode character-encoding pdfbox


    【解决方案1】:

    您需要做两件事:

    • 设置编码,和
    • 提供带有希腊字符的字体

    大多数 PDF 阅读器拥有的内置字体(即 Adob​​e Reader、OS X Preview 等)只有 latin1 编码,不包括希腊字符。见http://libharu.sourceforge.net/fonts.html

    我的猜测是这里的问题不在于编码,而在于字体。您需要获取带有希腊字符的字体并将其嵌入到 PDF 文件中。确保您拥有嵌入字体的许可证!

    另见Using Java PDFBox library to write Russian PDF

    【讨论】:

    • 谢谢你的回答,我下载带有希腊字符的字体也从 Windows 字体复制,例如 verdana,我尝试了代码PDFont font = PDTrueTypeFont.loadTTF(doc, "verdana.ttf");,但结果是一样的,而且我收到了错误消息当我打开 pdf 文件时 font verdana contains bad /widths 您还说在第一步 设置编码 ,我该怎么做?
    • 该错误消息已被报告为 PDFBox 1.4.0 版中的一个错误(请参阅issues.apache.org/jira/browse/PDFBOX-954)——也许 1.3.0 对您有用?
    • 关于如何设置编码的问题,我不知道——我觉得PDFBox文档在这方面有点欠缺!
    • 最后一个版本是 1.5,我尝试 1.4 1.3(我使用 pdfbox-app-{version}.jar 文件)但我得到了同样的错误,但主要问题是编码。你能建议我另一个我可以使用的 pdf 库吗?如果我决定使用 itext,我必须获得商业许可证吗?因为我的最终申请是向客户销售。再次感谢您!
    • 您可能或可能不需要获得 iText 的商业许可,我知道的还不够多,无法告诉您。如果我什至提出答案,我也会把自己置于危险之中......不幸的是,这是一个最好由律师回答的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-12
    • 2010-11-20
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多