Computer/PDF/crop

PDF の余白の切り取り(LaTeX)

LaTeX で元の PDF を切り出して画像として張り付けることで余白の切り取りを実現します。

  1. PDF を1ページごとにバラバラにする
  2. PDF の Bounding Box を求める
  3. 切り取るサイズを決める
  4. LaTeX ファイルを書く
  5. latex -> dvipdfmx で処理する
  6. でき上がった PDF を結合する

の手順でできます。ここでは次のソフトを使うことにします(同じ機能を持つ他のソフトでも大丈夫です)。

1, PDF を1ページごとにバラバラにする

下の方のシェルスクリプトに書き込んでおくとよいでしょう。

$ pdftk input.pdf burst

pg_0001.pdf といったファイルができます。

2, PDF の Bounding Box を求める

$ identify pg_0001.pdf
pg_0001.pdf PDF 622x842 622x842+0+0 PseudoClass 256c 16-bit 511.516kb

622x842 だということがわかります。

3, 切り取るサイズを決める

最終的に LaTeX ファイルには

bb=x1 y1 x2 y2

の形で座標を書き込むので、それぞれの値を決めておきます。

座標

記号意味
x1左下のx座標
y1左下のy座標
x2右上のx座標
y2右上のy座標

4, LaTeX ファイルを書く

ここでは 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 で処理する

$ platex page0001 && dvipdfmx page0001

各ページに対して行うのは面倒なので、自動化するのが簡単です。

シェルスクリプト

#!/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 を結合する

上のシェルスクリプトに書き込んでおくとよいでしょう。

$ pdftk page000?.pdf cat output output.pdf

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2008-09-02 (火) 01:04:58