iText阿拉伯语RTL字符没有形状

时间:2015-01-19 10:07:40

标签: itext arabic

我正在创建一个包含阿拉伯文和PDF的PDF文件。拉丁语混合数据。阿拉伯语不成形。我的代码就像Ligatures2示例:

PdfPTable table = new PdfPTable(1);                           
table.setWidthPercentage(100);                                
table.getDefaultCell().setBorder(0);                          
table.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);  
 ColumnText column = new ColumnText(writer.getDirectContent());         
 column.setSimpleColumn(0, 0, 1500, 1500);                       
column.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
 document.add(new Paragraph(line, font));                   
 column.go();                

1 个答案:

答案 0 :(得分:0)

我很抱歉不同意你,但你的代码与Ligatures2示例完全不同:

  • 您创建了一个PdfPTable对象,但您没有向其中添加任何内容。您不会将表格添加到文档中。
  • 您创建了一个ColumnText对象,但您没有向其中添加任何内容。执行go()时没有任何反应。

如果我们从您的代码段中删除所有未使用的行,那么剩下的就是:

document.add(new Paragraph(line, font)); 

正如您所引用的Ligatures2示例所附的书中所述,此代码不足以呈现阿拉伯语。

修复代码的一种方法是执行以下操作:

ColumnText column = new ColumnText(writer.getDirectContent());         
column.setSimpleColumn(36, 36, 559, 806);                       
column.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
document.addElement(new Paragraph(line, font));                   
column.go();

请注意,我在这里做出一个假设:我假设你的页面大小是A4。在您的代码中,您定义了列的矩形,如下所示:

column.setSimpleColumn(0, 0, 1500, 1500);

这是一个非常奇怪的大小。

<强>侧面说明:

请避免从示例中复制/粘贴代码,然后在不阅读示例附带的文档的情况下破坏这些示例。 我看到(1.)这个问题不是这种行为的第一个例子,(2)当有人回答你的问题时,你不会提供反馈。如果问题得到正确解决,您应该做正确的事情并接受答案