以像素为单位测量PDF尺寸是否有意义?

以像素为单位测量PDF尺寸是否有意义?,pdf,image-processing,imagemagick,pixel,dimensions,Pdf,Image Processing,Imagemagick,Pixel,Dimensions,我已经使用两个Python模块(ImageMagick绑定)和测试了以像素为单位测量PDF尺寸的两种方法 获取每个模块的维度会返回完全不同的结果: Wand报告556x748 GDAL报告2317x3117 其中一个是“错误的”吗?如果我理解正确,以像素为单位的PDF尺寸取决于设备-但是,这两个结果使用相同的显示设备 是否有其他因素会影响以像素为单位的PDF大小的计算?不使用“Wand”和“GDAL”来处理PDF 如果您依赖(ImageMagick绑定)来处理PDF,那么您使用ImageMa

我已经使用两个Python模块(ImageMagick绑定)和测试了以像素为单位测量PDF尺寸的两种方法

获取每个模块的维度会返回完全不同的结果:

  • Wand报告556x748
  • GDAL报告2317x3117
其中一个是“错误的”吗?如果我理解正确,以像素为单位的PDF尺寸取决于设备-但是,这两个结果使用相同的显示设备

是否有其他因素会影响以像素为单位的PDF大小的计算?

不使用“Wand”和“GDAL”来处理PDF 如果您依赖(ImageMagick绑定)来处理PDF,那么您使用ImageMagick并不像您想象的那样

因为ImageMagick本身无法处理PDF,所以它只处理光栅图像

对于其他格式,IM必须依赖“委托”。ImageMagick委托是外部的第三方实用程序,由ImageMagick运行,首先将“外来”文件格式转换为光栅图像,然后传递给ImageMagick进行进一步的工作

