adbird(広告鳥) 備忘録

markdown から pdf への変換

2020年1月8日:「md →(lualatex)→ pdf」を追記。

md →(lualatex)→ pdf

Pandocを用いて、ワンライナーで。ただし、PDF変換にlualatexが必要。

$ pandoc test.md -o test.pdf --pdf-engine=lualatex -V documentclass=bxjsarticle -V classoption=pandoc -V geometry:margin=25mm

-V geometry:margin=25mmのところで、ページの余白を調整。

-V pagestyle=emptyをつけると、ページ番号(フッター)を削除することができる。

md → html → pdf

markdownファイルからpandocでcssを適応させたhtmlに変換。
さらにwkhtmltopdfで、そのhtmlからpdfに変換。

といった作業をできるだけ簡単に実行する方法。
ただし、Linuxのみ。

その1 シェルスクリプトを使う方法

以下の内容の、「makepdf.sh」というファイルをmdファイル(仮に「テスト001.md」があるとする)と同じフォルダ内に作る。

#!/bin/sh

pandoc $1.md -s -c test.css -o $1.html
wkhtmltopdf --disable-smart-shrinking --margin-top 20 --margin-left 20 --margin-right 20 --margin-bottom 20 --footer-center '[page]/[topage]' $1.html $1.pdf

ヘッダーを入れる場合は上記該当部分を下のように書く。

wkhtmltopdf --disable-smart-shrinking --footer-center [page] --header-right ヘッダー名 --header-spacing 2 --header-font-size 9 --margin-top 20 --margin-left 20 --margin-right 20 --margin-bottom 20 $1.html `date +%Y%m%d-$1`.pdf

フォルダ内で端末(ターミナル)を開き、

$ sh makepdf.sh テスト001

をすると、上記スクリプトの $1 に、「テスト001」を差し込んで実行してくれる。

その2 テキストエディタgeanyを使う方法

geanyで ビルド > ビルドコマンドを設定 で以下の内容を設定。ラベルは任意名でOK。

pandoc "%f" -s -c test.css -o "%e".html && wkhtmltopdf --disable-smart-shrinking --margin-top 20 "%e".html "%e".pdf

ビルド > 設定したラベル名をクリック。

geanyでmarkdownファイルを編集、そのままクリックするだけで、コマンド実行できるからこっちの方が楽。