3

私はJava pdfBoxライブラリを使用して、画像が埋め込まれた単一ページのpdfファイルを検証しています。

私は、pdf ファイル自体に DPI 情報が含まれていないことを知っています。

ただし、ドキュメント内の同じ寸法の画像は、抽出後のピクセル単位のサイズが異なり、dpi メタ情報はありません。

pdfBoxを使用して、pdfページに相対的な画像サイズを何らかの方法で計算したり、dpi情報(pngまたはjpeg画像ファイルの場合)で画像を抽出したりすることは可能ですか?

ありがとう!

4

2 に答える 2

7

PDFBOX src ダウンロードから PrintImageLocations.java ファイルを取得します。ソースの例外は次のとおりです。最後の行のみが私によるもので、dpi が出力されます。

            float imageXScale = ctmNew.getXScale();
            float imageYScale = ctmNew.getYScale();
            System.out.println("position = " + ctmNew.getXPosition() + ", " + ctmNew.getYPosition());
            // size in pixel
            System.out.println("size = " + imageWidth + "px, " + imageHeight + "px");
            // size in page units
            System.out.println("size = " + imageXScale + "pu, " + imageYScale + "pu");
            // size in inches 
            imageXScale /= 72;
            imageYScale /= 72;
            System.out.println("size = " + imageXScale + "in, " + imageYScale + "in");
            // size in millimeter
            imageXScale *= 25.4;
            imageYScale *= 25.4;
            System.out.println("size = " + imageXScale + "mm, " + imageYScale + "mm");

            System.out.printf("dpi  = %.0f dpi (X), %.0f dpi (Y) %n", image.getWidth() * 72 / ctmNew.getXScale(), image.getHeight() * 72 / ctmNew.getYScale());

出力例は次のとおりです。

見つかった画像 [X0]

位置 = 0.0、0.0

サイズ = 2544px、3523px <---- ピクセル

サイズ = 610.56pu、845.52pu <---- 「ページ単位」、1pu = 1/72 インチ

サイズ = 8.48 インチ、11.743334 インチ

サイズ = 215.39198mm、298.28067mm

dpi = 300 dpi (X)、300 dpi (Y)

于 2012-09-07T09:55:53.057 に答える
0

私はpdfBoxに精通していませんが、pdfのすべてのラスター画像に関連付けられたCTMがあります。CTM は、ページ上の画像の位置とサイズに関する 1 つのデータを提供します。したがって、抽出された画像からのデータは、相対 dpi を計算するのに十分なはずです。

于 2011-04-01T11:43:03.743 に答える