【问题标题】:setRowspan in iText not workingiText 中的 setRowspan 不起作用
【发布时间】:2013-10-30 07:51:58
【问题描述】:

我正在使用 iText 5.4.4 生成 pdf。我创建了一个表,第一行(这是一个标题)的列跨度为 4 列。之后,我尝试使用 cell.setRowspan(2) 使标题跨 2 行,但这似乎不起作用。

这是我的代码 sn-p:

PdfPCell cell;
cell = new PdfPCell(new Paragraph("Parent Details",font));
cell.setColspan(4);
cell.setRowspan(2);
cell.setHorizontalAlignment(Phrase.ALIGN_CENTER);
cell.setBackgroundColor(BaseColor.LIGHT_GRAY);
table.addCell(cell);

iText in Action 书中作者说 - “PdfPTable/PdfPCell 中没有方法 setRowspan()。”如果这种方法不存在,NetBeans 怎么不抛出错误?另外,如何使我的标题跨 2 行?除了使用嵌套表之外,还有其他解决方法吗?

【问题讨论】:

  • 在 iText in Action 书中作者说 - “PdfPTable/PdfPCell 中没有 setRowspan() 方法。”如果不存在这样的方法,NetBeans 怎么不会抛出错误? - 我假设您拥有该书的第一版。 setRowspan 是在 setColspan 7 年后推出的;也许这本书是在这期间写的?
  • 我想是的。但是为什么setRowspan 不起作用?
  • 嗯,它是,参见。我的回答如下。

标签: java itext html-table


【解决方案1】:

很遗憾,您没有提供足够的代码来重现该问题。因此,我只能给出一个示例来表明行跨度可以正常工作:

Document document = new Document();
PdfWriter.getInstance(document, new FileOutputStream("span-in-table.pdf"));
document.open();

PdfPTable table = new PdfPTable(3);

table.addCell("A");
PdfPCell cell = new PdfPCell(new Phrase("B"));
cell.setColspan(2);
cell.setRowspan(2);
table.addCell(cell);
table.addCell("C");
table.addCell("D");
table.addCell("E");
table.addCell("F");

document.add(table);
document.close();

此示例生成此表:

看起来和预期的差不多。

或者如果您更喜欢左侧的 2x2 单元格:

...
PdfPTable table = new PdfPTable(3);

PdfPCell cell = new PdfPCell(new Phrase("A"));
cell.setColspan(2);
cell.setRowspan(2);
table.addCell(cell);
table.addCell("B");
table.addCell("C");
table.addCell("D");
table.addCell("E");
table.addCell("F");

document.add(table);
...

导致

在 iText in Action 书中,作者说 - “PdfPTable/PdfPCell 中没有 setRowspan() 方法。”如果这种方法不存在,NetBeans 怎么不报错?

嗯,那是 iText in Action 的第一版。在第二版中,您可以阅读:

有一段时间,PdfPCells 不支持行跨度。解决此问题的唯一方法使用嵌套表。

iText in Action — Second Edition 中的第 109 页)

您可以在第 4 章中找到示例在表格中组织内容here

【讨论】:

  • 如果你想让单元格“A”跨越两行两列,你会怎么做?
  • 你的意思是A和B都是2x2?还是只是一个?
  • 我添加了一个示例,其中 A 而不是 B 跨越 2x2 单元格。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多