コマンドラインからpdfページサイズを照会するにはどうすればよいですか?


35

スクリプトを作成するには、PDFファイルのページサイズ(mm)を取得する必要があります。

pdfinfo 'pts'で出力するだけです。例:

Page size:      624 x 312 pts

何を使うべきですか?

または、とにかく「pts」とは何ですか-それらを変換したい場合...


2
ウィキペディアのポイント
マット

どのページのサイズが必要ですか?リーガルサイズのアウターカバー?リーフレットのサイズは「このページは意図的に空白」ですか?レターサイズのダブルページ?
イグナシオバスケス-アブラムス

回答:


31

によって使用される「pts」ユニットpdfinfoは、PostScriptポイントを示します。PostScriptのポイントはインチ及び72インチあたりのドットの解像度で定義されています。

1980年代後半から1990年代にかけて、従来のポイントはデスクトップパブリッシングポイント(PostScriptポイントとも呼ばれます)に置き換わりました。これは、72ポイントからインチ(1ポイント = 1⁄72インチ= 25.4⁄72 mm = 0.352 ¯7mm [≙0.3528 mm ])。

マニュアルにgv PostScriptポイントで指定された一般的な用紙形式のリストが含まれています


1
一般的な紙のフォーマットで:pdfinfo時々紙のフォーマット(のようなPage size: 595.28 x 841.89 pts (A4))をくれます—それが知っているページサイズのリストのためにそうするのだろうか?
njsg

2
ポイントは実際には0.352777777 ... mmなので、0.3528 mmはより近い近似値です。
cjm

15

最も簡単な方法ではありませんが、与えられ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 mmです(これにはA4 PDFを使用しました)。


1
とき私は、identifyOS XIのPDFは出力を得ることはありません。
デビッドモールズ

非常に遅いが、identifyImageMagick が必要
1

6

同じ問題に出くわし、次の解決策に至りました。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をファイルに変更するだけです。


1
このことにより、返される値は、「ポイント」ではないミリ、ピクセル単位またはインチであることに注意してください
defuzed

0

私は直接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で直接実行できると確信していますが、理解できませんでした。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.