如何使用PHP或Linux脚本找到PDF的方向?
我需要扫描上传的PDF,以确定其中的页面是全部是纵向还是有景观页面.有没有可以使用
PHP或linux命令扫描这些页面的PDF?
(更新的答案 – 向下滚动…)
您可以使用pdfinfo(poppler-utils或xpdf-tools的一部分)或识别(ImageMagick工具包的一部分). 识别: identify -format "%f Page %s: Width: %W -- Height: %Hn" T-VD7.PDF 示例输出: T-VD7.PDF Page 0: Width: 595 -- Height: 842 T-VD7.PDF Page 1: Width: 595 -- Height: 842 T-VD7.PDF Page 2: Width: 1191 -- Height: 842 [...] T-VD7.PDF Page 11: Width: 595 -- Height: 421 T-VD7.PDF Page 12: Width: 595 -- Height: 842 还是有点简单: identify -format "%s: %Wx%Hn" T-VD7.PDF 得到: 0: 595x842 1: 595x842 2: 1191x842 [...] 11: 595x421 12: 595x842 注意,如何识别使用零页面计数机制! 如果宽度大于其高度,页面是“景观”.他们既不是,也不是,如果两者都是平等的. 优点是识别可以让您轻松,广泛地调整输出格式. pdfinfo: pdfinfo input.pdf | grep "Page.*size:" 示例输出: Page size: 595.276 x 841.89 pts (A4) 如果涉及到多页PDF,pdfinfo肯定比识别更快,更准确. (13页的PDF我测试了,需要识别31秒来处理,而pdfinfo需要不到半秒….) 警告:默认情况下,pdfinfo仅报告第一页的大小.要获取所有页面的大小(您可能知道,有使用混合页面大小和混合方向的PDF),您必须修改命令: pdfinfo -f 3 -l 13 input.pdf | grep "Page.*size:" 现在输出: Page 1 size: 595.276 x 841.89 pts (A4) Page 2 size: 595.276 x 841.89 pts (A4) Page 3 size: 1191 x 842 pts (A3) [....] Page 12 size: 595 x 421 pts (A5) Page 13 size: 595.276 x 841.89 pts (A4) 这将打印第3页(首先报告)到第13页的大小(l ast报告). 脚本: pdfinfo -f 1 -l 1000 Vergleich-VD7.PDF | grep "Page.* size:" | | while read Page _pageno size _width x _height rest; do [ "$(echo "${_width} / 1"|bc)" -gt "$(echo "${_height} / 1"|bc)" ] && echo "Page $_pageno is landscape..." || echo "Page $_pageno is portrait..." ; done (bc-trick是必需的,因为-gt比较只对整数使用,除以1和bc之间的比例可以将可能的实数值乘以整数…) 结果: Page 1 is portrait... Page 2 is portrait... Page 3 is landscape... [...] Page 12 is landscape... Page 13 is portrait... 更新:使用’正确’pdfinfo来发现页面旋转… 我的初步答案是pdfinfo的号角.小夜曲X在评论中说,他/她的问题是发现旋转的页面. 好的,现在,这里还有一些尚未被广泛使用的附加信息,而且还没有真正被所有pdfinfo用户所吸收. 正如我所提到的,有两个不同的pdfinfo工具: >作为xpdf-utils包的一部分(在某些平台上也称为xpdf-tools)的那个. Poppler的pdfinfo输出 所以这里是Poppler的pdfinfo命令的输出示例.测试文件是一个2页的PDF,其中第一页是肖像A4,第二页是横向A4格式: kp@mbp:~$ pdfinfo -f 1 -l 2 a4portrait+landscape.pdf Producer: GPL Ghostscript 9.05 CreationDate: Thu Jul 26 14:23:31 2012 ModDate: Thu Jul 26 14:23:31 2012 Tagged: no Form: none Pages: 2 Encrypted: no Page 1 size: 595 x 842 pts (A4) Page 1 rot: 0 Page 2 size: 842 x 595 pts (A4) Page 2 rot: 0 File size: 3100 bytes Optimized: no PDF version: 1.4 你看到这样一句话,说:1:rot:0和Page 1 rot:0? 你是否注意到这样的一行:第一页大小:595 x 842点(A4)和尺寸:842 x 595点(A4)和两者之间的差异? XPDF的pdfinfo输出 现在我们来比较XPDF的pdfinfo的输出: kp@mbp:~$ xpdf-pdfinfo -f 1 -l 2 a4portrait+landscape.pdf Producer: GPL Ghostscript 9.05 CreationDate: Thu Jul 26 14:23:31 2012 ModDate: Thu Jul 26 14:23:31 2012 Tagged: no Pages: 2 Encrypted: no Page 1 size: 595 x 842 pts (A4) Page 2 size: 842 x 595 pts (A4) File size: 3100 bytes Optimized: no PDF version: 1.4 您可能会注意到另外一个区别,如果你仔细看.我不会指着我的手指,现在我会闭嘴… (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |