- platex, dvipdfmx
- fancyhdr
- geometry
- pdfinfo
- pdftk
pdfinfo は総ページ数の取得に使う。poppler に入ってる。
pdftk はページの回転とか、重ね合わせに使う。
空白のページにページ番号だけ振った PDF を生成するには、以下のような TeX ファイルの雛型を用意すればよい。
これの @@@PAGES@@@ に pdfinfo で取得した総ページ数を埋め込んで PDF を生成
input.pdf が縦横混在している場合は、pdftk を用いて pagenum.pdf を回転し、各ページの方向を input.pdf と pagenum.pdf で合わせておく。
例えば、
これ、自動で出来ればよいんだけど、各ページの方向調べる方法が分からない。
1ページ毎に分割して pdfinfo でページサイズ調べて回るのもちょっとスマートじゃないし、何か良い方法はない物か?
\documentclass[a4paper]{article} \usepackage{fancyhdr} \usepackage{lastpage} \usepackage[margin=2em,foot=1.5em]{geometry} \pagestyle{fancy} \pagenumbering{arabic} %\fancyhf{} \cfoot{\thepage \hspace{1pt} / \pageref{LastPage}} \renewcommand{\headrulewidth}{0pt} % Repeat N times to output contents. % Usage: \repeatntimes{TIMES_TO_REPEAT}{CONTENTS_TO_REPEAT}} \newcounter{repeatntimesCounter} \newcommand{\repeatntimes}[2]{\setcounter{repeatntimesCounter}{0}% \loop\ifnum\value{repeatntimesCounter}<#1#2\stepcounter{repeatntimesCounter}\repeat% } \begin{document} \repeatntimes{@@@PAGES@@@}{\ \newpage} \end{document}
sed -re s/@@@PAGES@@@/`pdfinfo input.pdf | awk '/^Pages:/{print $2}'`/g pagenum.tex.in > pagenum.tex \ && platex pagenum && platex pagenum && dvipdfmx pagenum最後に目的の PDF の上に今作った pagenum.pdf を重ねる。
pdftk input.pdf multistamp pagenum.pdf output output.pdf以上。
input.pdf が縦横混在している場合は、pdftk を用いて pagenum.pdf を回転し、各ページの方向を input.pdf と pagenum.pdf で合わせておく。
例えば、
pdftk pagenum.pdf cat 1 2east 3 4east 5-end output pagenum_rotated.pdfみたいにすれば、1,3,5-end は縦、2,4 が横になった pagenum_rotated.pdf が得られる。
これ、自動で出来ればよいんだけど、各ページの方向調べる方法が分からない。
1ページ毎に分割して pdfinfo でページサイズ調べて回るのもちょっとスマートじゃないし、何か良い方法はない物か?
- TeX Alchemist Online / 2016-06-07: 既存PDFの最初数ページをローマ数字,残りをアラビア数字で,ページ番号を付け直す方法 (pdfLaTeX + pdfpages + hyperref)
- 結城浩のブログ
- 2016-06-07: PDFの最初数ページはローマ数字、残りはアラビア数字で、ページ番号を付け直す方法(Java+RomanNombre+itextpdf)
- 2017-10-01: PDFのページ番号を付け直す方法(LaTeXでPDFを処理する)
- アセトアミノフェンの気ままな日常 / 2015-10-23: dvipdfmx は /Rotate に対応していないという話、への対処法
- Qiita
- Toru3 / 2015-01-23: ページ番号を「今のページ数/総ページ数」(分数形式)で表示する
- tttamaki / 2015-02-16: LaTeXマクロでfor/whileループ
- tenomoto / 2017-06-04: PDFにページ番号を振って目次をつける
- Overleaf / Page numbering
- joker8phoenix's diary / 2012-07-09: TeXのjsarticleで余白設定
- A Day in the Life / 2014-01-31: LaTeX メモ ― geometry パッケージによるページレイアウトの設定
- マクロツイーター
- 2011-08-28: TeX のループ構文
- 2017-02-12: LaTeX 文書の出力用紙サイズを指定する(だけ) ― bxpapersize パッケージ
- Yamamoto's Laboratory
- 奥村研究室 / TeX Forum
- 2011-05-13: B4判を横置きに使用
- 2016-10-23: マクロでの繰り返し文について教えて下さい
- LaTeXコマンド集
- LaTeX入門
- StackExchange / TeX
- 惰力飛行 / 2013-02-17: TeX ヘッダ・フッタの編集/調整
- とりぷる ぷぅ 技術メモ / 2013-02-27: [TeX] 途中で縦置き・横置きを変更する
- @KUMAZAWA Yoshiki / TeX
- 自動化.work / 2017-12-18: pdftkの簡単な使い方とPDFの操作
- PDF Labs / PDFtk Server Examples
実は 1 ヶ月半くらい前(2018-08-31)にやった事なんだけど、時間なかったのでバッチ組まずに手動で試行錯誤しながら作業したんだけど、如何せん時間ギリギリに作業してたもんだから、その後のタスクに追われてまとめ損なっていた。
今回、同じようにページ番号を後付けしようとしたのだが、1 ヶ月半も放置してたおかげで、やった作業をほぼ失念。
完全にロストテクノロジー化していて困った。
作成した handouts のタイムスタンプを頼りに作業フォルダに残ってたファイルを探し当て、
Firefox の Ctrl+H に残ってた当時の閲覧履歴を踏んで回って追体験する羽目に。
ところが、肝心の PDF の重ね合わせに用いた multistamp に関するページが履歴には見つからず
自分でもどうやってやったのか分からず途方に暮れてしまった。
幸い、byobu に shell 残ってたのを見つけたため、history 取ることでなんとか手順だけはサルベージできたんだが、
しかし結局、履歴からは参考にしたページを見つけることが出来なかった。
history には man を見た形跡もなかったし、
確実にどこかのページ参考にしてるんだけど、なぜ見つからないのか?
今回、同じようにページ番号を後付けしようとしたのだが、1 ヶ月半も放置してたおかげで、やった作業をほぼ失念。
完全にロストテクノロジー化していて困った。
作成した handouts のタイムスタンプを頼りに作業フォルダに残ってたファイルを探し当て、
Firefox の Ctrl+H に残ってた当時の閲覧履歴を踏んで回って追体験する羽目に。
ところが、肝心の PDF の重ね合わせに用いた multistamp に関するページが履歴には見つからず
自分でもどうやってやったのか分からず途方に暮れてしまった。
幸い、byobu に shell 残ってたのを見つけたため、history 取ることでなんとか手順だけはサルベージできたんだが、
しかし結局、履歴からは参考にしたページを見つけることが出来なかった。
history には man を見た形跡もなかったし、
cat pagenum.pdf | pdftk input.pdf multistamp - output output.pdfみたいに - で stdin 拾う変なやり方してて、この書き方はどこかのページで見てそのまま書いた覚えがあるので、
確実にどこかのページ参考にしてるんだけど、なぜ見つからないのか?
タグ
コメントをかく