1

我一直在使用旧的 itext jar (com.lowagie) 从图像文件中生成一些 pdf。但是当我升级到 itextpdf jar (5.5.0) 时,页面大小最终被设置为 A4(即使我调用了 doc.setPageSize(rectangleOfCustomSize))。当我并排查看 pdf 时,新代码的图像文件从页面(顶部和右侧)流出。旧页面的大小为 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);

这是 2 并排的屏幕截图。 旧文件和新文件

4

1 回答 1

0

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

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

newPage()因此,我们决定页面大小的任何更改只有在触发a 后才会生效。因此,在升级到更新版本的 iText 时,您可能必须对旧代码进行一些小改动。

于 2014-12-27T13:18:29.343 回答