我一直在使用旧的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);
这是两个并排的屏幕截图。
答案 0 :(得分:0)
我们注意到,设置当前页面的页面大小,但仍然在当前页面上,可能会导致一些尴尬的情况。
假设您有一个初始化为LETTER页面的页面,并且您添加了一些内容。然后突然在页面的中间你可以改变大小,让我们说POSTCARD大小(比LETTER小得多)。在这种情况下,iText不知道该怎么做,因为已经添加的文本不再与新尺寸相匹配。
因此,我们决定页面大小的任何更改仅在触发newPage()
后生效。因此,在升级到较新版本的iText时,您可能不得不对旧代码进行细微更改。