使用pdfBox从PDF提取的图像的DPI

Nai*_*gun 3 java pdf image dpi pdfbox

我正在使用java pdfBox库来验证具有嵌入式图像的单页pdf文件。

我知道pdf文件本身不包含DPI信息。

但是,文档中具有相同尺寸的图像在提取后的像素大小不同,并且没有dpi元信息。

那么是否有可能以某种方式计算相对于pdf页面的图像大小,或者使用pdfBox提取具有dpi信息的图像(用于png或jpeg图像文件)?

谢谢!

Til*_*err 6

从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());
Run Code Online (Sandbox Code Playgroud)

这是一个示例输出:

找到图片[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)