gpt4 book ai didi

java - 表格单元格中的列表项未设置格式

转载 作者:行者123 更新时间:2023-12-01 07:57:21 26 4
gpt4 key购买 nike

我在使用 iText(版本 5.5.2)生成的 PDF 时遇到问题。我有一个表,其中应包含各种元素,包括列表。

但是,单元格内的列表显示错误 - 它根本没有呈现为列表,而是一个接一个地显示列表项。

所以改为

  1. item1
  2. item2
  3. item3

我得到了

item1item2item3

我使用以下代码:

private static Paragraph list(String... items) {
Paragraph para = new Paragraph();
com.itextpdf.text.List list = new com.itextpdf.text.List(true, 10);
for (String item : items) {
list.add(new ListItem(item));
}
para.add(list);
return para;
}

document.add(list("item1","item2","item3));
PdfPTable table = new PdfPTable(2);
table.addCell("Some list");
table.addCell(list("item1","item2","item3));
document.add(table);

添加到表中的元素与添加到文档中的元素相同。区别在于,第一个正确显示为列表,第二个没有列表格式。

我在这里做错了什么?

最佳答案

您正在文本模式下将List添加到PdfPTable。那永远行不通。您应该在复合模式下添加List文本模式复合模式之间的区别在以下问题的回答中进行了解释:

如果您想找到更多有用的答案来解释这两个概念之间的差异,请下载免费电子书 The Best iText Questions on StackOverflow (这就是我找到上述问题的链接的地方)。

我还搜索了 sandbox examples on the official iText website这就是我找到ListInCell的方式显示将列表添加到 PdfPCell 的多种不同方法的示例:

// We create a list:
List list = new List();
list.add(new ListItem("Item 1"));
list.add(new ListItem("Item 2"));
list.add(new ListItem("Item 3"));

// We wrap this list in a phrase:
Phrase phrase = new Phrase();
phrase.add(list);
// We add this phrase to a cell
PdfPCell phraseCell = new PdfPCell();
phraseCell.addElement(phrase);

// We add the cell to a table:
PdfPTable phraseTable = new PdfPTable(2);
phraseTable.setSpacingBefore(5);
phraseTable.addCell("List wrapped in a phrase:");
phraseTable.addCell(phraseCell);

// We wrap the phrase table in another table:
Phrase phraseTableWrapper = new Phrase();
phraseTableWrapper.add(phraseTable);

// We add these nested tables to the document:
document.add(new Paragraph("A list, wrapped in a phrase, wrapped in a cell, wrapped in a table, wrapped in a phrase:"));
document.add(phraseTableWrapper);

// This is how to do it:

// We add the list directly to a cell:
PdfPCell cell = new PdfPCell();
cell.addElement(list);
// We add the cell to the table:
PdfPTable table = new PdfPTable(2);
table.setSpacingBefore(5);
table.addCell("List placed directly into cell");
table.addCell(cell);

生成的 PDF ( list_in_cell.pdf ) 看起来符合我的预期。

但是,有两个注意事项:

  • 该示例提到“此示例是由 Bruno Lowagie 为潜在客户编写的。此示例中的代码适用于 iText 的最新版本。它不适用于 iText 5 之前的版本”我不知道它是否适用于 iText 5.5.2。
  • 我知道表格中不支持嵌套列表。因此,如果您需要单元格内的列表内有一个列表,您将得到的结果与您想要的不一样。

关于java - 表格单元格中的列表项未设置格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28318994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com