使用PHP获取PDF文件的高度和宽度

时间:2012-08-26 06:07:31

标签: php pdf imagemagick height width

我使用Imagick PHP创建了PDF文件的缩略图创建脚本。

它会创建PDF文件第一页的缩略图。

我能够生成缩略图,没有任何固定高度和宽度的问题

我必须得到PDF文件第一页的高度和宽度,并且必须相应地计算缩略图的高度和宽度。

如果我必须从图像创建缩略图,我可以在PHP中使用getimagesize函数,但是有没有这样的函数来获取PDF文件第一页的高度和宽度?

1 个答案:

答案 0 :(得分:4)

您可以通过将[0]附加到文件名来访问ImageMagick可以读取的任何多页文件格式的第一页。

这意味着,您可以要求identify使用此命令打印PDF的第一页的宽度和高度,您应该没有问题转换为PHP语法

 identify  -format "width: %W  --  height: %H\n"  some.pdf[0]

这将按以下格式打印第一页 MediaBox 的值:

  width: 345  --  height: 777

这些值的单位是PostScript点(其中72 pt == 1 inch)。当然,您可以自由修改命令以满足您的需求,例如仅提供2个数字值,或使用WxH格式:

 identify  -format "%W %H\n"  some.pdf[0]
 identify  -format "%Wx%H\n"  some.pdf[0]

但是,请注意以下事实:

  1. PDF还支持可选的 TrimBox CropBox ArtBox BleedBox 设置。
  2. 其中最重要的是 TrimBox ,因为:
  3. TrimBox 应该与 MediaBox 不同(它需要相同或更小,不允许更大!)然后PDF查看器和打印机驱动程序被要求仅渲染该框内的页面部分。
  4. identify仅返回MediaBox值,它不支持其他Box。
  5. 同样,convert将使用PDF页面的(可能更大的)MediaBox大小来渲染图像(因此其结果看起来与您在PDF查看器中看到的看起来不同)。
  6. 幸运的是,带有 TrimBox 值且与 MediaBox 值非常不同的PDF并不常见。
  7. 如果您需要访问所有Box的值设置,则应使用其他命令实用程序来提取相关信息:pdfinfo -box -f 1 -l 1 some.pdf | grep -E '(Box:|rot:|size:)'。 (如果可能,请使用 Poppler 版本的pdfinfo。)