BETA

PythonでMarkdownファイルをHTMLへ変換する

投稿日:2019-05-24
最終更新:2019-05-24

はじめに

PythonでMarkdownファイルをHTMLへ変換する手順について記述する。

リポジトリ

こちらにソースコード一式を置いてあります。

環境

  • Windows 10
  • Python 3.6.8
  • Markdown
    pip install Markdown

概要

フォルダ中に存在する*.mdファイルを取得して、HTMLファイルに変換する。mdファイルが複数ある場合は、全てHTML化する。

使い方

下記のコマンドを実行する。

C:\app\workfolder>python mdtohtml.py  
README.md の変換を開始します  
-----------------------------------  
README.md を README.html へ変換しました  

コード

import markdown  
import re  
import glob  

# Markdown拡張  
mdextensions = ["tables"]  


# mdファイルの変換  
def convertHtml(mdpath, htmlpath, style):  
    with open(mdpath, 'rt', encoding="utf-8") as f:  
        text = f.read()  
        # Markdown の import 文を除去  
        text = re.sub('@import ".+"\n', '', text)  
        # HTMLに変換  
        body = markdown.Markdown(extensions=mdextensions).convert(text)  

        html = '<html lang="ja"><meta charset="utf-8">'  
        html += '<style>' + style + '</style>'  
        html += '<body>' + body + '</body></html>'  

        # HTMLで出力  
        with open((htmlpath), "w", encoding="utf-8") as g:  
            g.write(html)  


if __name__ == '__main__':  

    # スタイルは、style.cssを参照する  
    with open('./style.css', 'rt', encoding="utf-8") as f:  
        style = f.read()  
        for mdfile in glob.glob("*.md"):  
            print("%s の変換を開始します" % mdfile)  
            htmlname = re.sub(r'.md$', '.html', mdfile)  
            convertHtml(mdfile, htmlname, style)  
            print("-----------------------------------")  
            print("%s を %s へ変換しました" % (mdfile, htmlname))  

途中のstyle.cssは任意のスタイルを記述したファイルを、pyファイルと同じフォルダに格納する。

なお、style.cssの内容はとりあえず下記の内容を記述している。

body {  

    font-family: "Hiragino Kaku Gothic Pro",sans-serif;  
    font-size: 14px;  
    padding: 0 12px;  
    line-height: 23px;  
}  

img {  
    max-width: 100%;  
    max-height: 100%;  
}  

hr {  
    border: 0;  
    height: 2px;  
    border-bottom-width: 2px;  
    border-bottom-style: dotted;  
}  

h1 {  
    padding-bottom: 0.4em;  
    line-height: 1.2;  
    border-bottom-width: 1px;  
    border-bottom-style: solid;  
}  

h1, h2, h3, h4, h5, h6 {  
    font-weight: normal;  
}  

参考文献

Python-Markdown

Markdownファイルを Python で PDF にする

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@webmaster909の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!