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}