对于脚本编写,我需要获取PDF文件的页面尺寸(以mm为单位)。
pdfinfo
只需将其打印在“ pts”中即可,例如:
Page size: 624 x 312 pts
我应该使用什么?
或者无论如何,“ pts”是什么单位-万一我想转换它们...
对于脚本编写,我需要获取PDF文件的页面尺寸(以mm为单位)。
pdfinfo
只需将其打印在“ pts”中即可,例如:
Page size: 624 x 312 pts
我应该使用什么?
或者无论如何,“ pts”是什么单位-万一我想转换它们...
Answers:
所使用的“ pts”单位pdfinfo
表示PostScript点。甲的PostScript点是在一英寸和每英寸72点的分辨率来定义的:
在1980年代末至1990年代,桌面出版点(也称为PostScript点)取代了传统点,桌面出版点被定义为英寸的72点(1点 = 1⁄72英寸= 25.4⁄72毫米= 0.352) ¯7毫米 [≙0.3528 毫米 ])。
该手册gv
包含PostScript点中指定的常见纸张格式列表。
pdfinfo
有时会给我纸张格式(如Page size: 595.28 x 841.89 pts (A4)
)-我想知道它是否对它知道的页面尺寸列表有用吗?
不是最简单的方法,但是给定imagemagick
,units
您也可以使用
$ identify -verbose some.pdf | grep "Print size"
Print size: 8.26389x11.6944
查找以英寸为单位的页面大小(如果PDF使用不同的尺寸,则可能会产生多个结果),然后转换数字,如下所示:
$ units -t '8.26389 inch' 'mm'
209.90281
这意味着8.26英寸为209.9毫米(为此我使用了A4 PDF)。
identify
在OS XI上打开PDF时,没有任何输出。
identify
需要ImageMagick
遇到相同的问题,并得出以下解决方案。我没有进入有关pdf文件如何构造的文档,我只是比较了两个页面大小不同的空pdf文件。
看起来pdf具有嵌入在“ <<”和“ >>”之间的各种属性。我发现页面大小信息以纯文本形式存在,可以通过简单的正则表达式搜索找到。
这可能适用于所有pdf,也可能不适用,但我可以从不同的来源找到它。
对于A4尺寸的页面,相关部分可能看起来像其中任何一个:
/MediaBox [0 0 595 842]
/MediaBox[0 0 595 842]
/MediaBox[ 0 0 595.32 841.92]
这表示[0 0 width height],所以这是我的super脚,但提取此内容的有效解决方案:
cat test.pdf | egrep -ao "/MediaBox ?\[ ?[0-9]+ [0-9]+ [0-9]+(\.[0-9]+)? [0-9]+(\.[0-9]+)?\]" | head -1
只需将test.pdf更改为您的文件即可。
我使用maxchlepzigs答案直接计算mm:
$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'
这也适用于Alex Knaufs的答案,但是识别比pdfinfo花费更长的时间,并且需要imagemagick,尽管这样做的好处是您可以将其用于多个文件(例如,通过cd进入目录并使用*.pdf
):
$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'
第二个grep
命令获取两个点/英寸值。我相当确定您可以跳过grep regex并直接使用awk进行操作,但我不知道。