iText、Unicode字符和Java

7
我有一个文本编辑程序,它将输出保存到PDF文件中。
它也将所有文本保存到PDF字典中,可以从中再次读取。问题是,在我的母语中,如č、ć、đ、ž、š等字符非常普遍...
当我在程序的GUI中写入这些字符时,一切正常,它们全部显示出来(我目前使用java的arial字体)。
但是,当我保存并在AdobeReader中打开PDF文件时,č和ć就消失了,而đ、ž和š则按照应该的方式打印出来。我使用的是自定义(TrueType)字体(BookAntiqua,从此处下载)。
这是编码问题还是字体本身的问题(即它不支持đ、ž、š字符)?
另外,当我再次将PDF加载到程序中时,丢失的字母仍然丢失,而đ、ž、š则被交换为⎕符号或类似物...这是PDF编写方式的问题,还是还有其他问题?
总之,我希望这五个字符在程序的GUI和PDF文档中都能看到,并且能够正确地从PDF词典中检索出来。
1个回答

3
我遇到了同样的问题。我通过更改支持这些字母的字体来解决问题,忘记了名字,也许是Arial Unicode? - 需要尝试哪种字体 - 然后我将该字体嵌入PDF中。那就完美了。我的名字有一些奇怪的字符 :)
编辑: 这里有一个示例在这里,说明如何做到这一点,并为字段设置它,在这里另外还有一个代码片段,可能会有所帮助。

我知道如何将字体嵌入PDF,这不是问题,问题似乎在于我使用的字体...我已经寻找了一段时间...你能推荐任何类似于BookAntiqua或TimesNewRoman的字体,并支持Unicode字符吗? - Ivan Karlovic
@IvanKarlovic 不好意思,我忘记那个字体的名字了,那是6年前的事情了。如果你将字体更改为正确的字体并嵌入到PDF中,问题就会得到解决,但你需要在谷歌上搜索一下。这里有一个列表http://en.wikipedia.org/wiki/Unicode_font - user529543
我找到了字体,它确实有帮助,但并没有解决我的问题。从PDF中读取的文本仍然无法打印这些字符。我甚至尝试了这个:public static String unicodize(String string) { string.replace("Ć", "/u0106"); string.replace("ć", "/u0107"); string.replace("Č", "/u010C"); string.replace("č", "/u010D"); string.replace("Đ", "/u0110"); string.replace("đ", "/u0111"); string.replace("Š", "/u0160"); string.replace("š", "/u0161"); string.replace("Ž", "/u017D"); string.replace("ž", "/u017E"); return string; } - Ivan Karlovic
也许“Ć”、“\u0106”可以解决问题? :) '/u'与'\u',在公共静态字符串unicodize函数中反转斜杠。 - user529543

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接