2

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

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

我能够在固定高度和宽度的情况下生成缩略图而没有任何问题

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

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

4

1 回答 1

6

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