【问题标题】:DPI of image extracted from PDF with pdfBox使用 pdfBox 从 PDF 中提取的图像的 DPI
【发布时间】:2011-07-25 06:27:14
【问题描述】:

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

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

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

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

谢谢!

【问题讨论】:

    标签: java image pdf dpi pdfbox


    【解决方案1】:

    从 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

    size = 610.56pu, 845.52pu

    尺寸 = 8.48 英寸,11.743334 英寸

    尺寸 = 215.39198mm, 298.28067mm

    dpi = 300 dpi (X), 300 dpi (Y)

    【讨论】:

    • 为我工作。在我的版本中,最后添加的行中是“ctmNew.getScaleX()”而不是“ctmNew.getXScale()”。 (Y 相同)
    【解决方案2】:

    我不熟悉 pdfBox,但您有一个与 pdf 中的每个光栅图像相关联的 CTM。 CTM 提供有关页面上图像位置和尺寸的数据。因此,提取图像的数据应该足以计算相对 dpi。

    【讨论】:

      猜你喜欢
      • 2012-02-01
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-15
      • 1970-01-01
      相关资源
      最近更新 更多