如何使用eclipse在pdf中创建波斯语内容

我在eclipse中的PDF文件中插入UNICODE字符时遇到问题。 有一些解决方案,对我来说效率不高。

解决方案是这样的。

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

我想从数据库中检索数据并将其显示给用户,我的字符是阿拉伯语脚本,有时是Farsi脚本。

你建议什么解决方案?

谢谢

您遇到了不同的问题:

数据编码:

请下载我的书的第2章,然后转到标题为“短语对象:带领导的大块列表”的第2.2.2节。 在本节中,查找标题“数据库编码与JVM使用的默认CharSet”。

您将看到如下检索数据库值:

 String name1 = new String(rs.getBytes("given_name"), "UTF-8"); 

那是因为数据库包含带有特殊字符的不同名称。 如果您要检索这样的字段,您可能会将这些特殊字符显示为乱码:

 String name2 = rs.getString("given_name") 

字体编码:

您可以像这样创建字体:

 Font font = new Font(bfComic, 12); 

您没有显示如何创建bfComic ,但我假设此对象是使用IDENTITY_H作为编码的BaseFont对象。

从右到左书写/制作连字

虽然您的代码可以显示单个字符,但无法正确显示句子。

假设name1是名为“Lawrence of Arabia”的阿拉伯语版本,我们希望将此名称写入PDF。 在以下屏幕截图中完成了三次:

在此处输入图像描述

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

 document.add(name1); 

即使编码正确,您也会错误地渲染文本。

第二行也是错误的。 字符现在按正确顺序排列,但没有连字:ل后跟و应合并为一个字形:لو

您只能通过将内容添加到ColumnTextPdfPCell对象,并将运行方向设置为PdfWriter.RUN_DIRECTION_RTL来实现此目的。 例如:

 pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL); 

现在文本将正确呈现。

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