对于脚本编写,我需要获取 PDF 文件的页面尺寸(以毫米为单位)。
pdfinfo
只需将其打印为“pts”,例如:
Page size: 624 x 312 pts
我应该用什么?
或者无论如何单位是“pts” - 如果我想转换它们......
答案1
使用的“pts”单位pdfinfo
表示 PostScript 点。 APostScript 点以英寸为单位,分辨率为每英寸 72 点:
在 20 世纪 80 年代末到 90 年代,传统点被桌面出版点(也称为 PostScript 点)取代,其定义为 72 点/英寸(1 分= 1⁄72 英寸 = 25.4⁄72 毫米 =0.352 ̄7毫米[≙0.3528毫米])。
该手册gv
包含常见纸张格式列表以 PostScript 点指定。
答案2
不是最简单的方法,但给定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)。
答案3
遇到了同样的问题并得出了以下解决方案。我没有深入了解如何构建 pdf 文件的文档,我只是比较了两个具有不同页面大小的空 pdf 文件。
看起来 pdf 在“<<”和“>>”之间嵌入了各种属性。我发现页面大小信息以纯文本形式存在,可以通过简单的正则表达式搜索找到。
这可能适用于所有 pdf,也可能不适用于所有 pdf,但它适用于我从不同来源找到的所有 pdf。
对于 A4 尺寸的页面,相关部分可以类似于以下任何部分:
/MediaBox [0 0 595 842]
/MediaBox[0 0 595 842]
/MediaBox[ 0 0 595.32 841.92]
这意味着 [0 0 宽度高度] 所以这是我的超级蹩脚但有效的解决方案来提取它:
cat test.pdf | egrep -ao "/MediaBox ?\[ ?[0-9]+ [0-9]+ [0-9]+(\.[0-9]+)? [0-9]+(\.[0-9]+)?\]" | head -1
只需将 test.pdf 更改为您的文件即可。
答案4
不幸的是pdfinfo
只给出了第一页的大小。我们可以用来mutool
从所有(或某些选定的)页面获取尺寸。然后使用awk
以毫米为单位显示这些页面尺寸。
mutool info -M file.pdf \
| awk '/\[ [ .[:digit:]]+ \]/ { printf "Page %02d: %9s x %-9s\n", $1, $8*25.4/72 "mm", $9*25.4/72 "mm" }'
Page 01: 841mm x 1189mm
Page 02: 594mm x 841mm
Page 03: 420mm x 594mm
Page 04: 297mm x 420mm
Page 05: 210mm x 297mm
Page 06: 148mm x 210mm
Page 07: 105mm x 148mm
Page 08: 1000mm x 1414mm
Page 09: 707mm x 1000mm
Page 10: 500mm x 707mm
Page 11: 353mm x 500mm
Page 12: 250mm x 353mm
Page 13: 176mm x 250mm
Page 14: 125mm x 176mm
Page 15: 184.15mm x 266.7mm
Page 16: 215.9mm x 355.6mm
Page 17: 215.9mm x 279.4mm
mutool
返回页面大小pts
,定义为国际英寸的 1⁄72。注意1 in = 25.4 mm
。
创建具有不同尺寸页面的 PDF 文件
file.pdf
mutool
是使用pdfjam
以下 bash 脚本创建的
#!/bin/bash
#Creating pdf file with an empty A4 (595 x 842 pts) page.
mutool create -o empty.pdf /dev/null
#Using empty.pdf as template for creating 17 diferents page sizes
for PAPERSIZE in {letter,legal,executive,{a,b}{0..6}}paper; do
pdfjam -q --paper "${PAPERSIZE}" -o "${PAPERSIZE}.pdf" empty.pdf
done
#Merging in file.pdf
mutool merge -o file.pdf *paper.pdf