gpt4 book ai didi

java - 如何使用 Eclipse 在 pdf 中创建波斯语内容

转载 作者:行者123 更新时间:2023-12-02 05:17:16 25 4
gpt4 key购买 nike

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

解决办法是这样的。

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

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

您建议什么解决方案?

谢谢

最佳答案

您遇到不同的问题:

数据编码:

download chapter 2 of my book并转到标题为“Phrase 对象:带前导的 block 列表”的 2.2.2 节。在本节中,查找标题“数据库编码与 JVM 使用的默认字符集”。

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

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 UAE”的阿拉伯语版本,并且我们希望将此名称写入 PDF。在以下屏幕截图中,此操作已完成三次:

enter image description here

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

document.add(name1);

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

第二行也是错误的。现在,字符的顺序正确,但未进行连字: ä 后跟 œ 应该组合成单个字形: ª

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

pdfCell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);

现在文本将正确呈现。

这在我的书的第 11 章中有解释。您可以在这里找到完整的示例:Ligatures2

关于java - 如何使用 Eclipse 在 pdf 中创建波斯语内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26818555/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com