gpt4 book ai didi

pdf - 如何获取PDF文件的DPI?

转载 作者:行者123 更新时间:2023-12-04 14:29:54 57 4
gpt4 key购买 nike

使用 ImageMagick 或 GhostScript 或任何 PHP 代码如何获取 PDF 文件的 DPI 值?
这是两个演示文件的链接

  • http://jmp.sh/O5g5wL4 -- 72 DPI
  • http://jmp.sh/RxrnYrY -- 300 DPI

  • 我用过了

    $image = new Imagick();
    $image->readImage('xyz.pdf');
    $resolutions = $image->getImageResolution();

    对于具有不同 DPI 的两个不同 PDF 文件,它给出了相同的结果。

    我也用过
    pdfimages -list xyz.pdf

    它提供了所有信息的列表,但如何从列表中获取 DPI 值。

    如何获取 PDF 的确切 DPI 值?

    最佳答案

    正如 fmw42 所说,PDF 文件本身没有分辨率。但是,在您的情况下,这两个文件都只包含一个图像。在一种情况下,图像约为 48 MB,另一种情况下约为 200 MB。

    原因是图像具有不同的有效分辨率。

    在 PDF 中,图像只是一个位图,一个彩色像素序列。然后将它们绘制到底层媒体上。此时没有分辨率,像素以特定的介质尺寸放置。在您的情况下为 22 英寸 x 82 英寸。

    有效分辨率是通过将维度除以该维度中图像中的像素数来给出的。

    因此,如果我有一个 1000x1000 像素的图像,并在 1 英寸的正方形中绘制它,则图像的有效分辨率为 1000 dpi。如果我改变主意并将其绘制为 4 英寸乘 4 英寸的正方形,则有效分辨率为 250 dpi。

    图像没有改变,只是它覆盖的区域。

    现在考虑我在 1 英寸的正方形中绘制了两个图像。第一张图片是 1000x1000,第二张是 500x500。第一张图片的有效分辨率为 1000 dpi,第二张图片的有效分辨率为 500 dpi。

    因此您可以看到,在 PDF 中,图像的有效分辨率是图像尺寸与其覆盖的媒体尺寸的组合。

    这在 PDF 文件中很难衡量。覆盖的面积是使用矩阵代数计算的,可以是几个不同矩阵的组合。

    相比之下,图像的实际尺寸很容易确定,它们在图像字典中给出。您的图片为:1620x5868 和 3372x12225。在这两种情况下,介质大小相同; 22.5x81.5 英寸。

    由于图像覆盖整个媒体,因此有效分辨率为;

    1620/22.5 = 72 乘以 5868/81.5 = 72

    3372/22.5 = 149.866 乘以 12225/81.5 = 150

    我认为 MuPDF 会给你图像尺寸和媒体尺寸,假设你所有的 PDF 文件都是这样构造的,你可以简单地执行数学运算,但请注意,对于图像不覆盖图像的普通 PDF 文件来说,这不会那么简单整个媒体。

    使用 mutool info -I -M 150-dpi.pdf给出:

    Retrieving info from pages 1-1...

    Mediaboxes (1): 1 (6 0 R): [ 0 0 1620 5868 ]

    Images (1): 1 (6 0 R): [ DCT ] 3375x12225 8bpc DevCMYK (12 0 R)



    所以有你的图像尺寸和你的媒体尺寸。您需要做的就是将一个除以另一个。

    注意:在 debian 和相关发行版中, mutool 包含在 mupdf-tools 包中,而不是在 mupdf 包中。因此它可以通过 sudo apt install mupdf-tools 安装.

    关于pdf - 如何获取PDF文件的DPI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50006770/

    57 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com