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 ページとして初期化されたページがあり、コンテンツを追加したとします。次に、サイズを変更できるページの途中で突然、POSTCARD サイズ (LETTER よりもはるかに小さい) としましょう。その場合、すでに追加されたテキストが新しいサイズと一致しなくなったため、iText は何をすべきかわかりませんでした。

したがって、ページ サイズの変更は、newPage()がトリガーされた後にのみ有効になると判断しました。その結果、新しいバージョンの iText にアップグレードするときに、古いコードに小さな変更を加える必要がある場合があります。

于 2014-12-27T13:18:29.343 に答える