スクリプトの場合、PDFファイル(mm))のページの寸法を取得する必要があります。
pdfinfo
は 'pts'で出力するだけです。例:
Page size: 624 x 312 pts
何を使うべきですか?
とにかく「pts」の単位は何ですか-変換したい場合に備えて...
pdfinfo
で使用される「pts」ユニットは、PostScriptポイントを示します。 PostScriptポイント は、インチと72ドット/インチの解像度で定義されます。
1980年代後半から1990年代にかけて、従来のポイントはデスクトップパブリッシングポイント(PostScriptポイントとも呼ばれる)に取って代わられ、72ポイントからインチ(1ポイント= 1⁄72インチ= 25.4⁄72 mm =0.352¯7mm[≙ 0.3528 mm])。
gv
のマニュアルには、PostScriptポイントで指定された 一般的な用紙フォーマットのリスト が含まれています。
最も簡単な方法ではありませんが、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を使用しました)。
同じ問題に遭遇し、次の解決策にたどり着きました。 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 width height]を意味するので、これは私の非常に下手ですが、これを抽出するための実用的な解決策です:
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}'
2番目のgrep
コマンドは、2つのポイント/インチの値を取得します。あなたはgrepの正規表現をスキップしてawkで直接実行できるとかなり確信していますが、私はそれを理解できませんでした。