iText PDFPTable setHeaderRows搞乱对齐

时间:2017-02-06 18:27:35

标签: itext

我们正在使用iText PDFPTable。我们面临的问题是由于以下代码行:

table.setHeaderRows(headerRows);

这段代码在本地环境(在Windows中托管的WAS)中运行良好,但是在开发服务器(在Unix中托管的WAS)中无法正常工作。我们无法弄清楚问题是什么,因为在两种情况下都使用了IE。有人可以回答为什么在开发服务器中出现对齐问题? 添加更多代码...... 方法创建标准表:

 public PdfPTable createStandardTable(int columnCount, int headerRows) {
    zebraTable = true;
    horizontalBorders = false;

    PdfPTableEvent tableEvent = new PdfPTableEvent()
    {
        // begin (another) anonymous inner class extends PdfPTableEvent
        @Override
        public void tableLayout(PdfPTable table, float[][] width, float[] height,
                int headerRows, int rowStart, PdfContentByte[] canvas) {
            // code provided by Bruno Lowagie, author of iText, via StackOverflow.
            float widths[] = width[0];
            float x1 = widths[0];
            float x2 = widths[widths.length - 1];
            float y = height[height.length - 1];
            PdfContentByte cb = canvas[PdfPTable.LINECANVAS];
            cb.moveTo(x1, y);
            cb.lineTo(x2, y);
            cb.setColorStroke(TABLE_BORDER_COLOR);
            cb.stroke();
        }
        // end anonymous inner class extends PdfPTableEvent
    };

    PdfPTable table = tableCreationHelper(columnCount, headerRows);
    table.setTableEvent(tableEvent);
    return table;
}

私人助手方法

private PdfPTable tableCreationHelper(int columnCount, int headerRows) {
    PdfPTable table = new PdfPTable(columnCount);
    table.setSpacingBefore(TABLE_SPACING);
    table.setSpacingAfter(TABLE_SPACING);
    table.setWidthPercentage(TABLE_WIDTH_PERCENT);
    table.setHeaderRows(headerRows);
    return table;
}

如果您需要更多信息,请告诉我

非常感谢, 巴布。

1 个答案:

答案 0 :(得分:0)

我想出了这个问题。开发服务器有iText版本5.5.0,本地配置为5.5.2。 iText 5.5.0的setHeadersRow函数弄乱了对齐。