PDFPTable Itext arabic

时间:2014-11-15 14:42:12

标签: java itext

我编写了java代码,我希望在PdfPTable上显示阿拉伯语单词,这是为了创建PDF文档而编写的文档

附图“???”是阿拉伯语代码'

PdfPTable header = new PdfPTable(6);
PdfPTable tbame = new PdfPTable(1);
tbame.addCell("                                 >>>>>>     " + install.getCustId().getFullName() + "    <<<<<<");
tbame.setHorizontalAlignment(PdfPTable.ALIGN_CENTER);
tbame.setLockedWidth(false);
tbame.setExtendLastRow(false);
tbame.setWidthPercentage(100);
header.addCell("End");
header.addCell("Start");

1 个答案:

答案 0 :(得分:1)

请阅读文档,您会发现addCell(String content)方法不能用于添加阿拉伯语文本,原因有两个:

  1. 使用此方法时,将使用默认字体Helvetica。您需要使用知道如何绘制阿拉伯形状的字体。在这个问题的答案中解释了这一点:Itext Arabic Font coming as question marks
  2. 阿拉伯语是从右到左书写的,这意味着您需要更改单元格内容的运行方向,如我对此问题的回答中所述:RTL not working in pdf generation with itext 5.5 for Arabic text
  3. 代码段:

    BaseFont bf  = BaseFont.createFont("c:/WINDOWS/Fonts/arialuni.ttf",
        BaseFont.IDENTITY_H, BaseFont.EMBEDDED); 
    Font font = new Font(bf, 12);
    Phrase phrase = new Phrase(
        "\u0644\u0648\u0631\u0627\u0646\u0633 \u0627\u0644\u0639\u0631\u0628", font);
    PdfPCell cell = new PdfPCell(phrase);  
    cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
    table.addCell(cell);
    

    如果您无法访问字体arialuni.ttf,则必须找到包含阿拉伯字形的其他字体。