2014-11-08 35 views
0

我在eclipse中的PDF文件中插入UNICODE字符时遇到了问题。 有一些解决方案,它对我来说效率不高。如何使用eclipse在pdf中创建波斯语内容

解决方案就是这样。

document.add(new Paragraph("Unicode: \u0418", new Font(bfComic, 12))); 

我想从数据库中检索数据,并将其展示给用户,我的角色是在阿拉伯文字,有时在波斯语脚本。

你建议什么解决方案?

感谢

回答

2

遇到不同的问题:

数据的编码:

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。这是在下面的屏幕截图做了三次:

enter image description here

第一行是错误的,因为字符是在错误的顺序。它们是从左到右书写的,而它们应该从右到左书写。这是当你这样做会发生什么:

document.add(name1); 

即使编码是正确的,你没有正确地呈现文本。

第二行也是错误的。现在的字符是正确的顺序,但没有连字是由:ل其次و应该合并成一个单一的字形:لو

只能通过添加内容到ColumnTextPdfPCell对象实现这一点,并通过将运行方向设置为PdfWriter.RUN_DIRECTION_RTL。例如:

pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 

现在文本将被正确渲染。

这在我的书的第11章中有解释。你可以在这里找到一个完整的例子:Ligatures2

+0

*但我认为这个对象是一个BaseFont对象,使用IDENTITY_H作为编码。* - 你是一个乐观主义者。 ;) – mkl 2014-11-09 08:05:38

+0

谢谢。这个解决方案非常好。 – starbug 2014-12-04 18:00:41

+0

@Bruno Lowagie:我已经在英文文本中创建了pdf,但是当我使用createfont类时,发生错误,说font.ttf由于许可限制而无法嵌入。我能解决这个错误吗? – starbug 2014-12-04 18:25:00

相关问题