iTextPdf页面大小未设置为自定义大小

时间:2014-12-19 20:04:16

标签: pdf itextpdf

我一直在使用旧的itext jar(com.lowagie)从图像文件生成一些pdf。但是当我升级到itextpdf jar(5.5.0)时,页面大小最终被设置为A4(即使我调用了doc.setPageSize(rectangleOfCustomSize))。当我并排查看pdfs时,新代码将图像文件从页面流出(顶部和右侧)。旧页面的大小为15.81x23.32,而新页面的大小为8.26x11.69。

如何更改代码以解决此问题?我需要始终拥有自定义页面大小(从不标准)。

以下是一些代码段。

Document document = new Document();
...

// Set image scale
image = com.itextpdf.text.Image.getInstance(file.toString());
...
int xDPI = image.getDpiX();
int yDPI = image.getDpiY();

if (xDPI != 72 || yDPI != 72) {
    image.scaleAbsolute(image.getWidth() * 72f / xDPI, image.getHeight() * 72f / yDPI);
}
...
Rectangle size = new Rectangle(image.getPlainWidth(), image.getPlainHeight());
document.setPageSize(size);

这是两个并排的屏幕截图。 Old and New files

1 个答案:

答案 0 :(得分:0)

我们注意到,设置当前页面的页面大小,但仍然在当前页面上,可能会导致一些尴尬的情况。

假设您有一个初始化为LETTER页面的页面,并且您添加了一些内容。然后突然在页面的中间你可以改变大小,让我们说POSTCARD大小(比LETTER小得多)。在这种情况下,iText不知道该怎么做,因为已经添加的文本不再与新尺寸相匹配。

因此,我们决定页面大小的任何更改仅在触发newPage()后生效。因此,在升级到较新版本的iText时,您可能不得不对旧代码进行细微更改。