如何检查 PDF 页面嵌入图像的分辨率 (DPI)?

2023-11-29

有没有免费的库,可用于获取 PDF 文件中包含的 DPI 图像分辨率?

我已经使用 PDFSharp 尝试了以下代码,但它返回的 DPI 不正确。例如,它显示 96dpi,而它应该是 150dpi:

using (PdfDocument pdf = PdfReader.Open(sourcePdf))
{
    for (int i = 0; i < pdf.Pages.Count; i++)
    {
        XGraphics xGraphics = XGraphics.FromPdfPage(pdf.Pages[i]);
        float dpi = xGraphics.Graphics.DpiX; 
    }
}

您可以使用命令行工具来获取所需的信息:pdfimages.

但是,您需要最新版本pdfimages这是基于波普勒图书馆 (NOT基于的“pdfimages”XPDF!)

最近的 Poppler 版本允许您使用-list option:

pdfimages -list -f 2 -l 4 my.pdf

上述示例命令的输出显示页面范围从 2 (f显示的第一页) 到 4 (last 页面显示)。

以下是上述命令的输出,使用我专门为此问题准备的示例 PDF 文件(水平滚动以查看所有列):

page num  type width height color comp bpc  enc interp object ID x-ppi y-ppi size ratio
---------------------------------------------------------------------------------------
   2   0 image   697  1238  gray    1   8  jpeg   no       16  0   320   320  142K  17%
   3   1 image   697  1238  gray    1   8  jpeg   no       16  0   151   151  142K  17%
   4   2 image   697  1238  gray    1   8  jpeg   no       16  0    84   115  142K  17%

输出显示以下内容:

  1. 2-4 三页上有三幅图像(如第 1+2 栏所示,标题为page and num).

  2. The PDF 对象 ID因为所有三个图像都是相同的:16 0(如第 11+12 栏所示,标题为object + ID)。这意味着 PDF 仅定义了一个不同的对象,但显示了 3 次(即图像仅嵌入一次,但出现在 3 页上)。

  3. 图像的宽度是697像素,其高度为1238像素,其图像深度(每颜色位数)为8,其色彩空间为gray它的颜色通道/分量的数量是1,其压缩方案为jpeg,它的字节大小(嵌入时)是142K,其压缩率为17%(如第 4-9 栏和第 14+15 栏标题所示)width, height, color, comp, bpc, size and ratio).

  4. 然而,相同的图像以不同的分辨率出现在不同的页面上(如下所示)PPI-- 每英寸像素 --- 不是DPI):

    • 第 2 页显示它的 PPI 为320在两个方向上,

    • 第 4 页显示它的 PPI 为151在两个方向上,

    • 而第 3 页显示的 PPI 为84在水平 (X) 方向和115垂直 (Y) 方向的 PPI。


现在,如果命令行工具无法重新用于您的目标:作为上面所示工具基础的 Poppler 库当然是免费的(“自由如自由”, 也“像啤酒一样免费”).


这里有一个链接至 PDF("my.pdf")我曾经演示过上面命令的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查 PDF 页面嵌入图像的分辨率 (DPI)? 的相关文章

随机推荐