PDF の割り付け(pdfpages)

pdfpages** は、すでにある PDF ファイルのページを、いま組んでいる文書の中へそのまま差し込むためのパッケージです(作者は Andreas Matthias)。表紙や署名済みの用紙を頭に付ける、別々の PDF をつなげて 1 冊の学位論文にする、スライドを 2×2 に並べて配布資料にする — そうした作業を \includegraphics のような余白の崩れなしにこなします。中心となる命令は **\includepdf[⟨オプション⟩]{ファイル.pdf}** ひとつです。

基本の使い方

プリアンブルで \usepackage{pdfpages} を読み込み、本文で \includepdf を呼びます。最小の例は次の通りです。これだけで、cover.pdf の全ページが用紙いっぱいに(余白なしで)差し込まれます。引数のファイル名に 空白を含めてはいけません

document.tex
\documentclass{article}
\usepackage{pdfpages}
\begin{document}

% 本文…
\includepdf[pages=-]{cover.pdf}
% …続きの本文

\end{document}

\includepdf は内部で graphicx パッケージの \includegraphics を呼び出します。そのため、pdfpages 自身が解釈しないオプション(後述の trimclipscale など)は、そのまま \includegraphics へ渡されます。標準では各ページは用紙に合わせて 自動的に拡大・縮小 されます。

対応エンジンは公式マニュアル(v0.6g)に pdfTeX・VTeX・XeTeX・LuaTeX・pTeX と明記されています。つまり pdfLaTeX・LuaLaTeX・XeLaTeX・(up)pLaTeX のいずれでも使えます。ただし PDF を直接出力するエンジンが前提で、**DVI を出力する経路では PDF を取り込めず、pdfpages は代わりに空白ページを挿入します**。日本語で広く使う pLaTeX+dvipdfmx の構成では、ドライバとして dvipdfmx が効くように設定しておく必要があります(次章)。

どのページを入れるか(pages)

最も重要なオプションが **pages** です。差し込むページとその順序を、コンマ区切りのリストで指定します。既定値は pages=1(先頭ページのみ)なので、複数ページを入れたいときは必ず指定します。

