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

Posted

技术标签:

【中文标题】使用 PHP 获取 PDF 文件的高度和宽度【英文标题】:Get height and width of a PDF file using PHP 【发布时间】:2012-08-21 02:46:07 【问题描述】:

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

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

我能够在固定高度和宽度的情况下生成缩略图

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

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

【问题讨论】:

【参考方案1】:

您可以通过将[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]

但是,请注意以下事实:

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

【讨论】:

以上是关于使用 PHP 获取 PDF 文件的高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章

php获取设备的宽度和高度

PHP 使用PHP中的函数获取图像的宽度和高度

在 html 中嵌入 100% 宽度和高度的 pdf 文件?

PHP - 在不加载图像的情况下获取有关图像(高度和宽度)的信息

使用PHP中的函数获取图像的宽度和高度

使用 Jcrop 裁剪并使用 PHP GD 保存时如何获取可变宽度和高度