Yamamoto's Laboratory
表紙
PDF 挿入
公開情報
古い情報

LaTeXPDF 挿入ドキュメントに PDF ファイルを挿入

LaTeX のドキュメンに外部のファイルの PDF を取り込み,表示する方法を示します.

目次


はじめに

近頃,最も汎用的なドキュメントのフォーマットは Portable Document Format (PDF) です.このフォーマットは,多くのアプリケーションが作成する最終形態となっています.もちろん,LaTeX の最終的な出力も PDF が主流です.また,ドキュメントのみならず,図やスキャンデータも PDF が使われます.LaTeX ドキュメントに図を挿入する場合,元の図は pdf が望ましいです.pdf ファイルの内容が図の場合は この \includegraphics を使います.図の挿入には \includegraphics が使いやすいですが,図では無くドキュメントの場合は,ここで述べる \pdfpages が便利です.

PDF 挿入の基本

挿入方法

パッケージ pdfpgaes を使うことで,PDF ファイルを LaTeX ドキュメントを挿入することができます.これを使うためのには,ソースファイルに以下を記述します.

  1. 最初に記述する \documentclass のオプションに,dvipdfmx を指定する.
  2. pdfpagesを使うために,\usepackage{pdfpages} を記述する.
  3. PDF を挿入する場所に,\includepdf[オプション]{PDF へのパス} を記述する.

これをまとめると,LaTeX のソース内での記述は以下のとおりです.

% -*- coding:utf-8 -*-
\documentclass[その他オプション,dvipdfmx]{ドキュメントクラス}
\usepackage{pdfpages}
%
%==========================================
% ドキュメント開始
%==========================================
\begin{document}

本文を記述する

\includepdf[オプション]{PDF へのパス}

本文を記述する

\end{document}

単純な例

単純ですが,PDF 挿入の例を示します.これでは,コンピューター以前の計算機,あるいは初期のコンピューターが書かれた PDFファイル「early_stage.pdf」を LaTeX に取り込みます.このファイルのままだと不要な余白が含まれますので,まずは余白を取り除いきます (詳細は「美しく仕上げるために」).PDF の取り込みを行う LaTeX のソースは以下のとおりです.

% -*- coding:utf-8 -*-
\documentclass[10pt,a4paper,dvipdfmx]{jarticle}
\usepackage{pdfpages}             % 複数ページの pdf
%
%====================================================
% ドキュメント開始
%====================================================
\begin{document}
\title{コンピューターの歴史}
\author{山本昌志}
\date{\today}
\maketitle
% ---- pdf 挿入 ----
\includepdf[pages=-,  noautoscale=true, scale=0.9, pagecommand={}]{../../pdf/ComputerGenesis/early_stage.pdf}
\end{document}

14行目のコマンド \includepdf のオプション「pages=-」は,出力する PDF ページの指定です.すべてのページを出力します.ふたつのオプション「noautoscale=true, scale=0.9」で元の PDF を 0.9 倍しています.次のオプションは「pagecommand={}」は,PDF の挿入前に実行する LaTeX のコマンドを記述します.ここでは,LaTeX のコマンドはありませんが,このようにするとページ番号が出力されます.これをコンパイルすると,以下のドキュメントが得られます.p.2 -- p.5 が挿入された PDF です.

図1: ページ 1

図2: ページ 2

図3: ページ 3

図4: ページ 4

図5: ページ 5

美しく仕上げるために

PDF ファイルを LaTeX に読み込みきれいに仕上げるためには,いくつかのコツが有ります.

  • もとの PDF の余白を切り取ります.元のファイルに無駄な余白があると,LaTeX でもその余白が取り込まれます.すると,取り込んだ PDF に無駄な余白が生じ,元の内容 (図や文章) が小さくなります.PDF の余白を切り取る「pdfcrop」を使うとよいでしょう.もちろん,もとのドキュメントの出力サイズも含めたい場合は余白を切り取りません.

pdfpages の詳細

パッケージ読み込み

パッケージ pdfpages は以下のコマンドで読み込みます.

\usepackage[<options>]{pdfpages}

読み込みのオプションを以下に示します.

final
デフォルトのオプションです.指定されたページの PDF を挿入します.
draft
PDF ファイルのページを挿入しません.その代わり,ボックスとファイル名が挿入されます.
demo
PDF ファイルのページを挿入しません.その代わり,空ページが挿入されます.
nodemo
'demo' を無効にします.
enable-survey
Activates survey functionalities. (experimental, subject to change).何のことか? 不明.

PDF 読み込みコマンド (\includepdf)

LaTeX 内でコマンド \includepdf を使うと,PDF ファイルを読み込み表示することができます.その文法は,以下のとおりです.

\includepdf[<key=val>]{<filename>}

<key=val> オプションの指定です.オプションは「キー = 値」で指定します.コンマで区切ることにより複数の指定が可能です.<filename>は,取り込む PDF ファイルのパスを指定します.

以下,オプションについて説明します.

メインオプション

