前書き
会議の議事録作成などでMarkdownをよく使うのですが、
非エンジニア部門から議事録共有の要望があった時に、
「エンジニアっぽい書き方じゃないカタチにして共有してよ」
というオーダーが時々あったりします。
やったこと
じゃあPDFでお渡ししますね、という対応を行いました。
概要
Python で提供されているライブラリを使って対処しました。
必要ライブラリ
-
markdown
https://pypi.org/project/Markdown/
上記2点をpip等でインストール。
WIN環境では、pdfkitインストール後に実行ファイルのパスを通す必要あり。
(デフォルトインストール先の場合、パスは次の通り:C:\Program Files\wkhtmltopdf\bin)
実装
議事録Markdownのサンプルはこちら。
# 定例MTG
## 日時
2019/07/26 13:00
## 場所
本社 会議室A
## 出席者
- システム部 マネージャー 開発太郎
- システム部 設計次郎
- マーケティング部 ウェブ花子
## 議題
1. [SSL証明書更新対応について](#theme1)
2. [新規集客対応について](#theme2)
3. [働き方改革について](#theme3)
## 議事内容
###<a name="theme1">[SSL証明書の更新期限]</a>
- 2019/8/31 で期限終了予定
- 証明書更新手続き
- システム部で対応予定
- 証明書更新費の稟議を取る
- 山田部長が東京出張へ行く前までに稟議を通しておいてほしい
- 8月1週目までには更新日の確定と全社周知
###<a name="theme2">[新規集客対応]</a>
- 見込み顧客に対してメールマガジンを配信
- 配信対象者
- xxxx年にx回以上の購入履歴のあるユーザ
- 対象者の絞り込み
- マーケティング部で対応
- 絞り込みデータの加工対応はシステム部で対処
- 配信予定日
- 8月中旬を予定
###<a name="theme3">[働き方改革について]</a>
- 残業の見直し
- 対象者
- 月の残業時間がxx時間を超えている人
- システム部とマーケティング部で対象者が多い
- 対処
- 納品完了後にまとまった休暇を取得する等を検討できないか
- 開発マネージャーから全社会議に議題提示してもらう
- 他にも良い案があれば次回会議でも議論したい
## 次回日時
2019/08/02 13:00
## 場所日時
本社 会議室A
これを次の処理に通します。
Markdown を HTML に変換してから、
PDF へと変換して出力しています。
import markdown
import pdfkit
import glob
import winreg
def main():
path = "./"
files = glob.glob(path + "input.md")
for f in files:
with open(f, "rt", encoding="utf-8") as fp:
text = fp.read()
md = markdown.Markdown()
body = md.convert(text)
html = '<html lang="ja"><meta charset="utf-8"><body>'
html += '<style> body { font-size: 1rem; } </style>'
html += body + '</body></html>'
outfile = f + ".pdf"
print(outfile)
try:
with winreg.OpenKeyEx(winreg.HKEY_LOCAL_MACHINE, r'SOFTWARE\wkhtmltopdf',
access=winreg.KEY_READ | winreg.KEY_WOW64_64KEY) as k:
data, regtype = winreg.QueryValueEx(k, "PdfPath")
configure = pdfkit.configuration(wkhtmltopdf=data)
regtype = regtype
pdfkit.from_string(html, outfile)
except FileNotFoundError:
pass
if __name__ == '__main__':
main()
HTMLに変換することで、PDF出力時にスタイルを適用できます。
簡単な書式調整だけでも印象は変わるものだったりします。
そして、処理を通して出力したPDFはこちら。
https://github.com/masashi-sawai/python-learning/blob/master/tools/md_pdf_changer/input.md.pdf
いかがでしょうか。
最低限の体裁は担保できたかな。
まとめ
もっと高機能なPDF変換ツールもあると思いますが、
簡単なものなら自分たちで作ってみるのも良いかもしれません。