因此,即使您只想使用ImageMagick确定PDF页面的尺寸,这也不是一个简单的过程:

  • 调用Ghostscript将PDF页面渲染为光栅图像。(您知道哪个分辨率的鬼脚本将用于创建光栅吗?!?)

  • 运行一些ImageMagick命令,以“像素”为单位返回GS创建的光栅图像的尺寸

  • 这可能需要很长时间才能返回结果——结果取决于光栅化PDF页面时选择的分辨率

    这是一个错误的工作工具

    (对于GDAL,基本上与上述相同,即使它不使用Ghostscript进行光栅化。但是,您知道GDAL在将矢量PDF页面转换为光栅时使用的默认分辨率吗?!?)

    使用正确的工具进行作业 PDF使用键
    /MediaBox
    将所有页面的维度存储在“字典”中。此密钥必须存在于所有有效的PDF文件中

    请注意,PDF还了解
    /CropBox
    /ArtBox
    /TrimBox
    /BleedBox
    的(可选)概念。
    /CropBox
    键值(如果存在)可能会命令PDF查看器隐藏整个页面的一部分,并仅显示其较小的视口框(打印或查看时)

    确定PDF页面尺寸的一个命令行工具是
    pdfinfo
    。此实用程序基于库——因此,如果不想运行外部命令,请将自己的应用程序绑定到此库

    pdfinfo
    速度更快:

  • 它不需要渲染、光栅化或完全解释PDF文件

  • 它只是(非常快速地)查找维度的字典条目

  • 这些尺寸以点的形式返回。这个单位来源于PostScript世界:72点相当于1英寸。因此,在分辨率为72 DPI/PPI的情况下,它也会显示“以像素为单位的尺寸”

  • 示例(使用OP中的链接PDF) 我对链接的示例PDF运行了一个
    pdfinfo
    命令,以确定页面范围116-117的维度(第一页使用
    -f
    ,最后一页使用
    -l
    )。命令在几秒钟内完成:

    结果如下:

    pdfinfo -f 116 -l 117 -box soils-of-manawatu-county-soil-survey-report-30.pdf
    
     Title:          
     Subject:        
     Keywords:       
     Author:         
     Creator:        ABBYY FineReader
     Producer:       
     CreationDate:   Tue Dec 18 19:11:50 2007
     ModDate:        Tue Dec 18 19:11:50 2007
     Tagged:         no
     UserProperties: no
     Suspects:       no
     Form:           none
     JavaScript:     no
     Pages:          117
     Encrypted:      no
     Page  116 size: 957 x 751 pts
     Page  116 rot:  0
     Page  117 size: 2065 x 2249 pts
     Page  117 rot:  0
     Page  116 MediaBox:     0.00     0.00   957.00   751.00
     Page  116 CropBox:      0.00     0.00   957.00   751.00
     Page  116 BleedBox:     0.00     0.00   957.00   751.00
     Page  116 TrimBox:      0.00     0.00   957.00   751.00
     Page  116 ArtBox:       0.00     0.00   957.00   751.00
     Page  117 MediaBox:     0.00     0.00  2065.00  2249.00
     Page  117 CropBox:      0.00     0.00  2065.00  2249.00
     Page  117 BleedBox:     0.00     0.00  2065.00  2249.00
     Page  117 TrimBox:      0.00     0.00  2065.00  2249.00
     Page  117 ArtBox:       0.00     0.00  2065.00  2249.00
     File size:      2105582 bytes
     Optimized:      yes
     PDF version:    1.2
    
    如您所见,您的PDF甚至没有117页中的每一页都具有相同的页面尺寸

    现在,让我们使用ImageMagick命令尝试相同的操作:([1]

    [1]注意:ImageMagick的页面编号方法是以零为基础的{第一页的编号为“0”},因此第116-117页的
    [115-116]
    范围。)

    这需要6秒钟才能完成,并返回:

    957 x 751
    2065 x 2249
    
    我在这里很幸运,因为Ghostscript运行时的分辨率参数似乎等于
    -r72x72

    我见过ImageMagick被设置为使用
    -r75x75
    ——这当然会返回不同的值

    使用另一个PDF的示例 下一个示例是使用PDF完成的,该PDF表示IXUS 850 IS摄像头的用户手册,如web上所示。我将仅检索前3页的信息:

    pdfinfo -box -l 3 _IXUS_850IS_ADVCUG_EN.pdf
    
     Creator:        FrameMaker 6.0
     Producer:       Acrobat Distiller 5.0.5 (Windows)
     CreationDate:   Thu Aug 17 16:43:06 2006
     ModDate:        Tue Aug 22 12:20:24 2006
     Tagged:         no
     UserProperties: no
     Suspects:       no
     Form:           AcroForm
     JavaScript:     no
     Pages:          146
     Encrypted:      no
     Page    1 size: 419.535 x 297.644 pts
     Page    1 rot:  90
     Page    2 size: 297.646 x 419.524 pts
     Page    2 rot:  0
     Page    3 size: 297.646 x 419.524 pts
     Page    3 rot:  0
     Page    1 MediaBox:     0.00     0.00   595.00   842.00
     Page    1 CropBox:     87.25   430.36   506.79   728.00
     Page    1 BleedBox:    87.25   430.36   506.79   728.00
     Page    1 TrimBox:     87.25   430.36   506.79   728.00
     Page    1 ArtBox:      87.25   430.36   506.79   728.00
     Page    2 MediaBox:     0.00     0.00   595.00   842.00
     Page    2 CropBox:    148.17   210.76   445.81   630.28
     Page    2 BleedBox:   148.17   210.76   445.81   630.28
     Page    2 TrimBox:    148.17   210.76   445.81   630.28
     Page    2 ArtBox:     148.17   210.76   445.81   630.28
     Page    3 MediaBox:     0.00     0.00   595.00   842.00
     Page    3 CropBox:    148.17   210.76   445.81   630.28
     Page    3 BleedBox:   148.17   210.76   445.81   630.28
     Page    3 TrimBox:    148.17   210.76   445.81   630.28
     Page    3 ArtBox:     148.17   210.76   445.81   630.28
     File size:      6888764 bytes
     Optimized:      yes
     PDF version:    1.4
    
    从输出中可以看出,所有三种页面大小(“
    /MediaBox
    ”)都是
    595 x 842 pts
    (==A4),但不同的
    /CropBox
    条目限制页面的可见部分查看这些大小的端口:

  • 第1页:
    419.535 x 297.644分
  • 第2页:
    297.646 x 419.524分
  • 第3页:
    297.646 x 419.524分
  • 最重要的是,第一页旋转了90度(从第1页旋转90度的行中可以看出)

    现在让我们比较一下ImageMagick命令([2])返回的结果:

    [2]注意:我的系统上的IM是6.9.0-0 Q16版本,它使用Ghostscript v9.10作为代理。如果使用其他IM/GS版本在不同的系统上测试相同的内容,您的输出可能会不同!)


    因此,最后一个示例可能会回答OP问题中的“是否有其他因素会影响PDF大小(以像素为单位)的计算?”部分。

    我想说Wand假设的是72 DPI和GDAL 300 DPI。谢谢,这很有意义PDF的测量单位就是点。因此,如果您使用像素,您将始终需要考虑分辨率。此外:此PDF的页面大小不相等,许多页面大小约为556*748(在任意方向上的大小为10 pt),许多页面大小约为947*728,最后一个页面大小为2065*2249。因此,无论如何,在询问此pdf的维度时,您不应该期望得到明确的结果。
    pdfinfo -box -l 3 _IXUS_850IS_ADVCUG_EN.pdf
    
     Creator:        FrameMaker 6.0
     Producer:       Acrobat Distiller 5.0.5 (Windows)
     CreationDate:   Thu Aug 17 16:43:06 2006
     ModDate:        Tue Aug 22 12:20:24 2006
     Tagged:         no
     UserProperties: no
     Suspects:       no
     Form:           AcroForm
     JavaScript:     no
     Pages:          146
     Encrypted:      no
     Page    1 size: 419.535 x 297.644 pts
     Page    1 rot:  90
     Page    2 size: 297.646 x 419.524 pts
     Page    2 rot:  0
     Page    3 size: 297.646 x 419.524 pts
     Page    3 rot:  0
     Page    1 MediaBox:     0.00     0.00   595.00   842.00
     Page    1 CropBox:     87.25   430.36   506.79   728.00
     Page    1 BleedBox:    87.25   430.36   506.79   728.00
     Page    1 TrimBox:     87.25   430.36   506.79   728.00
     Page    1 ArtBox:      87.25   430.36   506.79   728.00
     Page    2 MediaBox:     0.00     0.00   595.00   842.00
     Page    2 CropBox:    148.17   210.76   445.81   630.28
     Page    2 BleedBox:   148.17   210.76   445.81   630.28
     Page    2 TrimBox:    148.17   210.76   445.81   630.28
     Page    2 ArtBox:     148.17   210.76   445.81   630.28
     Page    3 MediaBox:     0.00     0.00   595.00   842.00
     Page    3 CropBox:    148.17   210.76   445.81   630.28
     Page    3 BleedBox:   148.17   210.76   445.81   630.28
     Page    3 TrimBox:    148.17   210.76   445.81   630.28
     Page    3 ArtBox:     148.17   210.76   445.81   630.28
     File size:      6888764 bytes
     Optimized:      yes
     PDF version:    1.4
    
    identify -format "%W x %H\n" _IXUS_850IS_ADVCUG_EN.pdf[0-2]
    
     842 x 595
     595 x 842
     595 x 842