LoginSignup
1
3

More than 3 years have passed since last update.

Markdownの議事録 → HTML → PDF へ変換出力

Last updated at Posted at 2019-08-05

前書き

会議の議事録作成などでMarkdownをよく使うのですが、
非エンジニア部門から議事録共有の要望があった時に、

「エンジニアっぽい書き方じゃないカタチにして共有してよ」

というオーダーが時々あったりします。

やったこと

じゃあPDFでお渡ししますね、という対応を行いました。

概要

Python で提供されているライブラリを使って対処しました。

必要ライブラリ

上記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変換ツールもあると思いますが、
簡単なものなら自分たちで作ってみるのも良いかもしれません。

1
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3