GhostScriptを使用して(PDFドキュメントページなどから)ページサイズを取得することは可能ですか?「bbox」デバイスを見たことがありますが、PDFページのTrimBox(またはCropBox)ではなく、バウンディングボックス(ページごとに異なります)を返します。(ページボックスの詳細については、 http: //www.prepressure.com/pdf/basics/page_boxesを参照してください。)他の可能性はありますか?
3 に答える
残念ながら、Ghostscriptを使用して、PDF内の(おそらく異なる)ページサイズ(または*ボックス)を取得するのは簡単ではないようです。
しかし、他の可能性も求めたので、各ページ(および埋め込まれた{Trim、Media、Crop、Bleed}ボックスのそれぞれ)のメディアサイズを決定するためのかなり信頼できる方法は、コマンドラインツールpdfinfo.exeです。このユーティリティは、 http: //www.foolabs.com/xpdf/download.htmlのXPDFツールの一部です。「-box」パラメータを使用してツールを実行し、「-f 3」で3ページから開始し、「-l8」で8ページで処理を停止するように指示できます。
出力例:
C:\ downloads> pdfinfo -box -f 1 -l 3 _IXUS_850IS_ADVCUG_EN.pdf 作成者:FrameMaker 6.0 プロデューサー:Acrobat Distiller 5.0.5(Windows) CreationDate:08/17/06 16:43:06 ModDate:08/22/06 12:20:24 タグ付き:いいえ ページ数:146 暗号化:いいえ ページ1サイズ:419.535x297.644ポイント ページ2サイズ:297.646x419.524ポイント ページ3サイズ:297.646x419.524ポイント Page 1 MediaBox:0.00 0.00 595.00 842.00 Page 1 CropBox:87.25 430.36 506.79 728.00 Page 1 BleedBox:87.25 430.36 506.79 728.00 Page 1 TrimBox:87.25 430.36 506.79 728.00 Page 1 ArtBox:87.25 430.36 506.79 728.00 Page 2 MediaBox:0.00 0.00 595.00 842.00 Page 2 CropBox:148.17 210.76 445.81 630.28 Page 2 BleedBox:148.17 210.76 445.81 630.28 Page 2 TrimBox:148.17 210.76 445.81 630.28 Page 2 ArtBox:148.17 210.76 445.81 630.28 Page 3 MediaBox:0.00 0.00 595.00 842.00 Page 3 CropBox:148.17 210.76 445.81 630.28 Page 3 BleedBox:148.17 210.76 445.81 630.28 Page 3 TrimBox:148.17 210.76 445.81 630.28 Page 3 ArtBox:148.17 210.76 445.81 630.28 ファイルサイズ:6888764バイト 最適化:はい PDF版:1.4
その間、私は別の方法を見つけました。これはGhostscriptのみを使用します(必要に応じて)。追加のサードパーティユーティリティは必要ありません。
このメソッドは、PostScriptで記述され、Ghostscriptのソースコードとともに出荷される小さなヘルパープログラムを使用します。toolbinサブディレクトリでファイルを探しpdf_info.ps
ます。
含まれているコメントは、使用されているフォント、使用されているメディアサイズを一覧表示するために、このように実行する必要があることを示しています
gswin32c -dNODISPLAY ^
-q ^
-sFile=____.pdf ^
[-dDumpMediaSizes] ^
[-dDumpFontsUsed [-dShowEmbeddedFonts]] ^
toolbin/pdf_info.ps
メディアサイズのみを要求するコマンドラインパラメーターを使用して、ローカルのサンプルファイルで実行しました(使用されるフォントは要求しません)。結果は次のとおりです。
C:\> gswin32c ^
-dNODISPLAY ^
-q ^
-sFile=c:\downloads\_IXUS_850IS_ADVCUG_EN.pdf ^
-dDumpMediaSizes ^
C:/gs8.71/lib/pdf_info.ps
c:\downloads\_IXUS_850IS_ADVCUG_EN.pdf has 146 pages.
Creator: FrameMaker 6.0
Producer: Acrobat Distiller 5.0.5 (Windows)
CreationDate: D:20060817164306Z
ModDate: D:20060822122024+02'00'
Page 1 MediaBox: [ 595 842 ] CropBox: [ 419.535 297.644 ]
Page 2 MediaBox: [ 595 842 ] CropBox: [ 297.646 419.524 ]
Page 3 MediaBox: [ 595 842 ] CropBox: [ 297.646 419.524 ]
Page 4 MediaBox: [ 595 842 ] CropBox: [ 297.646 419.524 ]
[....]
純粋なGhostScriptPostScriptのソリューションであり、追加のスクリプトは必要ありません。
gs -dQUIET -sFileName=path/to/file.pdf -c "FileName (r) file runpdfbegin 1 1 pdfpagecount {pdfgetpage /MediaBox get {=print ( ) print} forall (\n) print} for quit"
このコマンドは、PDFの各ページのMediaBoxを1行に4つの数字として出力します。3ページのPDFからの例:
0 0 595 841
0 0 595 841
0 0 595 841
コマンドの内訳は次のとおりです。
FileName (r) file % open file given by -sFileName
runpdfbegin % open file as pdf
1 1 pdfpagecount { % for each page index
pdfgetpage % get pdf page properties (pushes a dict)
/MediaBox get % get MediaBox value from dict (pushes an array of numbers)
{ % for every array element
=print % print element value
( ) print % print single space
} forall
(\n) print % print new line
} for
quit % quit interpreter. Not necessary if you pass -dBATCH to gs
に置き換え/MediaBox
て/CropBox
、クロップボックスを取得します。