ItextPdf宽度不会针对横向页面展开

时间:2017-11-27 16:45:30

标签: java itext width landscape

我正在尝试在我的'PdfPageEventHelper'中为旋转景观的PDF页面放置一个表格:

public void onStartPage(PdfWriter writer_,Document document_) {
        writer_.addPageDictEntry(PdfName.ROTATE,PdfPage.LANDSCAPE);
    }

那部分似乎正在工作但是当我用10列创建我的表时,设置宽度似乎不起作用:

float sizeY=page.getWidth();
PdfPTable table=new PdfPTable(10);
table.setTotalWidth(sizeY);
float[] widths=new float[] {1.f,1.5f,4.f,1.f,1.f,1.f,1.f,1.f,1.f,1.f};
table.setWidths(widths);

表格宽度似乎总是默认值(纵向页面宽度的80%)。如何让表格使用横向页面宽度? TIA。

1 个答案:

答案 0 :(得分:1)

你正在使用旧的iText 5. iText 5中有很多怪癖在iText 7中解决。

在iText 7中,我们有UnitValue的概念,它可以帮助iText确定某些东西是绝对值(用户单位/点数)还是相对值(百分比)。

在iText 5中,这个概念未知。 PdfPTable类有两个表格宽度参数:

  • 宽度百分比:默认为80%,
  • 绝对宽度

默认情况下,使用宽度作为百分比。如果你想使用绝对宽度,你需要"拉开关"使用setLockedWidth()方法:

table.setTotalWidth(sizeY);
table.setLockedWidth(true);

我知道这很奇怪,但话说回来,你正在使用 iText版本。如果您想要更一致的API,请使用iText 7.升级非常重要。我们花费了大量的时间和金钱来改进iText,所以看到新的iText开发人员选择使用iText 5而不是使用iText 7感到非常沮丧。