我正在创建一个包含阿拉伯文和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();
答案 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)当有人回答你的问题时,你不会提供反馈。如果问题得到正确解决,您应该做正确的事情并接受答案!