コマンドラインでPDFページサイズを照会する方法は?

コマンドラインでPDFページサイズを照会する方法は?

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

pdfinfoたとえば、「pts」として印刷します。

Page size:      624 x 312 pts

何を使うべきですか?

あるいは、とにかく単位は「pts」です。変換したい場合...

答え1

使用される「pts」単位はpdfinfoPostScriptポイントを表します。 ㅏPostScriptドットインチ単位の解像度は、1インチあたり72ドットです。

1980年代後半と1990年代に伝統的なポイントは、72ドット/インチで定義された卓上出版ポイント(ポストスクリプトポイントとも呼ばれる)に置き換えられました(1点= 1/72インチ = 25.4/72mm =0.352 ̄7mm[≙0.3528mm])。

このマニュアルには以下gvが含まれています。一般的な用紙形式のリストPostScript ドットで指定されます。

答え2

最も簡単な方法ではありませんが、与えられた場合は次のものを使用することもできます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.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.pdfmutool次の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

関連情報