pagesページ指定pages=1
挿入する PDF ファイルのページ指定です.ページ番号「page={3,5,6,8}」やページ番号の範囲「page={4-9}」,または任意の組み合わせを含むコンマ区切りのリストも可能です.空のページを挿入するには,{} とします.例えば,「pages={3,{},8-11,15}」とすると,「p.3, 空ページ, p.8, p.9, p.11, p.15」が挿入されます.「pages={-10}」とすると PDF の最初のページから p.10 まで挿入されます.「pages={3-}」は p.3 から最後のページが,「pages={-}」とすると全てのページが挿入されます.「pages=last-1」とすると,逆順に全てのページが出力されます.デフォルトは,「pages=1」です.
nup論理ページの指定nup = 1x1
LaTeX出力の各々のページに,外部ファイル (PDF) の複数のページ (論理ページ) を挿入します.文法は,nup =<xnup>x<ynup> です.<xnup> と <ynup> は,LaTeX 出力の各ページに配置される水平方向と垂直方向の外部ファイル(PDF)のページ数です.
landscape90度回転landscape=false
外部ファイル (PDF) は90度回転して挿入されます.複数のページを挿入する場合オプション(nup)では,効果がありません.複数ページを回転させるには,angle オプション (例: angle=90)を使用します.true または false,または true と等価な値なし) のいずれかです.

レイアウトオプション

delta
論理ページ間に水平と垂直のスペースを入れます.引数はスペースで区切られた2つの数値です.デフォルトは,「delta=0 0」です.
offset
挿入されたページの原点を変更します.引数はスペースで区切られた2個の数値です.「oneside」(論理ページが1列) の文書では,正の値はページを右(x)に,上(y)にそれぞれ移動します.「twoside」(論理ページが2列) の文書では,正の値がページをそれぞれ外側と上に移動します.デフォルトは,「offset=0 0」 です.
frame
各論理ページの周りにフレーム (線) を描く/描かないを指定で,'true ' または 'false' を指定します.線の太さは,\fboxfule で決められています.デフォルトは,「frame=false」です.
column
論理ページの並ぶ方法 (順序) を決めます.「column=false」は図のように,「column=false」あるいは「column」は図に示すように論理ページの並びます. デフォルトは「column=false」です.
columnstrict
論理ページがページ全体を満たさない場合,デフォルトでは最後のページは厳密な「列メジャー」レイアウトに設定されません.columnstrictオプションは,最後のページに対して厳密な「列メジャー」レイアウトを強制します.'true' または 'false' (または 'true' と同等の値なし) のいずれかです.(デフォルト: columnstrict = false)

図6: columnstrict オプション

pagecommand
LaTeX コマンドを挿入します.全てのページに挿入されます.デフォルトは,「pagecommand={\thispagestyle{empty}}」です.
openright
このオプションは,空のページを最初の論理ページの前に置きます.nup=2x1,nup=2x2 などと組み合わせて,これは最初のページが右側にあります.空のページが最初のページの前に挿入されている場合,pages オプションでも同じ効果が得られます. 「true」または「false」のいずれか (または値なし,これは 'true'と等価です).(デフォルト:openright = false)
noautoscale
挿入する PDF を自動的に拡大/縮小するオプションの設定です.デフォルトは「noautoscale=false」です.この場合,PDF を自動的に拡大/縮小し,出力ページにフィットします.「noautoscale=true, scale=0.7」とすることで,LaTeX は挿入する PDF を 0.7 倍して出力します.
fitpaper
挿入する PDF のサイズを出力ページにフィットするように調整する/しないを指定します. 'true' または 'false' (値なしは 'true') のいずれかです.デフォルトは「fitpaper=false」です.

様々なテクニック

ここでは,pdfpages.sty を使う場合の様々なテクニックを紹介します.

pdf 挿入前の改ページの抑制

includepdf で pdf を挿入すると,挿入される pdf の前に改ページが挿入されます.これを防ぐためには,minipage 環境を使います.具体的には,以下の通りです.

\begin{minipage}{\textwidth}
  \includepdf[pages=表示ページ, scale=スケール]{pdf へのパス}
\end{minipage}

minipage 環境で囲む pdf は1ページのみです.複数のページを指定すると重ねて表示されます.通常は,以下のように記述します.

\begin{minipage}{\textwidth}
\includepdf[pages=1, scale=0.7, pagecommand={}]{figure/jobs.pdf}
\end{minipage}
\includepdf[pages=2-, scale=0.7, pagecommand={}]{figure/jobs.pdf}

最初のページのみ minipage 環境で囲まれています.すると改ページされなくなります.結果は,以下のとおりです.

図7: page 1

図8: page 2

図9: page 2

エラーが起きた時

  1. pdf が出力されない.エラーメッセージが以下の場合:
    Package pdfpages Warning: I cannot determine the number of pages of the
    (pdfpages)    included document, because we are running in
    (pdfpages)    DVI mode. 
    (pdfpages)    You can use the option `lastpage' to give me a hint.
    の対処法法.プリアンブルを「\documentclass[10pt, a4paper, dvipdfmx]{jarticle}」のようにする.

ページ作成情報

参考資料

  1. マニュアル「The pdfpages Package」に,全てが書かれています.
  2. 日本語では「pdfpages」が簡潔にまとめられており,分かりやすいです.

更新履歴

2017年9月8日 ページの新規作成


no counter