【Python】Word文書からPDFへのバッチ変換を簡単に実現

Wordファイル（Doc、Docx）とPDFファイルは、広く使用されている文書フォーマットです。Word文書フォーマットは、コンテンツの編集時に明らかな利点があり、さまざまな編集ニーズに対応することができます。ただし、文書の完全性とフォーマットの一貫性を保証し、文書をクロスプラットフォームで互換性のある形式にするためには、PDF形式の方が適しています。PDF文書は、さまざまなプラットフォームやデバイスで開くことができ、文書のフォーマットと外観を一貫して維持することができます。また、セキュリティ面でも優れています。そのため、Word文書をPDFファイルに変換することは一般的な要求となっています。この記事では、[Spire.Doc for Python](https://www.e-iceblue.com/Introduce/doc-for-python.html)を使用して**Word文書をPDFファイルに変換する方法**、およびバッチ変換やさまざまな変換パラメータの設定について説明します。

- **[1つのWord文書をPDFファイルに変換する](#1つのword文書をpdfファイルに変換する)**
- **[Word文書をPDFファイルに一括変換](#word文書をpdfファイルに一括変換)**
- **[変換中に変換パラメータを設定する（暗号化、ブックマークの組み込み、フォントの埋め込み、画質の設定）](#変換中に変換パラメータを設定する暗号化ブックマークの組み込みフォントの埋め込み画質の設定)**

### Spire.Doc for Pythonの導入
このチュートリアルでは、[Spire.Doc for Python](https://www.e-iceblue.com/Download/Spire-Doc-Python.html)を使用する必要があります。以下のpipコマンドを使用して、それらを簡単にVSコードにインストールすることができます。
```
pip install Spire.Doc
```

## 1つのWord文書をPDFファイルに変換する
Spire.Doc for Pythonの**Document.SaveToFile()** メソッドを使用すると、WordをPDF、XPS、HTML、RTFなどの形式で保存できます。 以下は、Wordドキュメントを直接PDFファイルの手順として保存したものです：
- **Document** クラスのオブジェクトを作成します。
- **Document.LoadFromFile()** メソッドを使用してサンプル Word 文書を読み込みます。
- **Doucment.SaveToFile()** メソッドを使用して、ドキュメントを PDF ファイルとして保存します。

**Python**
```python
from spire.doc import *
from spire.doc.common import *

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

# Word文書を読み込む
document.LoadFromFile("G:/文書/例1.docx")

# 文書をPDFファイルとして保存する
document.SaveToFile("出力/PDF1.pdf", FileFormat.PDF)
document.Close()
```

**変換結果**
![Word文書をPDFファイルに変換する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/2e5d7e04-718a-94fb-f3f1-73be0e8ab3ab.png)

## Word文書をPDFファイルに一括変換
以下は、Word文書を一括でPDFファイルに変換する手順です。DocおよびDocx形式のWord文書に対応しています：
- **Document** クラスのオブジェクトを作成します。
- 指定されたフォルダ内のすべてのファイルを繰り返し処理し、接尾辞が .doc と .docx のファイルを特定します。
- **Document.LoadFromFile()** メソッドを使用して、ドキュメントを 1 つずつ読み込みます。
- **Document.SaveToFile()** メソッドを使用して、ドキュメントを PDF 形式に変換し、指定されたパスに保存します。

**Python**
```python
import os
from spire.doc import *
from spire.doc.common import *

# フォルダパスを取得する
folder_path = "G:/文書"

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

# フォルダ内のすべてのファイルを繰り返し処理する
for file_name in os.listdir(folder_path):
    if file_name.endswith(".doc") or file_name.endswith(".docx"):
        # ファイルのフルパスを構築する
        file_path = os.path.join(folder_path, file_name)
        
        # Word文書を読み込む
        document.LoadFromFile(file_path)

        # 出力ファイルのパスを生成する
        output_path = os.path.join("出力1", os.path.splitext(file_name)[0] + ".pdf")

        # 文書をPDFファイルとして保存する
        document.SaveToFile(output_path, FileFormat.PDF)
        document.Close()
    else:
        print(f"Ignoring file: {file_name}")
```

**変換結果**
![Word文書をPDFファイルに一括変換](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/18bfa6b6-ccbb-968d-cfec-c9b17c3e79bf.png)

## 変換中に変換パラメータを設定する（暗号化、ブックマークの組み込み、フォントの埋め込み、画質の設定）
また、Spire.Doc for Pythonは、**ToPdfParameterList** クラスのプロパティと **Document.JPEGQuality** プロパティによって、Word文書を変換する際の暗号化、ブックマークの追加、フォントの埋め込み、画質の設定などをサポートしています。 詳しい手順は以下の通りです：
- **Document** クラスのオブジェクトを作成します。
- **Document.LoadFromFile()** メソッドを使用して、サンプル Word 文書を読み込みます。
- **ToPdfParameterList** クラスのオブジェクトを作成します。
- **ToPdfParameterList.PdfSecurity.Encrypt()** メソッドを使用して、閲覧パスワードと権限パスワードを設定します。
- **ToPdfParameterList.CreateWordBookmarksUsingHeadings** プロパティ設定を使用して、すべてのレベルの見出しからPDFブックマークを生成することもできます。また、**ToPdfParameterList.CreateWordBookmarks** プロパティの設定を使用して、Word文書のブックマークをPDFブックマークに直接変換することもできます。
- フォント埋め込みを設定するには、**ToPdfParameterList.IsEmbeddedAllFonts** プロパティを使用します。
- 画質を設定するには、**Document.JPEGQuality** プロパティを使用します。
- **Doucment.SaveToFile()** メソッドを使用してパラメータを適用し、ドキュメントをPDFファイルとして保存します。

**Python**
```python
from spire.doc import *
from spire.doc.common import *

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

# Word文書をロードする
document.LoadFromFile("G:/文書/例1.docx")

# ToPdfParameterListクラスのオブジェクトを作成する
parameter = ToPdfParameterList()

# 閲覧パスワードと権限パスワードを設定する
openpsd = "password"
permissionpsd = "permission"
parameter.PdfSecurity.Encrypt(openpsd, permissionpsd, PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit)

# 見出しを使用してブックマークを作成する
parameter.CreateWordBookmarksUsingHeadings = True
# ブックマークを含める
# parameter.CreateWordBookmarks = True

# フォントを埋め込む
parameter.IsEmbeddedAllFonts = True

# 画像の品質を設定する
document.JPEGQuality = 40

# 文書をPDFファイルとして保存する
document.SaveToFile("出力/PDF2.pdf", parameter)
document.Close()
```

**変換結果**
![変換中に暗号化を設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/1a154f1c-1eba-101f-d40c-b6c5c2ba1c1c.png)
![変換中にブックマークの組み込みを設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/92a6f881-c9b0-b585-d754-caf249f0533b.png)
![変換中にフォントの埋め込みを設定](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/3107d714-6925-fea0-9e78-9e394f850ee8.png)

Spire.Doc for Pythonの使用は、PDF文書に変換されますWord文書の操作方法は上記のとおりです。 操作方法についてご不明な点や詳細をお知りになりたい場合は、[Spire.Docのフォーラム](https://www.e-iceblue.com/forum/spire-doc-f6.html)で議論することができます。