Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PDFdictionary和unicode(和Java)_Java_Pdf_Unicode_Itext - Fatal编程技术网

PDFdictionary和unicode(和Java)

PDFdictionary和unicode(和Java),java,pdf,unicode,itext,Java,Pdf,Unicode,Itext,我有一个文本编辑程序。它将创建的文档导出为PDF 它还将一系列字符串保存到PDFDictionary中,使其能够重新打开创建的文档 对于PDF和我的程序中的字体,我使用BookAntiqua,从我的Win7系统中提取.ttf。它可以显示软管字体没有任何问题 然而,我有一个问题。我的用户将使用的常用字符是šđčččŽ和ĐčĆŽ 当我第一次在程序中输入它们时,它们会正确显示。当我将其保存为PDF并用Adobe Reader打开时,它们会正确显示。但是,当我将该PDF加载回我的程序时,它们显示为⎕ 或

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

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

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

然而,我有一个问题。我的用户将使用的常用字符是šđčččŽ和ĐčĆŽ

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

我想问题在于我填充PDFDictionary的方式。我试着做一些类似于
string.replace(“Ž”,“u017D”)
字符串。替换(“Đ”、“\u017D”),但没有帮助。
打开eclipse中的PDF,我注意到没有像这样保存“Ž”:/u0017D“它仍然像“Ž”一样保存,而且其他一些有问题的字母丢失了(在PDFDictionary中,所有这些)

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

编辑:所有PDF处理都使用iText完成

代码:

保存时:

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

dictionary.put(index, object);
打开(加载)时:


如果将一行更改为:
PDFobject=newpdfstring(“đđčžđČĆŽ”,“UTF-8”),我仍然得到一些随机乱码作为输出…

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

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

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

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

iText有自己的编码。还有一种字体必须能够显示字符。iText可以使用PDF自己的字体之一,也可以使用嵌入式字体(这会随着使用的子集增加PDF的大小)

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

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

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

iText有自己的编码。还有一种字体必须能够显示字符。iText可以使用PDF自己的字体之一,也可以使用嵌入式字体(这会随着使用的子集增加PDF的大小)



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

什么是PDFDictionary?如果不理解你的意思,我认为不可能做出解释。这是你的一个类还是一个库?它是一个PDF对象,是PDF的一部分。那么,当你执行“dictionary.get(index)”时,你会得到什么确切的字符数组呢?与中一样,如果通过将字符串
“\u017D”
保存到PDF文件中,然后再次从字典中加载它来对其进行往返,是否会返回一个字符串,其中唯一的字符是您输入的字符?或者,换一种说法,您需要先查看保存和加载的代码点,然后找出它们呈现错误的原因。什么是PDFDictionary?如果不理解你的意思,我认为不可能做出解释。这是你的一个类还是一个库?它是一个PDF对象,是PDF的一部分。那么,当你执行“dictionary.get(index)”时,你会得到什么确切的字符数组呢?与中一样,如果通过将字符串
“\u017D”
保存到PDF文件中,然后再次从字典中加载它来对其进行往返,是否会返回一个字符串,其中唯一的字符是您输入的字符?或者,换一种说法,您需要先查看您正在保存和加载的代码点,然后找出它们呈现错误的原因。我该怎么做?你能告诉我使用哪些方法或类(或者需要什么)吗?最好开始阅读Unicode。我不知道你是怎么创建PDF的。如果您使用的是XSL-FO或iText,您应该能够做到这一点。它们都支持Unicode。我用iText创建了它。。。我可以将其保存为UTF-8,但它没有帮助,尽管它会稍微更改输出(一些随机字符)…我编辑了这个问题。你的技术不起作用,你能在我的伪代码中应用其他可能起作用的东西吗?这不是我的技术;这就是编码的方式。你做得不对。我该怎么做?你能告诉我使用哪些方法或类(或者需要什么)吗?最好开始阅读Unicode。我不知道你是怎么创建PDF的。如果您使用的是XSL-FO或iText,您应该能够做到这一点。它们都支持Unicode。我用iText创建了它。。。我可以将其保存为UTF-8,但它没有帮助,尽管它会稍微更改输出(一些随机字符)…我编辑了这个问题。你的技术不起作用,你能在我的伪代码中应用其他可能起作用的东西吗?这不是我的技术;这就是编码的方式。你做得不对+1对于IDE的解释,我没有告诉他(忘记了)。它在
PdfString(“šđčćžĐĆŽ”)!!!
PDFName index = new PdfName("1");
PDFObject line = dictionary.get(index);
String string = line.toString();

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