【发布时间】:2015-04-19 20:38:12
【问题描述】:
我的 java 项目有两个部分。
- 我需要填充 pdf 的字段
- 我需要在页面空白区域的填充部分下方添加一个表格(并且此表格需要能够滚动到下一页)。
我可以单独做这些事情(填充 pdf 并创建一个表格)。但我无法有效地合并它们。我试过做一个 doc.add(table) 这将导致表格出现在 pdf 的下一页上,这是我不想要的。
我基本上只需要能够指定表格在页面上的开始位置(这样它就不会与现有内容重叠),然后将表格标记到现有的 pdf 上。
如果这不起作用,我的另一个选择是尝试向原始 pdf 添加字段,这些字段将由表格内容填充(因此它将改为基于字段的表格)。
有什么建议吗?
编辑:
我是 iText 的新手,之前没有使用过 columntext,但我试图在下面的代码中对其进行测试,但表格没有显示。我查看了其他列文本示例,但没有看到将列文本添加回 pdf 的确切位置。
//CREATE FILLED FORM PDF
PdfReader reader = new PdfReader(sourcePath);
PdfStamper pdfStamper = new PdfStamper(reader, new FileOutputStream(destPath));
pdfStamper.setFormFlattening(true);
AcroFields form = pdfStamper.getAcroFields();
form.setField("ID", "99999");
form.setField("ADDR1", "425 Test Street");
form.setField("ADDR2", "Test, WA 91334");
form.setField("PHNBR", "(999)999-9999");
form.setField("NAME", "John Smith");
//CREATE TABLE
PdfPTable table = new PdfPTable(3);
Font bfBold12 = new Font(FontFamily.HELVETICA, 12, Font.BOLD, new BaseColor(0, 0, 0));
insertCell(table, "Table", Element.ALIGN_CENTER, 1, bfBold12);
table.completeRow();
ColumnText column = new ColumnText(pdfStamper.getOverContent(1));
column.addElement(table);
pdfStamper.close();
reader.close();
【问题讨论】:
-
您是否尝试使用
ColumnText添加表格,然后如果表格不适合则创建一个新页面?原理在The Best iText Questions on StackOverflow 中进行了解释,更具体地在这个问题中进行了说明:How to continue field output on a second page? 而不是我为该问题编写的示例中所做的一些段落,而是将表添加到ColumnText。您可能需要创建一个字段来定义表格的位置。 -
我对 itext 很陌生,我查看了一些 columntext 的代码示例,但我不确定如何在我的情况下使用它。
-
上午 11:01 开始工作
-
工作于 11:26 完成。这意味着我花了 25 分钟给你写了一份概念证明。如果您还有其他问题,请下载The Best iText Questions on StackOverflow。免费。你只需要注册(这是我捐赠的25分钟的小奖励)。