C++でWord文書をPDFに変換する方法

PDFは非常に人気のあるファイル形式であり、異なるデバイス上でコンテンツの形式を保持します。Word文書と比較して、PDFはより安全で、アーカイブや送信に適しています。これらは、我々はWordをPDFに変換する必要があります理由の一部です。この記事では、[Spire.Doc for C++](https://jp.e-iceblue.com/introduce/spire-doc-for-c.html)を使用して、**Word文書をPDFに変換する方法**と変換オプションを設定する方法について説明します。
- **[DocまたはDocxをPDFに変換する](#docまたはdocxをpdfに変換する)**
- **[ブックマーク付きのWord文書をPDFに変換する](#ブックマーク付きのword文書をpdfに変換する)**
- **[フォントを埋め込んだWord文書をPDFに変換する](#フォントを埋め込んだword文書をpdfに変換する)**
- **[WordからPDFに変換する際の画質を設定する](#wordからpdfに変換する際の画質を設定する)**
## 【依存関係の追加】
Spire.Doc for C++は、[NuGet](https://www.nuget.org/packages/Spire.Doc.Cpp/)を使用するか、[公式サイト](https://jp.e-iceblue.com/download/spire-doc-for-c.html)からパッケージをダウンロードすることでインストールできます。[詳しいインストール手順はこちらをご覧ください。](https://jp.e-iceblue.com/tutorials/cpp/spire-doc-cpp/doc-cpp-other/how-to-integrate-spiredoc-for-cpp-in-a-cpp-application.html)

## DocまたはDocxをPDFに変換する
Spire.Doc for C++が提供する **Document->SaveToFile(LPCWSTR_S fileName, FileFormat fileFormat)** メソッドは、WordをPDFとして保存できます。以下、詳しい手順を説明します。
- **Document** オブジェクトを作成します。
- **Document->LoadFromFile()** メソッドを使用してWordファイルを読み込みます。
- **Doucment->SaveToFile()** メソッドを使用して、文書をPDFに保存します。

**C++**
```C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

	//Documentのオブジェクトを作成する
	Document* document = new Document();

	//Wordファイルを読み込む
	document->LoadFromFile(L"C:/もう一人のクレオパトラ.docx");

	//文書をPDFに保存する
	document->SaveToFile(L"WordからPDFへの変換.pdf", FileFormat::PDF);
	document->Close();
	delete document;
}
```
![DocまたはDocxをPDFに変換する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/511d1e12-cf20-3366-8f62-c96aa2934550.png)
## ブックマーク付きのWord文書をPDFに変換する
ブックマークは文書の読みやすさを向上させることができます。Word文書からPDFを生成する場合、Word文書の既存のブックマークを保持するか、見出しからブックマークを作成することができます。以下は、ブックマーク付きのWord文書をPDFに変換する手順です。
- **Document** のオブジェクトを作成します。
- **Document->LoadFromFile()** メソッドを使用してWordファイルを読み込みます。
- 変換オプションを設定するための **ToPdfParameterList** のオブジェクトを作成します。
- **ToPdfParameterList.SetCreateWordBookmarksUsingHeadings()** メソッドを使用して、Wordの見出しからPDFにブックマークを作成します。
- **Doucment->SaveToFile(LPCWSTR_S fileName, ToPdfParameterList paramList)** メソッドを使用して、文書をブックマーク付きのPDFに保存します。

**C++**
```C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

	//Documentのオブジェクトを作成する
	Document* document = new Document();

	//Wordファイルを読み込む
	document->LoadFromFile(L"C:/もう一人のクレオパトラ.docx");

	//ToPdfParameterListのオブジェクトを作成する
	ToPdfParameterList* parameters = new ToPdfParameterList();

	//Word文書の見出しからブックマークを作成する
	parameters->SetCreateWordBookmarksUsingHeadings(true);

	//Word文書にある既存のブックマークからPDFにブックマークを作成する
	//parameters->SetCreateWordBookmarks(true);

	//文書をPDFに保存する
	document->SaveToFile(L"ブックマーク付きPDF.pdf", parameters);
	document->Close();
	delete document;
}
```
![ブックマーク付きのWord文書をPDFに変換する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/e1c31200-29b3-3f3c-7c74-234fe4925081.png)
## フォントを埋め込んだWord文書をPDFに変換する
Word文書で使用されているフォントをPDF文書に埋め込むことで、適切なフォントがインストールされていないデバイスでも、PDF文書が同じように見えるようにします。変換時にPDFにフォントを埋め込む手順は、以下の通りです。
- **Document** のオブジェクトを作成します。
- **Document->LoadFromFile()** を使用してWordファイルを読み込みます。
- 変換オプションを設定するために使用される **ToPdfParameterList** のオブジェクトを作成します。
- **ToPdfParameterList.SetIsEmbeddedAllFonts()** メソッドを使用して、生成されたPDFにフォントを埋め込みます。
- **Doucment->SaveToFile(LPCWSTR_S fileName, ToPdfParameterList paramList)** メソッドを使用して、文書をPDFに保存します。

**C++**
```C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

	//Documentのオブジェクトを作成する
	Document* document = new Document();

	//Wordファイルを読み込む
	document->LoadFromFile(L"C:/Users/Sirion/Desktop/もう一人のクレオパトラ.docx");

	//ToPdfParameterListのオブジェクトを作成する
	ToPdfParameterList* parameters = new ToPdfParameterList();

	//Word文書で使用されているフォントを生成されたPDFに埋め込む
	parameters->SetIsEmbeddedAllFonts(true);

	//文書をPDFに保存する
	document->SaveToFile(L"フォントが埋め込まれたPDF.pdf", parameters);
	document->Close();
	delete document;
}
```
![フォントを埋め込んだWord文書をPDFに変換する](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/278784/9ad548d4-f43b-e8ca-2b4b-3da3d280d10b.png)
## WordからPDFに変換する際の画質を設定する
高画質の画像を大量に含む文書は、ファイルサイズが大きくなります。Word文書をPDFに変換する際、画質を圧縮するかしないかを決めることができます。以下、詳しい手順を説明します。
- **Document** のオブジェクトを作成します。
- **Document->LoadFromFile()** メソッドを使用して Word ファイルを読み込みます。
- **Document->SetJPEGQuality()** メソッドを使用して、画質を設定します。
- **Doucment->SaveToFile()** メソッドを使用して、文書をPDFに保存します。

**C++**
```C++
#include "Spire.Doc.o.h";

using namespace Spire::Doc;
using namespace std;

int main() {

	//Documentのオブジェクトを作成する
	Document* document = new Document();

	//Wordファイルを読み込む
	document->LoadFromFile(L"C:/もう一人のクレオパトラ.docx");

	//画像を元の画質の40%に圧縮する
	document->SetJPEGQuality(40);

	//元の画質を維持する
	//document->SetJPEGQuality(100);

	//文書をPDFに保存する
	document->SaveToFile(L"画像の圧縮.pdf", FileFormat::PDF);
	document->Close();
	delete document;
}
```
> **Spire.Doc for C++は、Word文書をHTML、XML、XPS、画像など他の多くのフォーマットに変換することもできます。詳しくは[Spire.Docのフォーラム](https://www.e-iceblue.com/forum/spire-doc-f6.html)をご覧ください。**