スクリプトを作成するには、PDFファイルのページサイズ(mm)を取得する必要があります。
pdfinfo
'pts'で出力するだけです。例:
Page size: 624 x 312 pts
何を使うべきですか?
または、とにかく「pts」とは何ですか-それらを変換したい場合...
スクリプトを作成するには、PDFファイルのページサイズ(mm)を取得する必要があります。
pdfinfo
'pts'で出力するだけです。例:
Page size: 624 x 312 pts
何を使うべきですか?
または、とにかく「pts」とは何ですか-それらを変換したい場合...
回答:
によって使用される「pts」ユニットpdfinfo
は、PostScriptポイントを示します。PostScriptのポイントはインチ及び72インチあたりのドットの解像度で定義されています。
1980年代後半から1990年代にかけて、従来のポイントはデスクトップパブリッシングポイント(PostScriptポイントとも呼ばれます)に置き換わりました。これは、72ポイントからインチ(1ポイント = 1⁄72インチ= 25.4⁄72 mm = 0.352 ¯7mm [≙0.3528 mm ])。
マニュアルに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 mmです(これにはA4 PDFを使用しました)。
identify
OS XIのPDFは出力を得ることはありません。
identify
ImageMagick が必要
同じ問題に出くわし、次の解決策に至りました。pdfファイルがどのように構築されるかのドキュメントには入りませんでしたが、ページサイズが異なる2つの空の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をファイルに変更するだけです。
私は直接mmを計算するためにmaxchlepzigs answerを使用しました:
$ pdfinfo test.pdf | grep "Page size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=0.3528 '{print $1*x}'
これはAlex Knaufsの回答でも機能しますが、identifyはpdfinfoよりもはるかに時間がかかり、imagemagickが必要です*.pdf
。
$ identify -verbose some.pdf | grep "Print size" | grep -Eo '[-+]?[0-9]*\.?[0-9]+' | awk -v x=25.4 '{print $1*x}'
2番目のgrep
コマンドは、2つのポイント/インチの値を取得します。grepの正規表現をスキップしてawkで直接実行できると確信していますが、理解できませんでした。