画像PDFの結合

背景

論文用の図をPDFとして書き出すことはよくあるのだが,2枚のPDF図が別々のソフトウェア(MATLAB と GMT など)で作らねばならない時が多々ある.それをベクター画像のまま結合したい時がちょっと厄介だった.
imagemagick などでも試してみたのだが,ベクター画像のまま1枚にする方法は不明のまま.

結合して1ページのPDF画像にまとめる方法

なんだかまわりくどい方法になってしまったが,辿り着いたコマンドは下記の通り.

pdf_in1="upper.pdf"
pdf_in2="lower.pdf"
pdf_out="output.pdf"

pdftk $pdf_in1 $pdf_in2 cat output tmp1.pdf
pdfxup -x 1 -y 2 -fw 0 -ow -o tmp2.pdf tmp1.pdf 
pdfcrop --margins '0 0 0 0' tmp2.pdf $pdf_out
rm tmp*.pdf

最初の pdftk で2つのPDFを結合したPDFを作る.2つ結合したので2ページ構成になる.
その次に pdfxup で複数ページのPDFを1つのページにまとめる. -fw はフレームの線が残らないようにする.-ow は overwrite の許容.この pdfxup で余白が出てしまうのをどうにかしたかったが,オプションを色々やってみてもダメだったので pdfcrop に任せることにした.
最後の pdfcrop でいい感じに切り取ってくれる.

3つ以上をくっつけて1つにしたい場合も,オプションの意味を理解しつつ同様に行えばOK.

中央揃えで複数枚のPDF画像を縦に連結

画像ごとに横幅が異なる場合に1枚ごとに綺麗に縁取りすると,連結した時に中央揃えでなくなってしまう.
そこをなんとかするのが下記.

pdf1="upper.pdf"
pdf2="lower.pdf"
pdf_out="output.pdf"

# 幅を揃える
pdfjam --outfile tmp1.pdf --paper a4paper --fitpaper true $pdf1
pdfjam --outfile tmp2.pdf --paper a4paper --fitpaper true $pdf2

# PDFを連結
pdftk tmp1.pdf tmp2.pdf cat output tmp3.pdf

# 2ページを1ページに並べる
pdfxup -x 1 -y 2 -fw 0 -ow -o tmp4.pdf tmp3.pdf 

# トリミング
pdfcrop --margins '0 0 0 0' tmp4.pdf $pdf_out

# 一時ファイルを削除
rm tmp*.pdf

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2024-11-22 (Fri) 14:53:07 (62d)