ChatGPTのAPIを叩くと、結構な確率でMarkdownテキストが返ってきます。
エンジニアさんならこれで何も問題ないのですが
一般の事務の方や、営業の方が使うような生成AIアプリで
このフォーマットが返ってくると、ちょっと見た目がとっつきにくくて...という方が多かったりしませんか?
そんな経緯でMarkdownテキストをPDFにする方法を調べてみました。
方法
- pythonでMarkdown to HTMLは簡単にできる
- HTML to PDFというアプリを使って変換する。Pythonでもこれをインストールすれば呼べる
というかんじで、Python経由でMarkdownを一度HTML経由して、PDF出力することとしました。
実装
今回少しだけ環境依存があるので、
環境が比較的安定しているGoogle Colaboratoryで実現しています。
(1) wkhtmltopdfのインストール
!sudo apt-get install wkhtmltopdf
winやmacのローカル環境なら、上のURLからインストーラ経由でインストールすれば良さそうなんですが、
すみません、動作未確認です。
(2) pipしてwkhtmltopdfを呼べるようにします。
pip install pdfkit
(3) 日本語フォントのインストール
これをしないと日本語が表示されない。
!sudo apt-get install -y fonts-noto-cjk
MarkdownテキストをwPDF変換するpython Google Colaboratory用コード。
import markdown
import pdfkit
from google.colab import files
MARKDONW_STRING = "# Markdown Text"
OUT_FILEPATH = "/path/to/出力先/hoge.pdf"
# Markdownを一旦HTMLに変換します。
html_text = markdown.markdown(MARKDONW_STRING)
# HTMLからPDFに変換して保存します。
options = {
'page-size': 'A4',
'margin-top': '0.4in',
'margin-right': '0.4in',
'margin-bottom': '0.4in',
'margin-left': '0.4in',
'encoding': "UTF-8", # UTF-8大事。これがないと日本語が文字化けする。
'no-outline': None,
'disable-smart-shrinking': '',
}
pdfkit.from_string(html_text, OUT_FILEPATH, options=options)
# 生成されたPDFをブラウザからダウンロード。
files.download(OUT_FILEPATH)
これでPDF出力できるようになりました。
MarkdownのテキストでDXが進まないときは、さくっとPDFにしてみると良いかもしれません。