1
1

PythonでWord文書を画像に変換する

Posted at

Word文書は、テキスト、画像、表などのコンテンツを編集するための機能豊富なフォーマットです。しかし、Word文書は表示に不便であり、表示デバイスやシステムに一定の要件があります。表示問題を解決するための一般的な方法は、Word文書を画像形式に変換して、文書の内容とレイアウトを保持し、異なるプラットフォームやデバイスでの一貫性のある表示を確保し、表示環境要件を低減することです。本文では、Word文書を画像ファイルに変換して表示および共有する方法について説明します。 本文で使用される方法にはSpire.Doc for Pythonが必要です。

Spire.Doc for Pythonライブラリは公式サイトからダウンロードするか、pipでインストールできます。

pip install Spire.Doc

Word文書の各ページをPNG画像に変換する

Document.SaveImageToStreams(ImageType.Bitmap) メソッドを使用して、ドキュメントの各ページをPNG画像に変換し、リストを返すことができます。リスト内の画像をPNGファイルとして保存するか、すべての画像を保存することができます。 Doc、Docx、Docm、Dot、Dotx、Dot、Odtなどの形式に対応しており、 Document.LoadFromFile(fileName: str, fileFormat: FileFormat, password: str) メソッドでドキュメントをロードする際に FileFormat クラスの詳細情報を確認できます。 以下は操作手順です。

  • Document クラスのオブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用してWord文書をロードします。
  • Document.SaveImageToStreams(ImageType.Bitmap) メソッドを使用してドキュメントをPNG画像に変換し、リストを返します。
  • リスト内の画像をPNGファイルとして保存します。

Python

from spire.doc import *
from spire.doc.common import *

inputFile = "G:/文書/例.docx"

# Documentクラスのオブジェクトを作成します
doc = Document()

# Word文書をロードします
doc.LoadFromFile(inputFile)

# ドキュメントの各ページをビットマップに変換し、リストで返します
imageStream = doc.SaveImageToStreams(ImageType.Metafile)

# リスト内のビットマップをファイルに保存します
for i, image in enumerate(imageStream):
    outputFile = f"output/Images/image_{i}.png"
    with open(outputFile, "wb") as f:
        f.write(image.ToArray())

doc.Close()

文書
Word文書を画像に変換

変換結果
Word文書の各ページをPNG画像に変換

Word文書をJPG画像に変換する

Document.SaveImageToStreams() メソッドでは直接JPEG形式で画像を保存できません。リスト内のPNG画像をJPEG形式に変換して保存するためにPillowライブラリを導入することができます。
コンソールで以下のコマンドを入力し、Pillowをインストールする:

pip install Pillow

操作手順は以下の通りです。

  • Document クラスのオブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用してWord文書をロードします。
  • Document.SaveImageToStreams(ImageType.Bitmap) メソッドを使用してドキュメントをPNG画像に変換し、リストを返します。
  • リスト内のビットマップをJPEG形式に変換してファイルに保存します。

Python

from spire.doc import *
from spire.doc.common import *
from PIL import Image
import io

inputFile = "G:/文書/例.docx"

# Documentクラスのオブジェクトを作成
doc = Document()

# Word文書をロードする
doc.LoadFromFile(inputFile)

# ドキュメントの各ページをビットマップに変換し、PNG形式で保存する
imageStream = doc.SaveImageToStreams(ImageType.Metafile)

# Pillowを使用してPNGイメージデータをJPEG形式に変換し、保存する
for i, image in enumerate(imageStream):
    img = Image.open(io.BytesIO(image.ToArray()))
    jpg_file = f"output/Images/image_{i}.jpg"
    img.convert("RGB").save(jpg_file, "JPEG")

doc.Close()

変換結果
Word文書をJPG画像に変換

保存時に他の形式に設定することもできます。

Word文書を長い画像に変換する

Spire.Doc for Pythonで文書を画像に変換した後は、Pillowで画像データを長い画像として出力することもできます。操作手順は以下の通りです。

  • Document クラスのオブジェクトを作成します。
  • Document.LoadFromFile() メソッドを使用してWord文書をロードします。
  • Document.SaveImageToStreams(ImageType.Bitmap) メソッドを使用してドキュメントをPNG画像に変換し、リストを返します。
  • 画像データを1枚の長い画像に合成します。
  • 合成した画像を保存します。

Python

from spire.doc import *
from spire.doc.common import *
from PIL import Image
import io

inputFile = "G:/文書/例.docx"

# Documentクラスのオブジェクトを作成
doc = Document()

# Word文書をロードする
doc.LoadFromFile(inputFile)

# ドキュメントの各ページをビットマップに変換し、リストとして返す
imageStream = doc.SaveImageToStreams(ImageType.Metafile)

# Pillowを使用して画像データを1つの長い画像に結合する
images = []
for image in imageStream:
    img = Image.open(io.BytesIO(image.ToArray()))
    images.append(img)

combined_image = Image.new("RGB", (images[0].width, sum(img.height for img in images)))
y_offset = 0
for img in images:
    combined_image.paste(img, (0, y_offset))
    y_offset += img.height

# 結合された画像を1つの長い画像として保存する
combined_image.save("output/Images/combined_image.jpg", "JPEG")

doc.Close()

変換結果
Word文書を長い画像に変換

この記事では、Word文書を画像に変換するためのSpire.Doc for Pythonの使用方法について説明します。Spire.Doc for Pythonには他にも多くの機能がありますので、Spire.Doc for Pythonのチュートリアルを参照してください。 もし質問があれば、Spire.Docのフォーラムで議論に参加することもできます。

1
1
0

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
1