【发布时间】:2012-09-22 13:30:36
【问题描述】:
我有一个文本编辑程序。它将创建的文档导出为 PDF。
它还将一系列字符串保存到 PDFDictionary 中,使其能够重新打开它创建的文档。
对于 PDF 以及我的程序中的字体,我使用 BookAntiqua,从我的 Win7 系统中提取 .ttf。它可以毫无问题地显示软管字体。
但是,我有一个问题。我的用户将使用的字符通常是šđčćž 和 ŠĐČĆŽ。
当我第一次在我的程序中输入它们时,它们会正确显示。当我将其保存为 PDF 并使用 Adobe Reader 打开时,它们会正确显示。但是,当我将该 PDF 重新加载到我的程序中时,它们要么显示为 ⎕,要么根本不显示。
我想问题出在我填充 PDFDictionary 的方式上。我试图做类似string.replace("Ž", "/u017D"); 和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");,我仍然会得到一些随机的乱码作为输出...
【问题讨论】:
-
什么是 PDF 词典?如果不理解您的意思,我认为不可能做出解释。那是你的班级还是图书馆?
-
它是一个 PDF 对象,是 PDF 的一部分。
-
那么,当您执行“dictionary.get(index)”时,您得到了哪些确切的字符数组?例如,如果您通过将字符串
"\u017D"保存到 PDF 文件然后从字典中再次加载它来往返传输,您是否会返回一个单字符串,其中唯一的字符是您输入的那个?或者,换一种说法,您需要先查看要保存和加载的代码点,然后找出它们呈现错误的原因。