iText在pdf中

时间:2016-06-16 13:43:31

标签: pdf unicode fonts phantomjs itext

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

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

图表中的突出显示字符(融合图表)是使用PhantomJS生成的,并作为png图像嵌入pdf中。下表中的字符具有与图形中使用的字体相同的“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字符,生成的表格中反映的字体仍然与我最初使用的字体有很大不同。

1 个答案:

答案 0 :(得分:3)

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

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

目前支持梵文,泰米尔语和阿拉伯语。将根据付费客户的要求添加对其他书写系统的支持。