iText 7.1.5从CSV获取表格的实际宽度

时间:2019-02-18 09:32:27

标签: java itext7

当前,我使用iText 7.1.5版本,尝试将CS​​V文件转换为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

谢谢。

1 个答案:

答案 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);`