書き方効果挿入されるページ
pages=-全ページを順番に差し込む PDF のすべてのページ
pages={1,3,5}指定したページだけ1・3・5 ページ目
pages={2-8}範囲2 ページ目から 8 ページ目まで
pages={3,{},15}空白ページを挟む({}3 ページ目・白ページ・15 ページ目
pages=last-1逆順末尾から先頭へ(last は最終ページ)
pages={1-3,5,{},7}組み合わせ範囲・単独・白・単独を混在

範囲は ⟨m⟩-⟨n⟩ と書きます。m を省くと先頭ページ、n を省くと最終ページとみなされます。だから pages=- は「最初から最後まで」、すなわち全ページの意味になります。最終ページはキーワード last でも指せます(範囲の中でのみ使えます)。空のページは {} を置くだけです — 表紙と本文の間に白ページを 1 枚入れたい、といったときに便利です。

latex
% 表紙の次に白ページ、そのあと本文 1–20 ページ
\includepdf[pages={1,{},2-21}]{thesis-cover.pdf}

% 全ページを逆順で
\includepdf[pages=last-1]{scan.pdf}

主なオプション

すべてのオプションは ⟨キー⟩=⟨値⟩ の形で、\includepdf の角括弧の中にコンマで並べます。真偽値のオプション(frame など)は値を省くと「真」になります。よく使うものを挙げます。

オプション働き(既定値)使いどころ
nup1 枚の用紙に複数ページを並べる(面付け)。nup=2x2 で横 2×縦 2。既定 1x1配布資料・縮小印刷
frame各ページに枠線を付ける(既定 falseページの境界を見せる
delta並べたページの間隔。delta=⟨横⟩ ⟨縦⟩(既定 0 0nup のページ間に余白
landscape用紙を 90° 回転して横向きに(既定 false横長 PDF・冊子
scale倍率。graphicx へ渡る(noautoscale と併用)拡大率を手で決める
fitpaper出力用紙を取り込む PDF の寸法に合わせる(既定 false元の判型を保つ
offsetページ位置をずらす。offset=⟨横⟩ ⟨縦⟩(既定 0 0綴じ代の調整
pagecommand各ページで実行する命令(既定 \thispagestyle{empty}ページ番号・ヘッダを足す
link / linkname挿入ページをリンク先にする/その名前を変える(既定 falseクリックで飛べるようにする

nup(面付け, n-up imposition)** は、複数の論理ページを 1 枚の用紙に敷き詰める指定です。構文は nup=⟨横の枚数⟩x⟨縦の枚数⟩。標準では行方向(横)に詰めていきますが、column を付けると列方向(縦)優先になり、columnstrict は最終ページまで厳密に列優先で並べます。ページ間に隙間を空けたいときは delta、枠線で区切りたいときは frame を併せて使います。landscape用紙だけ を回転させる点に注意してください(中身のページ自体を回したいときは angle=90)。

pagecommand** は、差し込む各ページの上で実行される LaTeX 命令を指定します。既定は pagecommand={\thispagestyle{empty}}(ページ番号などを出さない)。逆にここを pagecommand={\thispagestyle{plain}} にすれば、取り込んだ PDF にも文書のページ番号を振れます。ヘッダやフッタ、透かしを重ねたいときの入口でもあります。

なお、\includegraphics 由来の **trimclip** も使えます(pdfpages が知らないオプションは \includegraphics に渡されるため)。取り込むページの上下にあるヘッダ・フッタを切り落としたいときに便利です。例:\includepdf[pages=-, trim=0 2cm 0 2cm, clip]{paper.pdf}

実例

配布資料を作る — スライドの PDF を 1 枚に 4 ページ(2×2)並べ、各ページを枠で囲み、ページ間に余白を入れます。

latex
\includepdf[pages=-, nup=2x2, frame, delta=5mm 5mm]{slides.pdf}

複数の PDF をつなげる — 別々のファイルを 1 つの文書にまとめるには **\includepdfmerge** を使います。引数は「ファイル名, ページ指定, ファイル名, ページ指定, …」の並び。ページ指定は pages と同じ書式で、省くとそのファイルの先頭ページだけが入ります。

latex
% a.pdf の 1–2 ページと b.pdf の 3 ページ目をこの順に
\includepdfmerge{a.pdf, 1-2, b.pdf, 3}

% 学位論文を別々の章 PDF から組み立てる
\includepdfmerge{frontmatter.pdf, -, chap1.pdf, -, chap2.pdf, -}

\includepdfmerge\includepdf と同じオプションを受け付けます(ただし pages の代わりに上のページ指定を使います)。同じオプションを毎回書きたくなければ、**\includepdfset{⟨オプション⟩}** でまとめて既定値を設定できます。個別の \includepdf に書いたオプションが優先されます。

冊子(ブックレット)に面付けする — 用紙を二つ折りにして綴じる小冊子は、ページを折り順に並べ替える必要があります。pdfpages には **signature** オプションがあり、4 の倍数を渡すと折丁(signature)単位でページを並べ替え、自動的に nup=2x1 で配置します。簡易には pages=-, nup=1x2, landscape で 2 ページを横並びにする方法もありますが、折り順の並べ替えまでは行いません。本格的な小冊子組版には **booklet** パッケージも使えます。

latex
% 縦長の文書を 8 ページ折丁の冊子に
\includepdf[pages=-, signature=8, landscape]{booklet-doc.pdf}

日本語・ドライバの注意

pTeX 系(pLaTeX / upLaTeX)への対応は pdfpages v0.5a 以降に入りました。これらは DVI を出力し、dvipdfmx で PDF にする経路なので、PDF の取り込みは **dvipdfmx が担当** します。グラフィックスのドライバが正しく選ばれていれば \includepdf はそのまま動きます。うまく取り込めず白ページになる場合は、ドライバ指定を見直してください(クラスやグローバルオプションで dvipdfmx を渡す、\usepackage[dvipdfmx]{graphicx} を明示するなど)。

ひとつ覚えておきたい挙動として、取り込まれるのは各ページの 内容(見た目)だけ で、元 PDF の中のリンクや注釈は失われます。リンクを残したい場合は pax パッケージなどの補助が要ります。また、ページの背景色を \pagecolor で変えるときは、最初の \pagecolor\usepackage{pdfpages} より に置く必要があります。