
スクリプトを作成するには、PDFファイルのページサイズをミリメートル単位で取得する必要があります。
pdfinfo
たとえば、「pts」として印刷します。
Page size: 624 x 312 pts
何を使うべきですか?
あるいは、とにかく単位は「pts」です。変換したい場合...
答え1
使用される「pts」単位はpdfinfo
PostScriptポイントを表します。 ㅏPostScriptドットインチ単位の解像度は、1インチあたり72ドットです。
1980年代後半と1990年代に伝統的なポイントは、72ドット/インチで定義された卓上出版ポイント(ポストスクリプトポイントとも呼ばれる)に置き換えられました(1点= 1/72インチ = 25.4/72mm =0.352 ̄7mm[≙0.3528mm])。
このマニュアルには以下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.9mmであることを意味します(私はA4 PDFを使用しています)。
答え3
同じ問題が発生し、次の解決策を考え出しました。私はpdfファイルを作成する方法についてのドキュメントを扱っておらず、ページサイズが異なる2つの空の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
次のbashスクリプトを使用してpdfjam
生成されました。
#!/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