[[SystemHelp/PDF/crop]] #author("2017-10-04T08:16:54+00:00","","") [[Computer/PDF/crop]] *PDF の余白の切り取り(LaTeX) [#tb8e66e1] LaTeX で元の PDF を切り出して画像として張り付けることで余白の切り取りを実現します。 +PDF を1ページごとにバラバラにする +PDF の Bounding Box を求める +切り取るサイズを決める +LaTeX ファイルを書く +latex -> dvipdfmx で処理する +でき上がった PDF を結合する の手順でできます。ここでは次のソフトを使うことにします(同じ機能を持つ他のソフトでも大丈夫です)。 -pdftk(PDF の分割、結合) -ImageMagick(Bounding Box の計算) -LaTeX -dvipdfmx -シェルスクリプトなど **1, PDF を1ページごとにバラバラにする [#q1f478f5] 下の方のシェルスクリプトに書き込んでおくとよいでしょう。 $ pdftk input.pdf burst pg_0001.pdf といったファイルができます。 **2, PDF の Bounding Box を求める [#h85b010e] $ identify pg_0001.pdf pg_0001.pdf PDF 622x842 622x842+0+0 PseudoClass 256c 16-bit 511.516kb 622x842 だということがわかります。 **3, 切り取るサイズを決める [#w0cc1f36] 最終的に LaTeX ファイルには bb=x1 y1 x2 y2 の形で座標を書き込むので、それぞれの値を決めておきます。 ***座標 [#xa821f65] |~記号|~意味| |x1|左下のx座標| |y1|左下のy座標| |x2|右上のx座標| |y2|右上のy座標| **4, LaTeX ファイルを書く [#n90d69d7] ここでは page0000.tex というファイル名にしておきます。 \documentclass[a5paper]{jsarticle} \usepackage[dvipdfm]{graphicx} \setlength{\hoffset}{1in} \setlength{\voffset}{1in} \setlength{\oddsidemargin}{0pt} \setlength{\topmargin}{0pt} \setlength{\headheight}{0pt} \setlength{\headsep}{0pt} \setlength{\textheight}{597pt} \setlength{\textwidth}{423pt} \setlength{\marginparsep}{0pt} \setlength{\marginparwidth}{0pt} \setlength{\footskip}{0pt} \setlength{\marginparpush}{0pt} \setlength{\hoffset}{0pt} \setlength{\voffset}{0pt} \setlength{\paperwidth}{423pt} \setlength{\paperheight}{597pt} \begin{document} \begin{center} \includegraphics[width=148mm,bb=93 252 529 842]{pg_0000.pdf} %\includegraphics[width=148mm,bb=x1 y1 x2 y2]{pg_0000.pdf} \end{center} \end{document} **5, latex -> dvipdfmx で処理する [#g54afde5] $ platex page0001 && dvipdfmx page0001 各ページに対して行うのは面倒なので、自動化するのが簡単です。 ***シェルスクリプト [#ga78f4dc] #!/bin/sh i=1 while [ $i -le 9 ] do cat page0000.tex | sed s/pg_0000/pg_000$i/g >page000$i.tex platex page000$i && dvipdfmx -p a5 page000$i i=`expr $i + 1` done **6, でき上がった PDF を結合する [#v23141d5] 上のシェルスクリプトに書き込んでおくとよいでしょう。 $ pdftk page000?.pdf cat output output.pdf