gpt4 book ai didi

java - iText 和阿拉伯语 pdf 偶尔会丢失字符

转载 作者:行者123 更新时间:2023-12-02 05:04:00 26 4
gpt4 key购买 nike

我正在尝试使用 iText 4.2.1 生成阿拉伯语 pdf 文档。这些文档基于以 Word xml 格式提供的模板。我就快到了,但遇到了障碍。

源文档使用简体阿拉伯字体并且显示良好,所以我在PDF中使用了相同的字体。大多数情况下一切都很好,但有时它会“丢失”一个字符。

我追踪了 iText 源代码,可以看到它根据整形规则从 0x06xx 基本代码转换到 0xFExx 表示代码的位置。一旦它转换为表示代码,它就会在写入文档输出流之前依次从字体文件中查找每个字符的规范。正是在这里,有时无法在字体中找到所需的表示代码,因此只需将字符全部省略即可。

例如,使用 charMap 表中的这一行将字符 0x0645 转换为 0xFEE2

    {0x0645, 0xFEE1, 0xFEE2, 0xFEE3, 0xFEE4}, /* MEEM */

...并且 0xFEE2 不是简体阿拉伯字体。

鉴于文档在使用相同字体的 Word 中显示良好,iText 是否应该恢复使用基本代码 0x6xx 进行演示?如果是这样,这个问题是否在库的商业版本中得到解决(如果需要,我很乐意为此付费)。

或者,这是其他库必须解决的字体问题

还有其他人遇到过这个障碍或类似的问题吗?如果有,您采取了什么措施来解决它?

最佳答案

阿拉伯语在 0x6xx 范围内有逻辑文本表示,在其他两个范围内有视觉表示:FB50 — FDFF 阿拉伯语演示形式-AFE70 — FEFF 阿拉伯语演示形式-B

必须使用表示范围,因为对于每个字符,根据单词位置,您可能有四种表示形式:词首、词中、词尾和孤立。其他连字也是可能的。

抛开使用强大的旧 iText 版本不谈,如果字符不在字体中,则无法表示。如果字体缺少字符,Word 将使用其他字体,或者可能使用替代字符。尝试使用 Arial 确保连字正确。

关于java - iText 和阿拉伯语 pdf 偶尔会丢失字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27964018/

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