如何使用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);
即使编码正确,您也会错误地渲染文本。
第二行也是错误的。 字符现在按正确顺序排列,但没有连字:ل后跟و应合并为一个字形:لو
您只能通过将内容添加到ColumnText
或PdfPCell
对象,并将运行方向设置为PdfWriter.RUN_DIRECTION_RTL
来实现此目的。 例如:
pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
现在文本将正确呈现。
这在我的书的第11章中有解释。 你可以在这里找到一个完整的例子: Ligatures2