如何从命令行查询pdf页面大小?


35

对于脚本编写,我需要获取PDF文件的页面尺寸(以mm为单位)。

pdfinfo 只需将其打印在“ pts”中即可,例如:

Page size:      624 x 312 pts

我应该使用什么?

或者无论如何,“ pts”是什么单位-万一我想转换它们...


2
维基百科
马太福音

您想要哪一页的尺寸?合法尺寸的外套?传单尺寸“此页故意空白”?信纸大小为双页?
伊格纳西奥·巴斯克斯

Answers:


31

所使用的“ pts”单位pdfinfo表示PostScript点。甲的PostScript点是在一英寸和每英寸72点的分辨率来定义的:

在1980年代末至1990年代,桌面出版点(也称为PostScript点)取代了传统点,桌面出版点被定义为英寸的72点(1点 = 1⁄72英寸= 25.4⁄72毫米= 0.352) ¯7毫米 [≙0.3528 毫米 ])。

该手册gv包含PostScript点中指定的常见纸张格式列表


1
关于常见的纸张格式:pdfinfo有时会给我纸张格式(如Page size: 595.28 x 841.89 pts (A4))-我想知道它是否对它知道的页面尺寸列表有用吗?
njsg 2012年

2
一个点实际上是0.352777777 ... mm,因此0.3528 mm是一个更接近的近似值。
cjm 2012年

14

不是最简单的方法,但是给定imagemagickunits您也可以使用

$ 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)。


1
当我identify在OS XI上打开PDF时,没有任何输出。
大卫·摩尔

很晚了,但是identify需要ImageMagick
清除了

6

遇到相同的问题,并得出以下解决方案。我没有进入有关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更改为您的文件即可。


1
请注意,此方法返回的值以“点”为单位,而不是以毫米,像素或英寸为单位

0

我使用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进行操作,但我不知道。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.