gpt4 book ai didi

java - 哪个 PDF 生成 API (Java) 支持古吉拉特语字体?

转载 作者:搜寻专家 更新时间:2023-10-30 19:47:29 24 4
gpt4 key购买 nike

我已经尝试过 iText、PDFBox 和 Oracle Forms。在 iText 的情况下,我也成功生成了古吉拉特语 PDF 文档。但是,不幸的是,它没有以古吉拉特语 (UTF-8) 语言生成正确的字体。

我在 jdk 1.4 中有我的项目,它是强制使用的。因此,我需要支持古吉拉特语字体的旧版 API。

请建议是否有可用的选项。

示例代码:

public void GeneratePDFusingiText(String lStrGujaratidata)
{
try
{

BaseFont bf = BaseFont.createFont("C:\\Windows\\Fonts\\Shruti.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
Font font = new Font(bf, 12);
Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("D:/GeneratePDFusingiText.pdf"));
document.open();
document.add(new Paragraph(lStrGujaratidata, font));
document.close();
}
catch(Exception e)
{
System.out.println("Exception while generating PDF");
e.printStackTrace();
}
}

编辑 1:

可能图片没有显示。已上传here .

编辑 2:

image of font examples

第 1 步) 我输入古吉拉特语字符串 Google 音译。

第 2 步) 我使用 BableMap 软件将其转换为 unicode,以便使用 Resourse Bundle。

问题给我一个字符串:બિલાડી (Biladi)

它的 unicode 将是:\u0AAC \u0ABF\u0AB2\u0ABE\u0AA1\u0AC0

检查上面的粗体 Unicode 字符。那就是我遇到问题的地方。现在,如果我将此 unicode 更改为 \u0ABF\u0AAC\u0AB2\u0ABE\u0AA1\u0AC0 ,它会以 PDF 格式打印正确的输出。

同时它在 HTML 中打印错误的输出即:િબલાડી

我必须在它们之间进行管理。

我试过使用“gu”和“gu.UTF-8”和“UTF-8”。但是,每次我得到相同的输出。

最佳答案

更新的答案

在你的评论之后我意识到我错了,即变音字符应该出现在字节序列中的第二个,即使它应该呈现在主要字符的左边.

因此,事实证明,iText 不支持这种在印度字符集上的渲染。粗略地说,iText 使用 awt 的 Graphics2D 将非拉丁 unicode 字符逐一呈现为 PDF 中的图像。 (我猜这是因为适当的字体不一定安装在每个人的电脑上)。此功能不考虑这种特殊排序。

iText 确实支持阿拉伯语的类似行为,使用其他开发人员提供的类。参见 com.itextpdf.text.pdf.ArabicLigaturizer .也许您可以自己创建一个类似的? (!)

这看起来像以前出现过:

原始答案

金秋,

我相信 iText 正在显示正确的字符,但在将字符串转换为 unicode 点之前,输入的前 2 个字符已被“翻转”。因此,问题甚至在数据到达 iText 之前就发生了。

潜在的问题是“第一个”字符是一个“pre-base”字符,它是 Diacritic 的一种类型.它有点像欧洲文字中的“口音”,不能单独存在,其目的是为了美化另一个角色。在这种情况下,它会将“Ba”(બ) 变成“Bi”。

您会看到 Unicode 代码页,第一个字符 (િ) 确实是代码点\u0ABF,第二个 (બ) 是\u0AAC:http://en.wikipedia.org/wiki/Gujar%C4%81ti_script#Unicode

因此,在 Google Transliterate 和您的代码点表示之间的某个地方,这些字符被翻转了。所以,你需要回顾一下你是如何进行翻译的。

您是如何将这些字符转换为代码点的?

似乎有些口译员将“前基”放在主辅音之后,而不是之前:

  • 请注意,当您将这些字符粘贴到 (Linux) 终端时,前 2 个字符从后到前出现。我相信某事类似的事情也发生在你身上。
  • 您还会注意到,当您尝试在谷歌音译中编辑这个词,你不能把光标放在前 2 个字符,当您按退格键时,左侧右前字符被删除。

因此,如果您能弄清楚这种“翻转”发生的位置,那么希望您的解决方案能够 self 呈现。

希望对你有帮助

关于java - 哪个 PDF 生成 API (Java) 支持古吉拉特语字体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10499183/

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