2021-08-16
Pandoc, PDF, PDFtk, ShellScript
複数のpdfにheaderをつける. txt等からpdfを作成する. pandoc, pdftk, shellscrpit
環境
mac osx 10.11 el capitan pandoc 1.17.0.3 < Compiled with texmath 0.8.6.3, highlighting-kate 0.6.2. pdftk2.02
はじめに
複数のpdfにheaderをつけます. terminalで全部やります. 大まかな手順は
- (pdf以外であれば目的のファイルをpdf化する)
- header用のpdfを作成する
- 目的pdfの上にheader-pdfをstampする
- stampしたpdf達をmergeする
です. shellscriptで実行します.
事前にinstallする必要があるのは
- pandoc (header-pdfの作成) > brew install pandoc
- tex (header-pdfの作成, pandoc内で使用) > tex live
- pdftk > brewとか
です.
pandoc
参考
install http://pandoc.org/installing.html manual http://pandoc.org/MANUAL.html demos http://pandoc.org/demos.html 日本語 使い方 参考 http://qiita.com/sky_y/items/80bcd0f353ef5b8980ee docx, md http://www.mscharhag.com/software-development/pandoc-markdown-to-pdf
commands
txt2pdfの例だけど, md2pdfとかでもたぶん大体同じ.
基本
pandoc input.txt -o output.pdf
日本語文書
pandoc input.txt -o output.pdf -V documentclass=ltjarticle --latex-engine=lualatex
フォントを変える(ヒラギノとかの指定方法はわからなかったけど, fontbookの中の英語フォントは大体いけた)
pandoc input.txt -o output.pdf -V mainfont="Phosphate"
フォントサイズを変える(12pt以外うまくいかなかったけど, たぶんそれはtex側の問題)
pandoc input.txt -o output.pdf -V fontsize=12pt
複数の設定を実行する
pandoc input.txt -o output.pdf -V mainfont="Phosphate" -V fontsize=12pt
marginを変える(左右上下すべてを0mmに設定する)
pandoc input.txt -o output.pdf -V geometry:margin=0mm
marginを変える(左右上下を個別に設定する)
pandoc input.txt -o output.pdf margin-left=0mm -V margin-top=-2mm -V margin-bottom=0mm
用紙のサイズを変える
pandoc input.txt -o output.pdf -V papersize:a4
以下のようにlatexのengineを変更しないと反映されないかも?
pandoc input.txt -o output.pdf --latex-engine=lualatex -V papersize:a4
pdftk
参考
以前の自分の記事:
pdftk on OSX10.11(El capitan) http://qiita.com/keitasumiya/items/83756caf2865291707fb moodleからフッター付のまとめpdfを作成 http://qiita.com/keitasumiya/items/7975b068f22ddb7ddb82
pandoc
commands
merge
$ pdftk input1.pdf input2.pdf output output.pdf
merge all
$ pdftk *.pdf output output.pdf
stamp
$ pdftk input.pdf stamp header.pdf output output.pdf
background
$ pdftk input.pdf background header.pdf output output.pdf
本題
ファイル名のヘッダーを付ける.
$ tree
.
└── pdf
├── ab9999_YamadaTaro.pdf
├── ef9990_山本三郎.pdf
└── hg9980_SatoJiro.pdf
commands
mkdir txt
mkdir txt_pdf
mkdir output_pdf
cd pdf
ls | sed 's/\./_/g' | awk -F'_| ' '{print "echo",$1"_"$2,">",$1".txt"}' | sh
ls | grep .txt | awk '{print "mv",$0,"../txt"}' | sh
cd ../txt
ls | sed 's/\./_/g' | awk -F'_| ' '{print "pandoc",$1".txt -o",$1".pdf -V documentclass=ltjarticle --latex-engine=lualatex -V geometry:margin=0mm -V fontsize=12pt -V papersize:a4"}' | sh
ls | grep .pdf | awk '{print "mv",$0,"../txt_pdf"}' | sh
cd ../pdf
ls | awk -F'_| ' '{print "pdftk",$0,"stamp ../txt_pdf/"$1".pdf","output ../output_pdf/"$1".pdf"}' | sh
cd ../output_pdf
pdftk *.pdf output ../output.pdf
results
$ tree
.
├── output.pdf
├── output_pdf
│ ├── ab9999.pdf
│ ├── ef9990.pdf
│ └── hg9980.pdf
├── pdf
│ ├── ab9999_YamadaTaro.pdf
│ ├── ef9990_山本三郎.pdf
│ └── hg9980_SatoJiro.pdf
├── txt
│ ├── ab9999.txt
│ ├── ef9990.txt
│ └── hg9980.txt
└── txt_pdf
├── ab9999.pdf
├── ef9990.pdf
└── hg9980.pdf
pandocの処理が遅いですが, 一応実行できます.