【问题标题】:Marking table, row and cell as DIV iText将表格、行和单元格标记为 DIV iText
【发布时间】:2015-10-08 07:48:52
【问题描述】:

我正在使用 iText 5.5.6 创建 PDF。 我想将表格、行和单元格标记为 DIV。 我编写了以下代码,但只有表格被标记为 DIV 而不是行和单元格。

PdfPTable table = new PdfPTable(2);
table.setRunDirection(PdfAWriter.RUN_DIRECTION_LTR);
table.setRole(PdfName.DIV);
table.setWidthPercentage(80);
table.setWidths(new float[] { 0.8f, 1.2f });
table.setHorizontalAlignment(PdfPTable.ALIGN_LEFT);
table.setSpacingBefore(10);
table.setSpacingAfter(15);
Paragraph p3 = new Paragraph("Name:", font12);
Paragraph p4 = new Paragraph("FirstName LastName", font12);
Paragraph p5 = new Paragraph("DOB: ", font12);
Paragraph p6 = new Paragraph("00-00-0000", font12);
PdfPCell cellp3 = new PdfPCell(p3);
cellp3.setBorder(0);
PdfPCell cellp4 = new PdfPCell(p4);
cellp4.setBorder(0);
cellp3.setRole(PdfName.DIV);
cellp4.setRole(PdfName.DIV);
table.addCell(cellp3);
table.addCell(cellp4);
PdfPCell cellp5 = new PdfPCell(p5);
cellp5.setBorder(0);
PdfPCell cellp6 = new PdfPCell(p6);
cellp6.setBorder(0);
cellp5.setRole(PdfName.DIV);
cellp6.setRole(PdfName.DIV);
table.addCell(cellp5);
table.addCell(cellp6);

如何解决这个问题?

【问题讨论】:

  • @BrunoLowagie in setAccessibleAttribute() 键将是 PdfName.DIV 值是多少?新的 PdfString()
  • 请忽略我的评论。我检查了 iText 代码,但我错了。更改PdfPTable 的语义并非易事……
  • @BrunoLowagie 那么,我该如何解决这个问题?
  • 我不知道,但我确信 iText 支持人员知道(即:如果可能的话)。

标签: java itextsharp itext


【解决方案1】:

如果我测试您的代码,表格和所有单元格都被标记为 DIV。行确实不是。

在 iText 中,PdfPTablePdfPRowPdfPCell 类负责表格功能。 PdfPRow 通常只在内部的 iText 实现中使用,因为 PdfPTable 实例直接接受 PdfPCells。

但是您可以检索表行来设置它们的角色。将所有单元格添加到表格后,执行以下操作:

for (PdfPRow row : table.getRows())
    row.setRole(PdfName.DIV);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-23
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 2020-04-05
    • 1970-01-01
    相关资源
    最近更新 更多