It's difficult to tell what is being asked here. This question is ambiguous, vague, incomplete, overly broad, or rhetorical and cannot be reasonably answered in its current form. For help clarifying this question so that it can be reopened, visit the help center
                            
                        
                    
                
                                7年前关闭。
            
                    
我有一个文本编辑程序。它将创建的文档导出为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");,我仍然会得到一些乱码作为输出...

最佳答案

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

07-27 16:33