【发布时间】:2010-09-20 17:44:22
【问题描述】:
在使用这些符号⎕、∨、๐、Ʌ等方面我需要帮助。但是当我使用 iText 创建 PDF 时,这些符号不会出现。
我该怎么做才能让这些符号出现?
【问题讨论】:
标签: pdf character-encoding itext symbols
在使用这些符号⎕、∨、๐、Ʌ等方面我需要帮助。但是当我使用 iText 创建 PDF 时,这些符号不会出现。
我该怎么做才能让这些符号出现?
【问题讨论】:
标签: pdf character-encoding itext symbols
您必须使用包含这些字符的字体和编码。最好的办法是使用 IDENTITY_H 进行编码,因为这可以让您访问给定字体中的每个字符……但您仍然必须使用正确的字体。
在“iText in Action's”一章中关于字体的几个字体操作示例: http://www.itextpdf.com/book/chapter.php?id=11
示例在右侧。买这本书可能也会有所帮助。
【讨论】:
我也遇到了同样的问题,我发现使用 IDENTITY_H 进行编码工作正常。 例如:
java.awt.Font f =...;
Font font = FontFactory.getFont(f.getName(),BaseFont.IDENTITY_H)
我不明白为什么 BaseFont.WINANSI 不起作用。 Winansi 是我的 JVM 使用的标准 Windows Cp1252 字符集。那么,如果 char 在 Java 中正确显示,为什么 PDF 不是这样呢?
【讨论】:
您可以根据 java 语言规范中定义的 unicode 转义序列对它们进行转义。见http://java.sun.com/docs/books/jls/first_edition/html/3.doc.html
如果您的代码使用 IntelliJ IDEA,您可以下载 StringManipulation 插件,它会为您完成转义。在 IDEA 的设置中,您还可以在 File encodings 下设置“Transparent native-to-ascii conversion”复选框,这应该有助于解决问题。
【讨论】:
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
【讨论】: