我正在尝试在 Java Web 应用程序中使用 iText(5.4.0 版)创建 pdf 文档,但遇到了字体问题。
Web 应用程序是多语言的,因此用户可以使用各种语言(例如英语、法语、立陶宛语、中文、日语、阿拉伯语等)将信息保存到系统中。
当我尝试配置 pdf 以输出一些示例日文文本时,它没有显示出来,所以我开始按照官方“iText in Action”书中的示例进行操作。我遇到的问题是,当我尝试使用 BaseFont.IDENTITY_H 编码配置字体时,出现以下错误:
java.nio.charset.UnsupportedCharsetException: Identity-H
at java.nio.charset.Charset.forName(Charset.java:505)
at com.itextpdf.text.pdf.PdfEncodings.convertToBytes(PdfEncodings.java:186)
at com.itextpdf.text.pdf.Type1Font.<init>(Type1Font.java:276)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:692)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:615)
at com.itextpdf.text.pdf.BaseFont.createFont(BaseFont.java:450)
书中或谷歌搜索均未提及此问题。
关于我可能遗漏的内容有什么建议吗?
最佳答案
正如您从两位 Michael 的回答中了解到的那样,您错误地假设标准 Type 1 字体 Times Roman 和 IDENTITY_H
是兼容的。如果要使用 IDENTITY_H
,则必须更改字体;如果要使用标准 Type 1 字体,则必须更改编码(在这种情况下使用 BaseFont.EMBEDDED
没有意义,因为从不嵌入标准 Type 1 字体)。如果我没有在我的书中提到这一点,我很抱歉。我认为这有点微不足道。可以从我写的关于复合字体的文章中推导出来。
关于java - itext 字体 UnsupportedCharsetException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572273/