pdfpagesレシピ集

本稿はpdfLaTeX+pdfpagesパッケージを用いてPDFを生成・加工するレシピ集である。

PDFのスケーリング

\documentclass{minimal}
\usepackage{pdfpages}
\newcommand{\mainpdf}{main.pdf}
\begin{document}
\includepdf[pages=-, scale=1.25, offset=0mm -27mm]{\mainpdf}
\end{document}

offset=X Yは、X軸方向、Y軸方向に、それぞれ版面全体を移動させる。上余白が足りないときにはoffset=0mm -27mmなどとする。

自炊した文書の加工

自炊した文書の頁番号調整+栞付与

\documentclass{minimal}
\usepackage{pdfpages,hyperref,bookmark}
\newcommand{\mainpdf}{mentuke1.pdf}
\begin{document}

\pagenumbering{alph}
\includepdf[fitpaper,page={1-2}]{\mainpdf}

\setcounter{page}{1}
\pagenumbering{roman}
\includepdf[fitpaper,page={3-12}]{\mainpdf}

\setcounter{page}{1}
\pagenumbering{arabic}
\includepdf[fitpaper,page={13-last}]{\mainpdf}

\bookmark[page=1,level=0]{Front Page}
\bookmark[page=3,level=0]{Title}
\bookmark[page=5,level=0]{Contents}

\bookmark[page=\numexpr 1+12\relax,level=0]{Introduction: The Chomskian Perspective on Language Study}
\end{document}

自炊した見開き文書の分割

\def\target{main.pdf}%% 対象PDFファイル名
\def\ratio{0}%% 中央を何パーセント切り落とすか。負の数の場合は中央を両側に含める。-99〜99の百分率値を指定。

%%% 横書きか縦書きかで条件分岐
\newif\ifyoko
\yokofalse
% \yokotrue

\documentclass{minimal}
\usepackage{graphicx}

%%% 総ページ数の取得
\pdfximage{\target}
\newcount\pagecount
\pagecount=\pdflastximagepages

%%% 先頭ページを読んで生成PDFのページサイズを決定(/Rotate も反映)
\setbox0\hbox{\includegraphics{\target}}
\newdimen\originalwidth
\originalwidth=\wd0

%%% 生成PDFのページサイズを決定
\usepackage[papersize={\dimexpr\originalwidth*(100-\ratio)/200\relax,\ht0},margin=0pt]{geometry}
\usepackage{pdfpages}

\begin{document}
\parindent=0pt

%%% 画像配置を実行
\newcount\thispage
\loop
\advance\thispage1
%%% 左ページの配置
\ifnum\thispage>1
  \setbox0\hbox{\includegraphics[page=\thispage]{\target}}
\fi
\ifyoko
  \copy0\newpage
\else
  \leavevmode\kern\pdfpagewidth\kern-\originalwidth\copy0\newpage
\fi
%%% 右ページの配置
\ifyoko
  \leavevmode\kern\pdfpagewidth\kern-\originalwidth\box0\newpage
\else
  \box0\newpage
\fi
\ifnum\thispage<\pagecount\repeat

\end{document}

上記ソースは、「pdfTeX による見開きPDFの結合・分割」を元に、縦書きにも対応できるよう改造したもの。

縦書き文書の見開き化

%
% 2in1.tex
%
\documentclass{minimal}
\usepackage{pdfpages,xcolor}

%% pdf info
\newcommand{\mainpdf}{main.pdf}
\pdfximage{\mainpdf}

%% paper size
\dimen1=\pdfximagebbox\pdflastximage 1
\dimen2=\pdfximagebbox\pdflastximage 2
\dimen3=\pdfximagebbox\pdflastximage 3
\dimen4=\pdfximagebbox\pdflastximage 4
\paperwidth=\dimexpr(\dimen3-\dimen1)*2\relax
\paperheight=\dimexpr\dimen4-\dimen2\relax

%% \mentuke
\makeatletter
\fboxrule=1sp
\let\mntk@o@fbox=\fbox
\definecolor{2in1color}{cmyk}{0.25, 0, 0.5, 0}
\renewcommand{\fbox}[1]{%
    \fcolorbox{2in1color}{white}{#1}%
}
\newcommand{\mentuke}{%
    \includepdf[pages={1,{}},nup=2x1,frame]{\mainpdf}
    \@tempcnta=2\relax
    \@whilenum\pdflastximagepages>\@tempcnta\do{%
        \@tempcntb=\numexpr\@tempcnta+1\relax
        \includepdf[pages={\the\@tempcntb,\the\@tempcnta},nup=2x1,frame]{\mainpdf}
        \advance\@tempcnta 2\relax
    }%
    \ifodd\pdflastximagepages\else
        \includepdf[pages={{},\the\pdflastximagepages},nup=2x1,frame]{\mainpdf}
    \fi
}
\makeatother
\begin{document}
\mentuke
\end{document}

画像のPDF化

大きさを指定して画像をPDF化

以下をhoge.texという拡張子で保存し、pdflatex hoge.texとすればhoge.pdfというPDFファイルが生成される。

\documentclass{article}
\usepackage{pdfpages}
\usepackage[papersize={308.341truemm,216truemm}]{geometry}
\begin{document}
\includepdf{image.jpg}
\end{document}

\includepdfという命令で画像ファイルを読み込み、出力しているだけである。geometryパッケージにより画像の縦横の長さを設定することが可能である。

縦横比そのままに画像をPDF化

\documentclass{article}
\usepackage{pdfpages}
\begin{document}
\includepdf[fitpaper]{image.jpg}
\end{document}

このようにfitpaperオプションつきで画像を読み込むと、画像の縦横比に合わせて用紙サイズが決定される。

印刷時の縮小の打ち消し

\documentclass{minimal}
\usepackage[a4paper]{geometry}
\usepackage{pdfpages}
\newcommand{\mainpdf}{main.pdf}
\begin{document}
% 20/19.05 = 1.0498687664
\includepdf[scale=1.0498687664]{\mainpdf}
\end{document}

A4にする

\documentclass{minimal}
\usepackage[a4paper]{geometry}
\usepackage{pdfpages}
\newcommand{\mainpdf}{main.pdf}
\begin{document}
\includepdf[pages=-,scale=1]{\mainpdf}
\end{document}
schedule 2017年9月27日
update 2023年1月6日
local_offer #LaTeX