iText表行从右到左的方向(阿拉伯语)

时间:2012-01-10 14:09:42

标签: itext

我的应用程序是用两种不同版本的英语和阿拉伯语开发的。 我在iText中使用rowspan和colspan创建了pdf表,它在英文版中完美运行,但在阿拉伯语版本中,rowspan无效。 当我使用setRunDirection(3)将阿拉伯语文本放入我的表时,setRowspan(2)无效。

请告诉我如何在这里设置rowspan值。

请帮我解决这个问题。

谢谢

这是表大小2列和rowspan 2的代码的一部分。

BaseFont base=BaseFont.createFont("C:/Windows/Font/arial.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
Font sourceFont= new Font(base, 9,Font.NORMAL,Color.RED);
PdfPTable tab1=new PdfPTable(2);
tab1.setRunDirection(3);//**(if you comment this line it will work)**
PdfPCell cells;
cells=new PdfPCell(new Paragraph("arabic text", sourceFont));
cells.setRowspan(2);
tab1.addCell(cells);
cells=new PdfPCell(new Paragraph("arabic text", sourceFont));
tab1.addCell(cells);
cells=new PdfPCell(new Paragraph("arabic text", sourceFont));
tab1.addCell(cells);

1 个答案:

答案 0 :(得分:0)

当我使用table.setRunDirection(PdfWriter.RUN_DIRECTION_RTL)时,RowSpan无法正常工作! 所以我删除这一行并添加:

PdfPCell title_cell= new PdfPCell(new Paragraph("متن عربی"));
title_cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);
table.addCell(title_cell);

我的表格有6列和5行。第一行中的右单元格为行跨5。 我的代码在这里:

PdfPTable table = new PdfPTable(new float[] {10,10,10,10,10,50});
table_mehr.setTotalWidth(PageSize.A4.getWidth()-30);
table_mehr.setLockedWidth(true);
table_mehr.getDefaultCell().setHorizontalAlignment(Element.ALIGN_CENTER);

            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            PdfPCell title_cell = new PdfPCell(new Paragraph("متن عربی"));
            title_cell.setRowspan(5);
            title_cell.setRunDirection(PdfWriter.RUN_DIRECTION_RTL);

            table.addCell(title_cell);
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            table.addCell("ali");
            doc.add(table);