即时通讯在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个。
最佳答案
摘要
如果仅使用它来生成PDF表,而不需要RTF和HTML输出,则最好使用PdfPTable类[现在不支持表],该类得到更好的支持并且不太容易出现古怪(如此处所述:)。
浆纱
如果将PdfPTable与setWidths(float[])
一起使用,则应该能够执行绝对宽度,而无需在每个单元格中指定宽度以提高代码可读性。 (您也可以使用百分比宽度,对于基本表格,此百分比宽度可能更容易在页面上正确对齐。)
页眉和页脚
由于您使用的是页眉和页脚,因此PdfPTable具有setHeaderRows(int)
和setFooterRows(int)
,但是请注意:
从页眉行中减去页脚行数。例如,对于具有两个标题行和一个脚注行的表,代码为:
table.setHeaderRows(3);
table.setFooterRows(1);
PdfPCell移植
另请注意,PdfPCell已将setTextAlignment
更改为setHorizontalAlignment。
范例与文件
这里是一些使用它的示例(请注意setLockedWidth
的用法:PdfpTable vs. Table (vs. SimpleTable?)
PdfPTable的JavaDoc在这里:https://developers.itextpdf.com/examples/tables-itext5/cell-and-table-widths
PdfPCell的JavaDoc在这里:http://itextsupport.com/apidocs/itext5/5.5.9/com/itextpdf/text/pdf/PdfPTable.html