用于从右到左方向的 iText 表格行跨度(阿拉伯语)

标签 itext

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

请告诉我如何在此处设置 rowspan 值。

请帮我解决这个问题。

谢谢

这是表大小 2 列和行跨度 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);

最佳答案

当我使用 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 行。第一行中的右侧单元格是 rowspan 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);

关于用于从右到左方向的 iText 表格行跨度(阿拉伯语),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8804585/

相关文章:

java - 将 SignedHash 插入 PDF 中以进行外部签名过程 -workingSample

java - 我究竟做错了什么? Rowspan不会改变

java - itextpdf 特定页面上的不同边距

itext pdfHtml : set margins

java - 如何从 PDF 中删除表单元素

c# - itextsharp 读表

c# - 如何使用 Itextsharp 翻页

iText - 如何在 pdf 中下移当前内容

html - 如何使用CSS2.1制作圆形图片?

pdf - 使用 iTextSharp 从现有 PDF 中读取 XMP