我有一个文本编辑程序。它将创建的文档导出为 PDF。
它还将一系列字符串保存到 PDFDictionary 中,使其能够重新打开它创建的文档。
对于 PDF 和我的程序中的字体,我使用 BookAntiqua,从我的 Win7 系统中提取 .ttf。它可以毫无问题地显示软管字体。
但是,我有一个问题。我的用户将使用的字符通常是 šđčćž 和 ŠĐČĆŽ。
当我第一次在我的程序中输入它们时,它们会正确显示。当我将其保存为 PDF 并使用 Adobe 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");
,我仍然会得到一些随机的乱码作为输出......