LoginSignup
9
8

More than 5 years have passed since last update.

TeXだけでpdfファイルを結合する

Last updated at Posted at 2016-05-17

素人の備忘録。

動機

TeXしかない状況でpdfファイルを結合せざるを得なくなったときに。
再度同じ状況になるとはとても思えないし、もっといいやり方があるだろうとも思うが、万が一のため記録しておく。

解決策

ファイル名を連番に変更

結合したいpdfファイルのファイル名を「同じファイル名 + 連番」の形にしておく。
例えばWindowsなら、

  1. 複数のpdfファイルを選択
  2. 右クリックから「名前の変更」
  3. 適当なファイル名を入力

とすれば、リネームソフトなどを使うまでもなく連番のファイル名になる。
参考

pdfファイルの結合

今、

  • test(1).pdf
  • test(2).pdf
  • test(3).pdf

の3つのファイルを結合したいとする。
結合するpdfファイルを同じディレクトリに入れ、以下のtexファイルを同ディレクトリ内に作成する。
これをpdflatexで実行すると、3つのpdfファイルを結合したpdfファイルが作成される。

% pdfLaTeXで処理すること
\documentclass[a4paper]{article} % ここは変えないこと
\usepackage{pdfpages}

% ファイル数カウンタの宣言
\newcount\pdffilecounter

% ファイル名変数の宣言
\newtoks\filename
% 総ファイル数変数の宣言
\newcount\endfilenumber

% ファイル名を入力
\filename = {test} % ここを変更
% 総ファイル数を入力
\endfilenumber = 3 % ここを変更

\begin{document}

\loop % 繰り返し始点
    \advance\pdffilecounter by 1 % ファイル数カウンタを1増やす
    \includepdf[nup=1x1, pages=-]{\the\filename (\the\pdffilecounter ).pdf} % pdfファイルの取り込み
    \ifnum\pdffilecounter < \endfilenumber % ファイル数カウンタが総ファイル数より小さければ繰り返し
\repeat % 繰り返し終点

\end{document}

全体のページ番号を入れたい場合は以下のような感じで。

% pdfLaTeXで処理すること
\documentclass[a4paper]{article} % ここは変えないこと
\usepackage{pdfpages}

% ファイル数カウンタの宣言
\newcount\pdffilecounter

% ファイル名変数の宣言
\newtoks\filename
% 総ファイル数変数の宣言
\newcount\endfilenumber

% ファイル名を入力
\filename = {test} % ここを変更
% 総ファイル数を入力
\endfilenumber = 3 % ここを変更

% ページ番号フォントの調整
\renewcommand{\thepage}{
{\Large 
\textbf{
\textsf{
\arabic{page}
}}}}
% ページ番号位置の調整
\footskip=3.2cm

\begin{document}

\loop % 繰り返し始点
    \advance\pdffilecounter by 1 % ファイル数カウンタを1増やす
    \includepdf[nup=1x1, pages=-, pagecommand={\thispagestyle{plain}}]{\the\filename (\the\pdffilecounter ).pdf} % pdfファイルの取り込み
    \ifnum\pdffilecounter < \endfilenumber % ファイル数カウンタが総ファイル数より小さければ繰り返し
\repeat % 繰り返し終点

\end{document}

注意

Windowsで結合するファイル名を日本語にした場合、上のtexファイルのエンコードはシフトJISにすること。
utf-8ではファイル名のところでエラーが出る。
ファイル名が半角英数のみならばutf-8でも問題ない。

9
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
8