2012-08-26 43 views
1

我有一个使用Imagick PHP的PDF文件的缩略图创建脚本。使用PHP获取PDF文件的高度和宽度

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

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

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

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

回答

4

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

这意味着,你可以问identify打印出来的宽度和高度为一个PDF的第一页使用此命令,你应该没有问题转化为PHP语法

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

这将打印在以下格式的第一页媒体框值:

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还支持可选裁切框裁剪框作品框出血框设置。
  2. 最重要的是裁切框,因为:
  3. 如若裁切框是从媒体框不同(它需要相同或更小,并且不允许要大些!)那么PDF查看器和打印机驱动程序只会呈现该框内的页面部分。
  4. identify只会返回MediaBox值,它不支持其他Box。
  5. 同样,convert将使用PDF页面的(可能更大的)MediaBox大小来呈现图像(因此其结果看起来看起来与您在PDF查看器中看到的看起来不同)。
  6. 幸运的是,含有的PDF与TrimBox的值非常不同MediaBox值不是很常见。
  7. 如果您需要访问所有Box的值设置,则应使用其他命令实用程序来提取相关信息:pdfinfo -box -f 1 -l 1 some.pdf | grep -E '(Box:|rot:|size:)'。(如果可能的话,使用Poppler版本pdfinfo ...)