このブログはPandoc Advent Calendar 2019 - Adventarの12日目のブログです。
Pandocはmarkdown記法で修飾されたテキストをHTMLやPDFに変換したり、MediaWikiなどの別記法に変換したりといった変換処理を得意とするコマンドラインツールです。
この記事を書くに至った動機
今回受託で作ったアプリのマニュアルをいちいちPDFで出力するのが面倒だったので、Pandocを使ってPDFを出力したい と思いました。
ただ、Pandocや、そこからPDFを出力するのに使うLaTeXのセットアップは結構面倒 という話を聞いていたのでどうしようかと思っていました。
ただ、実際調べてみると割と簡単に環境構築できる方法がわかったので、それを書きます。
といっても、そんなたいしたことはないのですが
タグがネタバレになっている気がしますが、Chocolateyを使います。
ChocolateyはWindowsデスクトップアプリ用のパッケージ管理ツール。Linuxを使っている方はapt-getやyumのようなものだと思ってもらえれば。
Pandocのインストールはここから行うことができます
> choco install -y pandoc
次にLaTeXですが、こちらはChocolateyからインストールすることができません。
ただ、Pandocのマニュアルを見ると、PDF化にはwkhtmltopdfを使うことも可能とあります。最近はこちらを使ってPDFを作成することもできるようになったんですね。
こちらはChocolateyにありますので、これをインストールします。
> choco install -y wkhtmltopdf
コマンドラインでPandocを呼び出すとき、次のコードを書けば、wkhtmltopdfを使ってPDF出力ができます。
> pandoc [mdfile] -t html5 -o [pdffile]
また、ページ数などのフッタを付与したい場合は、次のように返還対象のMarkdownファイルの文頭にフッタのHTMLファイルを指定します(HTMLタグではないので注意!)
---
footer-html: footer.html
---
<html><head><script>
function subst() {
var vars={};
var x=document.location.search.substring(1).split('&');
for(var i in x) {var z=x[i].split('=',2);vars[z[0]] = unescape(z[1]);}
var x=['frompage','topage','page','webpage','section','subsection','subsubsection'];
for(var i in x) {
var y = document.getElementsByClassName(x[i]);
for(var j=0; j<y.length; ++j) y[j].textContent = vars[x[i]];
}
}
</script>
</head>
<body style="border:0; margin: 0;" onload="subst()">
<div style="text-align: center;">
Page <span class="page"></span> of <span class="topage"></span>
</div>
</body>
</html>
これを適当に呼び出すPythonなりPowerShellなりのコードを作成すれば、気軽に最新のマニュアルを作成することができます。
どうぞおためしあれ。