我在android中使用iText来构建带有表格的pdf文件。这似乎很容易,但结果是错误的。帮助赞赏!
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(output));
Document documento = new Document(pdfDoc);
float[] columnWidths = new float[]{40, 160, 50, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25};
Table table = new Table(columnWidths);
table.setWidth(500);
com.itextpdf.layout.element.Cell cell = new com.itextpdf.layout.element.Cell(1, columnWidths.length).add("(Continuação)");
table.addHeaderCell(cell);
cell = new com.itextpdf.layout.element.Cell(1, columnWidths.length).add("Continua...");
table.addFooterCell(cell);
table.setSkipFirstHeader(true);
table.setSkipLastFooter(true);
Cell cellA;
for (int i = 0; i < 100; i++) {
cellA = new Cell(1, 1).add(String.valueOf(i+1));
cellA.setTextAlignment(TextAlignment.CENTER);
cellA.setWidth(40);
cellA.setFontSize(7);
table.addCell(cellA);
cellA = new Cell(1, 1).add("ALYNE BORGES MADEIRA");
cellA.setTextAlignment(TextAlignment.LEFT);
cellA.setWidth(160);
cellA.setFontSize(7);
table.addCell(cellA);
cellA = new Cell(1, 1).add("100.00");
cellA.setTextAlignment(TextAlignment.CENTER);
cellA.setWidth(50);
cellA.setFontSize(7);
table.addCell(cellA);
for (int j = 0; j < 10; j++) {
cellA = new Cell(1, 1).add("10.00");
cellA.setTextAlignment(TextAlignment.CENTER);
cellA.setWidth(25);
cellA.setFontSize(7);
table.addCell(cellA);
}
}
问题出在最后一栏,其中宽度不等于之前的9。
答案 0 :(得分:4)
<强> 摘要 强>
如果您只是使用它来生成PDF表而不需要RTF和HTML输出,那么最好使用PdfPTable类[表现在不受支持],它更好地支持并且不易产生怪癖(如此处所述) :PdfpTable vs. Table (vs. SimpleTable?))。
<强> 浆纱 强>
如果将PdfPTable与setWidths(float[])
一起使用,那么您应该能够执行绝对宽度,而无需在每个单元格中指定宽度以获得代码可读性。 (您也可以使用百分比宽度,对于基本表格,可能更容易在页面上正确对齐。)
标题&amp;页脚 强>
因为你正在使用标题和放大器页脚,PdfPTable有setHeaderRows(int)
和setFooterRows(int)
,但请注意:
从标题行中减去页脚行数。例如,对于具有两个标题行和一个页脚行的表,代码将为:
table.setHeaderRows(3);
table.setFooterRows(1);
PdfPCell移植
另请注意,PdfPCell已将setTextAlignment
更改为setHorizontalAlignment。
示例和文档
使用它的一些示例(请注意setLockedWidth
的用法:https://developers.itextpdf.com/examples/tables-itext5/cell-and-table-widths
JavaDoc for PdfPTable位于:http://itextsupport.com/apidocs/itext5/5.5.9/com/itextpdf/text/pdf/PdfPTable.html
JavaFoc for PdfPCell就在这里:http://itextsupport.com/apidocs/itext5/5.5.9/com/itextpdf/text/pdf/PdfPCell.html