#author("2025-01-24T04:18:59+09:00","default:Miyashita","Miyashita")
#author("2025-01-24T04:19:25+09:00","default:Miyashita","Miyashita")
*画像PDFの結合 [#s1461234]
**このメモの残そうと思った経緯。。。 [#fee7f15e]
**このメモを残そうと思った経緯。。。 [#fee7f15e]
論文用の図をPDFとして書き出すことはよくあるのだが,2枚のPDF図が別々のソフトウェア(MATLAB と GMT など)で作らねばならない時が多々ある.それをベクター画像のまま結合したい時がちょっと厄介だった.~
imagemagick などでも試してみたのだが,ベクター画像のまま1枚にする方法は不明のまま.~
~

**結合して1ページのPDF画像にまとめる方法 [#r320eca8]
なんだかまわりくどい方法になってしまったが,辿り着いたコマンドは下記の通り.
#codeprettify{{
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画像を縦に連結 [#k63dfba0]
画像ごとに横幅が異なる場合に1枚ごとに綺麗に縁取りすると,連結した時に中央揃えでなくなってしまう.~
そこをなんとかするのが下記.
#codeprettify{{
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