docx2html (Python編)

更新: 実行ファイルの追加

2019年5月15日追記。Pythonを実行ファイル(.exe)ファイルに変換できることを思い出しました。実行ファイルにしてみたので、ダウンロードして使ってみてください。(zipファイル)←下のスクリプトでは、特許庁の書式に対応しきれないことがわかったので作り直しました。タグをreplaceするなど強引な処理を含めたので、スクリプトの公開は、遠慮させていただきます(汚いコードが恥ずかしいため)。下記のスクリプトは、参考程度にご活用ください。どうしてもスクリプトを知りたいという方はお問い合わせください。

Wordの書き出しの不具合

特許事務所が出願において困っているのが、Word文書をうまくインターネット出願ソフトが読み込めるHTMLに変換できないということでしょう。Microsoft Wordは、htmlへの書き出し機能を持っているのですが、画像をうまく吐き出すことがでいません。

Mammothライブラリー

PythonにはmammothというWord文書をhtmlに変換するライブラリーがあるようです。これを使うとたった数十行でhtml変換ツールが作成できてしまいます。

# 特許庁出願用html変換ツール
# https://co2.ddns.net
# [使い方] docx2html.py {docxファイル}
# 
import mammoth
import os
import sys

# Word中のイメージを書き出す
def convert_image(image):
    with image.open() as image_bytes:
        img = image_bytes.read()
        filename_ = os.path.basename(image_bytes.name)
        with open(path_ + filename_, "wb") as png_file:
            png_file.write(img)
    return { "src": filename_ }

# 使い方表示
def usage():
    print('[使い方] python docx2html.py {docxファイル}')
    exit()

# mammothデフォルトでは下線をhtml変換しないので
# 下線は、下線として変換する
style_map = "u => u"

if len(sys.argv) != 2:
    usage()

docx_path = sys.argv[1]
if os.path.exists(docx_path):
    name_, ext_ = os.path.splitext(docx_path)
    path_, ext_ = os.path.split(docx_path)
    if path_ != "":
        path_ = path_ + r"/"
    html_path = name_ + r".html"
else:
    usage()

# mammothによるdocx⇒html変換
with open(docx_path, "rb") as docx_file:
    result = mammoth.convert_to_html(docx_file, style_map=style_map, convert_image=mammoth.images.img_element(convert_image))
with open(html_path, "w") as html_file:
    html_file.write(result.value)

使い方

上記ソースコードをdocx2html.pyというファイル名で保存します。pythonがPATHに設定されている状態で、コマンドラインから以下のように打ち込めば、所望のhtmlファイルと画像ファイルとが吐き出されます。ご確認ください。

> python docx2html.py {Word文書}

補足

動作環境は、Anacondaを導入し、mammothのホームページにもあるように「
> pip install mammoth 」と入力して、mammothを導入する程度です。

Translate »