はじめに
OpenAPI の YAML や JSON から、openapi-generator-cli を使って、リファレンスを HTML や Markdown を出力したりしている。
ただ、リファレンスを PDF で配りたいという要望もあり、どうしたものかと思案中。
openapi-generator-cli だけでは、直接 PDF は出力できないけど、いったん AsciiDocに出力することで、AsciiDoc から PDF を作れそうだった。
OpenAPI Spec から AsciiDoc
OpenAPI サンプルの定番、Petstore の YAML から AsciiDoc を出力。
openapi-generator-cli generate -i petstore.yaml -g asciidoc -o dest
AsciiDoc から PDF
AsciiDoc から PDF を作成するには、asciidoctor-pdf を使う。Ruby の gem なので、Ruby の環境が必要。
Windows なら、Ruby Installer でインストールするのが手っ取り早い。
そして asciidoctor-pdf もインストール。執筆時のバージョンは 2.0.17 だった。
gem install asciidoctor gem install asciidoctor-pdf
組み込みの日本語フォントでよければ、次のコマンドで日本語の PDF を生成できた。
asciidoctor-pdf -a scripts=cjk -a pdf-theme=default-with-fallback-font dest\\index.adoc -o petstore.pdf
おわりに
10MB 超あるお化け swagger.json でも試してみたところ、メモリ 1GB 弱使いながら、かなりの時間をかけて、なんとか PDF 出力できた。
本格的に体裁を整えるとしたら、asciidoc ジェネレーターのカスタムテンプレートと asciidoctor-pdf のテーマを作ることになるだろうな。やりたくない。