使用 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 还支持可选的 TrimBox、CropBox、ArtBox 和 BleedBox 设置。
其中最重要的是 TrimBox,因为:
如果 TrimBox 与 MediaBox 不同(它必须相同或更小,并且不允许更大!)然后是 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 文件的高度和宽度的主要内容,如果未能解决你的问题,请参考以下文章
在 html 中嵌入 100% 宽度和高度的 pdf 文件?