我在eclipse中的PDF文件中插入UNICODE字符时遇到了问题。 有一些解决方案,它对我来说效率不高。如何使用eclipse在pdf中创建波斯语内容
解决方案就是这样。
document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12)));
我想从数据库中检索数据,并将其展示给用户,我的角色是在阿拉伯文字,有时在波斯语脚本。
你建议什么解决方案?
感谢
我在eclipse中的PDF文件中插入UNICODE字符时遇到了问题。 有一些解决方案,它对我来说效率不高。如何使用eclipse在pdf中创建波斯语内容
解决方案就是这样。
document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12)));
我想从数据库中检索数据,并将其展示给用户,我的角色是在阿拉伯文字,有时在波斯语脚本。
你建议什么解决方案?
感谢
遇到不同的问题:
数据的编码:
请download chapter 2 of my book并转到题为“第2.2.2节中的语句对象:大块的用List领导”。在本节中,查找标题“数据库编码与JVM使用的默认CharSet”。
你会看到数据库值这样的检索:
String name1 = new String(rs.getBytes("given_name"), "UTF-8");
这是因为数据库中包含特殊字符不同的名称。你的风险,这些特殊字符显示为乱码,如果你将检索这样的领域:
创建您的字体像这样:
Font font = new Font(bfComic, 12);
String name2 = rs.getString("given_name")
字体的编码
您不显示如何创建bfComic
,但我认为此对象是使用IDENTITY_H
作为编码的BaseFont
对象。
由右至左/制作写作结扎线
虽然你的代码将工作,以显示单个字符,它不会工作,以显示正确的句子。
假设name1
是名称为“阿拉伯的劳伦斯”的阿拉伯语版本,我们希望将该名称写入PDF。这是在下面的屏幕截图做了三次:
第一行是错误的,因为字符是在错误的顺序。它们是从左到右书写的,而它们应该从右到左书写。这是当你这样做会发生什么:
document.add(name1);
即使编码是正确的,你没有正确地呈现文本。
第二行也是错误的。现在的字符是正确的顺序,但没有连字是由:ل其次و应该合并成一个单一的字形:لو
只能通过添加内容到ColumnText
或PdfPCell
对象实现这一点,并通过将运行方向设置为PdfWriter.RUN_DIRECTION_RTL
。例如:
pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
现在文本将被正确渲染。
这在我的书的第11章中有解释。你可以在这里找到一个完整的例子:Ligatures2
*但我认为这个对象是一个BaseFont对象,使用IDENTITY_H作为编码。* - 你是一个乐观主义者。 ;) – mkl 2014-11-09 08:05:38
谢谢。这个解决方案非常好。 – starbug 2014-12-04 18:00:41
@Bruno Lowagie:我已经在英文文本中创建了pdf,但是当我使用createfont类时,发生错误,说font.ttf由于许可限制而无法嵌入。我能解决这个错误吗? – starbug 2014-12-04 18:25:00