Markdownは、簡潔な構文と幅広い互換性を持つ軽量マークアップ言語であり、ブログ、技術文書、バージョン管理システムでのコンテンツ管理に特に適しています。一方、Word文書はその強力なレイアウト機能から、文書作成の第一選択肢として広く利用されています。しかし、Word形式を直接使用すると、特定のプラットフォームでは複雑すぎたり、柔軟性に欠けたりする場合があります。Pythonを使用してWord文書をMarkdown形式に一括変換することで、文書構造を簡略化し、移植性とメンテナンス性を向上させることができます。本記事では、Pythonを用いてWord文書をMarkdownファイルに変換する方法を紹介します。
この記事で紹介する方法では、Spire.Doc for Pythonを使用します。PyPIでインストール可能です:pip install spire.doc
。
PythonでWord文書をMarkdown形式に変換
Document.LoadFromFile()
メソッドを使用して指定されたファイルパスからWord文書を読み込み、Document.SaveToFile(fileName: str, FileFormat.Markdown)
メソッドを使用してMarkdown形式に変換し、保存します。以下は手順の例です:
- 必要なモジュール(
Document
とFileFormat
)をインポートします。 -
Document
インスタンスを作成します。 -
Document.LoadFromFile()
メソッドを使用して指定されたファイルパスからWord文書を読み込みます。 -
Document.SaveToFile()
メソッドを使用してMarkdown形式に変換し、保存します。 - リソースを解放します。
コード例
from spire.doc import Document, FileFormat
# Documentオブジェクトを作成
doc = Document()
# Word文書をロード
doc.LoadFromFile("Sample.docx")
# 文書をMarkdown形式に変換してファイルとして保存
doc.SaveToFile("output/WordToMarkdown.md", FileFormat.Markdown)
doc.Dispose()
画像を削除してWord文書をMarkdown形式に変換
Word文書をMarkdown形式に直接変換すると、画像がBase64エンコードされた形式でMarkdownコード内に保存されるため、ファイルサイズが大きくなったり、一部のプラットフォームでBase64エンコードがサポートされない場合があります。そのため、変換前に画像を削除し、必要に応じてリンク形式でMarkdownコードに挿入することが推奨されます。以下は手順の例です:
- 必要なモジュール(
Document
とFileFormat
)をインポートします。 -
Document
インスタンスを作成します。 -
Document.LoadFromFile()
メソッドを使用して指定されたファイルパスからWord文書を読み込みます。 - 文書内のセクション、セクション内の段落、段落内の子オブジェクトを順に走査し、子オブジェクトが
DocPicture
のインスタンスであるかを判定します。該当する場合は、Paragraph.ChildObjects.Remove()
メソッドを使用して削除します。 -
Document.SaveToFile()
メソッドを使用してMarkdown形式に変換し、保存します。 - リソースを解放します。
コード例
from spire.doc import Document, FileFormat, DocPicture
# Documentオブジェクトを作成
doc = Document()
# Word文書をロード
doc.LoadFromFile("Sample.docx")
# 文書中の全てのセクションを巡る
for i in range(doc.Sections.Count):
section = doc.Sections.get_Item(i)
# セクション内の全ての段落を巡る
for j in range(section.Paragraphs.Count):
para = section.Paragraphs.get_Item(j)
# 段落内の全てのドキュメントオブジェクトを巡る
for k in range(para.ChildObjects.Count):
obj = para.ChildObjects.get_Item(k)
# ドキュメントオブジェクトが画像の場合、画像を削除
if isinstance(obj, DocPicture):
para.ChildObjects.Remove(obj)
# 文書をMarkdown形式に変換してファイルとして保存
doc.SaveToFile("output/WordToMarkdownNoImage.md", FileFormat.Markdown)
doc.Dispose()
本記事では、Pythonを使用してWord文書をMarkdownファイルに変換する方法を紹介しました。