ImageMagick を使用して各ページの PDF を JPG に変換し、サイズ変更などを行うスクリプトを作成しました。
一部の PDF では、中間の 2 ページが「1 ページ」として見開きになっているため、幅が広くなっています。これを「検出」して、左側と右側を 2 つの別々のページとしてトリミングする方法はありますか?
ImageMagick を使用して各ページの PDF を JPG に変換し、サイズ変更などを行うスクリプトを作成しました。
一部の PDF では、中間の 2 ページが「1 ページ」として見開きになっているため、幅が広くなっています。これを「検出」して、左側と右側を 2 つの別々のページとしてトリミングする方法はありますか?
これにImageMagick(そしてImageMagickのみ)を使用したい場合、それはできません。ImageMagickはPDF入力を単独で処理することはできません。とにかくGhostscriptを使用する必要があるため、ローカルのGhostscriptをインストールしないと機能しません。(ImageMagickによるGhostscriptへのジョブの委任は背後で行われるため、コマンドラインにを追加しない限り、PDF入力をImageMagickにフィードしている間は必ずしもGhostscriptが機能しているとは限りません...)-verbose
あなたの質問は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
、コマンドラインに追加するだけです。
私が言ったように:pdfinfo
ImageMagickよりも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つのラスターイメージが得られます。