iText中的特殊字符

时间:2010-09-20 17:44:22

标签: pdf character-encoding itext symbols

我需要帮助使用这些符号⎕,∨,0,Ʌ等。但是当我使用iText创建PDF时,这些符号不会出现。

我该怎么做才能出现这些符号?

4 个答案:

答案 0 :(得分:8)

您必须使用包含这些字符的字体和编码。您最好的选择是使用IDENTITY_H作为编码,因为这可以授予您访问给定字体中每个字符的权限......但您仍然必须使用正确的字体。

有关字体的“iText in Action”章节中有几个字体操作示例: http://www.itextpdf.com/book/chapter.php?id=11

示例在右侧。购买这本书可能也会有所帮助。

答案 1 :(得分:2)

我也有同样的问题,我发现使用IDENTITY_H进行编码工作正常。 例如:

java.awt.Font f =...;
Font font = FontFactory.getFont(f.getName(),BaseFont.IDENTITY_H)

我不明白为什么使用BaseFont.WINANSI它不起作用。 Winansi是标准的Windows Cp1252字符集,是我的JVM使用的字符集。那么,如果char在Java中正确显示,为什么不是PDF的情况呢?

答案 2 :(得分:1)

您可以根据java语言规范中定义的unicode转义序列来转义它们。见http://java.sun.com/docs/books/jls/first_edition/html/3.doc.html

如果您使用IntelliJ IDEA作为代码,您可以下载StringManipulation插件,它可以帮助您解决问题。在IDEA的设置中,您还可以在文件编码下设置“透明的原生到ascii转换”复选框,这应该有助于实现这一目的。

答案 3 :(得分:0)

通过iText在pdf文件中加注:

BaseFont bf = BaseFont.createFont("c:/windows/fonts/arialbd.ttf", BaseFont.IDENTITY_H, BaseFont.EMBEDDED);
question.add(new Phrase("\u25A1", new Font(bf, 26)));

您可以看到pdf文件例如here