4

ImageMagick を使用して各ページの PDF を JPG に変換し、サイズ変更などを行うスクリプトを作成しました。

一部の PDF では、中間の 2 ページが「1 ページ」として見開きになっているため、幅が広くなっています。これを「検出」して、左側と右側を 2 つの別々のページとしてトリミングする方法はありますか?

4

1 に答える 1

4

これにImageMagick(そしてImageMagickのみ)を使用したい場合、それはできません。ImageMagickはPDF入力を単独で処理することはできません。とにかくGhostscriptを使用する必要があるため、ローカルのGhostscriptをインストールしないと機能しません。(ImageMagickによるGhostscriptへのジョブの委任は背後で行われるため、コマンドラインにを追加しない限り、PDF入力をImageMagickにフィードしている間は必ずしもGhostscriptが機能しているとは限りません...-verbose

あなたの質問は2つの部分に分かれています:

  • 「中央の見開きのように、非常に広いページを「検出」する方法はありますか?」
  • 「中央の見開きから左右の部分を2つの別々のページとして切り抜く方法はありますか?」

ページサイズを検出する

ImageMagickを使用identifyして、PDFのページサイズを検出できます。

最も単純なコマンドを実行するだけです。

multipage.pdfを識別します

出力はs.thになります。お気に入り

multipage.pdf[0] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000
multipage.pdf[1] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000
multipage.pdf[2] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000
multipage.pdf[3] PDF 595x792 595x792+0+0 16-bit Bilevel DirectClass 59.5KB 0.000u 0:00.000

出力のページ数は0ベースです。つまり[0]、最初のページ、[1]2番目のページなどを示します。

出力をもう少しうまくカスタマイズするには、次のようにします。

identify -format '%f, page %s + 1: %W x %H\n' multipage.pdf

取得します

multipage.pdf, page  0 + 1: 595 x 792
multipage.pdf, page  1 + 1: 595 x 792
multipage.pdf, page  2 + 1: 595 x 792
multipage.pdf, page  3 + 1: 595 x 792

見開きページの場合、それぞれの出力は1190 x 792または同様である必要があります。

ただし、注意が必要です。PDFファイルのページサイズのクエリにImageMagickを使用すると、非常に時間がかかります。そのため、このサブタスクには別のツールを使用することをお勧めしますpdfinfo。これは数桁速くなります。

pdfinfo -f 1 -l 1000 -box multipage.pdf

出力します

Pages:          4
Page    1 size: 595 x 792 pts
Page    1 rot:  0
Page    2 size: 595 x 792 pts
Page    2 rot:  0
Page    3 size: 595 x 792 pts
Page    3 rot:  0
Page    4 size: 595 x 792 pts
Page    4 rot:  0

ページのArtBox、TrimBox、BleedBox、およびCropBoxの値に関する追加情報が必要な場合は-box、コマンドラインに追加するだけです。

私が言ったように:pdfinfoImageMagickよりもPDFのページサイズの識別が大幅に高速です。仕事に適したツールを使用してください。

ページの左右の部分を切り抜く

大きな見開きページを特定したので、次のいずれかの方法(Ghostscriptに基づく)を使用して、中央のページを分割できます。

上記のリンクで説明されている方法を採用すると、元のベクトルとフォントの情報がすべて含まれている2つのPDFページが作成されます。

または、ImageMagickを使用することもできます。'double-spread'ページのサイズがA4(595x842 pt)に基づく1190x842 ptであり[15]、元のPDF内のページ16(ImageMagickに変換)であると仮定すると、convertコマンドはs.thである可能性があります。お気に入り:

convert  multipage.pdf[15]  -crop 595x842+0+0    page16-left.png
convert  multipage.pdf[15]  -crop 595x842+595+0  page16-right.png

その結果、2つのラスターイメージが得られます。

于 2012-10-05T16:19:47.573 に答える