2

我有一个文本编辑程序。它将创建的文档导出为 PDF。

它还将一系列字符串保存到 PDFDictionary 中,使其能够重新打开它创建的文档。

对于 PDF 和我的程序中的字体,我使用 BookAntiqua,从我的 Win7 系统中提取 .ttf。它可以毫无问题地显示软管字体。

但是,我有一个问题。我的用户将使用的字符通常是 šđčćž 和 ŠĐČĆŽ。

当我第一次在我的程序中输入它们时,它们会正确显示。当我将其保存为 PDF 并使用 Adob​​e Reader 打开时,它们会正确显示。但是,当我将该 PDF 加载回我的程序时,它们要么显示为⎕,要么根本不显示。

我想问题出在我填充 PDFDictionary 的方式上。我试图做类似string.replace("Ž", "/u017D");and的事情string.replace("Đ", "\u017D");,但没有帮助。从eclipse打开我的PDF,我注意到不是像这样保存“Ž”:“/u0017D”它仍然像“Ž”一样保存,并且缺少一些其他有问题的字母(在PDFDictionary中,所有这些)。

我想知道的是如何将例如字符“Ž”打印到PDFDictionary 中,这样一旦我的程序读取就会在例如JTextArea 中显示为字符“Ž”。

编辑:所有 PDF 处理都是用 iText 完成的!

代码:

保存时:

PDFobject = new PdfString("šđčćž ŠĐČĆŽ");
PDFName index =  new PdfName("1");

dictionary.put(index, object);

打开(加载)时:

PDFName index = new PdfName("1");
PDFObject line = dictionary.get(index);
String string = line.toString();

JTextArea abc= new JTextArea();
abc.setText(string);

如果将一行更改为:PDFobject = new PdfString("šđčćž ŠĐČĆŽ", "UTF-8");,我仍然会得到一些随机的乱码作为输出......

4

2 回答 2

2

您需要正确编码您的字符。 Unicode是 Java 和 PDF 共享的标准。我建议将您的文本显式编码为 UTF-8,以便两者都能处理。

于 2012-09-22T13:41:20.317 回答
2

(IDE) 编辑器使用编码,Java 编译器使用编码。两者都必须设置为相同的编码。我使用 UTF-8 来提供国际支持。然后编译的 java (.class, .jar) 在内部使用 Unicode。

确保正确编码的另一种方法是使用 Unicode 转义符,例如\u017D.

iText 有自己的编码。然后是必须能够显示字符的字体。iText 可以使用 PDF 自己的字体之一,或嵌入的字体(使用子集增加 PDF 的大小)。

没有答案,但我认为您需要查看iText API、DocumentFont,charExists例如,使用字符编码createFont等。

于 2012-09-22T14:28:43.813 回答