pdf - iText 在 pdf 中变形/拼写错误的 Unicode 字符

标签 pdf unicode fonts phantomjs itext

我正在尝试使用基本上包含 Unicode 字符的 iText v2.1.5 生成 pdf,Ariel 是用于相同的字体。现在的问题是某些字符(如“印地语”和“古吉拉特语”字符)在正确生成时遇到了问题。请查看下面的屏幕截图以更好地了解问题。

图表和表格中突出显示的字体使用相同的字体,但表格中的字体不适合印地语和古吉尔语字符。

Graph(融合图表)中突出显示的字符是使用 PhantomJS 生成的,并作为 png 图像嵌入到 pdf 中。下表中的字符与 Graph 中使用的字符具有相同的“Arial_Unicode_MS.ttf”字体(在 linux 机器中位于/usr/share/fonts/truetype/Arial_Unicode_MS.ttf),但该表是生成的使用 iText,我无法弄清楚为什么会导致这种意外行为。

我试过调试 phantomJS,我可以保证它使用与上面提到的相同的字体文件。请引用我在 iText 中的以下代码:

String formattedData="જિજ્ઞેશ";
BaseFont nationalBase = BaseFont.createFont("/usr/share/fonts/truetype/Arial_Unicode_MS.ttf", BaseFont.COURIER, BaseFont.NOT_EMBEDDED);
PdfPCell dataCell= new PdfPCell(new Phrase(8, new Chunk(formattedData, dataFont)));

为了检查问题是否是因为 iText,我尝试直接在 formattedData="જિજ્ઞેશ"中使用 Unicode 字符,但生成的表格中反射(reflect)的字体仍然与我最初使用的有很大不同。

最佳答案

正如之前多次解释的那样,iText 5 不支持印地语。我们在 iText 7 中修复了此问题,并在印度发布了该版本的 Great Indian Developer Summit .

iText 7 有一个特殊的附加组件,名为 pdfCalligraph只要您插入此附加组件,Devaganari 和泰米尔语就会正确呈现。请阅读Chapter 2 of "iText 7: Building Blocks" (请滚动至本章末尾)了解 pdfCalligraph 插件的工作原理。您可以获得 pdfCalligraph 的免费试用版 here .

目前支持天城文、泰米尔语和阿拉伯语。将应付费客户的要求添加对其他书写系统的支持。

关于pdf - iText 在 pdf 中变形/拼写错误的 Unicode 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37861083/

相关文章:

angular - 如何将查询字符串转换为希伯来字母

javascript - 从数组创建 pdf Blob 并查看它

c++ - 如何将 unicode 点 U+10000 编码为 char16_t 字符串文字?

iphone - 如何在 iPhone 中使用水平滑动逐页显示 PDF?

c - 从命令行传递参数时 *argv[] 中的字符大小

css - Google 字体中的数字显示不同

java - Swing 不显示 unicode 字符

css - Glyphycon 中的一些图标在 Firefox 中显示为 "📅"

pdf - 使用ByteArrayOutputStream使用iText将水印添加到pdf

google-app-engine - 谷歌应用引擎 PDF 转换器