当前,我使用iText 7.1.5
版本,尝试将CSV文件转换为PDF。
填写表格后,我无法提供正确的页面大小来容纳整个表格。
在该版本之前,我使用7.1.1
,此代码对我有用:
Table pdfTable = new Table(columnCount).setTextAlignment(TextAlignment.CENTER)
.setVerticalAlignment(VerticalAlignment.MIDDLE)
.setHorizontalAlignment(HorizontalAlignment.CENTER)
// sets WIDTH property of table
.useAllAvailableWidth();
Cell cell = new Cell();
cell.setBackgroundColor(ColorConstants.LIGHT_GRAY).setBold();
pdfTable.addHeaderCell(cell);
// headers and content
for (int i = 0; i < columnCount; i++) {
//...
pdfTable.addHeaderCell(cell);
}
PageSize fittedPageSize = PDFUtility.getFittedPageSize(pdfTable.getWidth(), PageSize.A4.getWidth());
pdfDocument.setDefaultPageSize(fittedPageSize);
document.add(pdfTable);
现在pdfTable.getWidth()
返回100%,这是正确的,因为调用了useAllAvailableWidth
。
谢谢。
答案 0 :(得分:0)
作为对我的另一个问题的回答,@ Uladzimir Asipchuk也向我提供了适用于此的解决方案。
这是答案link。
我的代码:
`Table pdfTable = new Table(columnCount).setTextAlignment(TextAlignment.CENTER)
.setVerticalAlignment(VerticalAlignment.MIDDLE)
.setHorizontalAlignment(HorizontalAlignment.CENTER)
.useAllAvailableWidth();
// Add table content here
MinMaxWidth minMaxWidth =
((TableRenderer)pdfTable.createRendererSubTree()
.setParent(document.getRenderer())).getMinMaxWidth();
float minWidth = minMaxWidth.getMaxWidth();
pdfDocument.setDefaultPageSize(PDFUtility
.getFittedPageSize(minWidth,PageSize.A4.getWidth()));
document.add(pdfTable);`