XPSおよびOXPSドキュメントは、レイアウト、外観、および印刷情報を定義します。これらのドキュメントはPDFファイルに似ています。 PDF形式の人気が高いため、XPSおよびOXPSドキュメントをPDF形式に変換する必要がある場合があります。そのために、この記事では、C++を使用してXPSおよびOXPSドキュメントをPDF形式に変換する方法を説明します。
XPSおよびOXPSドキュメントをPDF形式に変換するためのC++API
Aspose.Page for C++は、XPSおよびPostScriptファイルをレンダリングおよび操作するためのC++ライブラリです。 XPSドキュメントを作成、読み取り、更新できます。さらに、APIはXPSおよびOXPSドキュメントのPDF形式への変換をサポートしています。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。
PM> Install-Package Aspose.Page.Cpp
XPS/OXPSドキュメントをPDF形式に変換する
以下は、XPSおよびOXPSドキュメントをPDF形式に変換する手順です。
- 出力PDFファイルでストリームを初期化します。
- ソースXPS/OXPSファイルを使用してストリームを初期化します。
- XPS / OXPSストリームを使用して、XpsDocumentクラスのインスタンスを作成します。
- PdfSaveOptionsクラスのインスタンスを作成します。
- JpegQualityLevelやImageCompressionなどのオプションを指定します。
- [XpsDocument->Save(System::SharedPtr device, System::SharedPtr options)]メソッドを使用して出力PDFファイルを保存します。
次のサンプルコードは、C++を使用してXPS/OXPSドキュメントをPDF形式に変換する方法を示しています。
// 出力ファイル
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// 'using'ステートメントでリソースをクリアしています
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// ソースファイル
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// 'using'ステートメントでリソースをクリアしています
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// ストリームからXPSドキュメントをロードする
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// または、ファイルから直接XPSドキュメントをロードします。その場合、xpsStreamは必要ありません。
// XpsDocument document = new XpsDocument(inputFileName、new XpsLoadOptions());
// 必要なパラメータを使用してPdfSaveOptionsオブジェクトを初期化します。
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
tmp_0->set_JpegQualityLevel(100);
tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
return tmp_0;
}();
// PDF形式のレンダリングデバイスを作成する
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// PDFファイルを保存
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
XPS/OXPSドキュメントの選択したページをPDF形式に変換します
XPSおよびOXPSファイルをPDF形式に変換するときに、変換するページを指定することもできます。出力PDFファイルには、選択したページのみが含まれます。これを実現するには、以下の手順に従ってください。
- 出力PDFファイルでストリームを初期化します。
- ソースXPS/OXPSファイルを使用してストリームを初期化します。
- XPS / OXPSストリームを使用して、XpsDocumentクラスのインスタンスを作成します。
- PdfSaveOptionsクラスのインスタンスを作成します。
- JpegQualityLevelやImageCompressionなどのオプションを指定します。
- PdfSaveOptions->set_PageNumbers(System::ArrayPtr<int32_t> value)メソッドを使用して変換するページを指定します。
- XpsDocument->Save(System::SharedPtr device, System::SharedPtr options)メソッドを使用して出力PDFファイルを保存します。
次のサンプルコードは、C++を使用してXPSおよびOXPSドキュメントの選択したページをPDF形式に変換する方法を示しています。
// 出力ファイル
System::SharedPtr<System::IO::Stream> pdfStream = System::IO::File::Open(u"OutputDirectory\\XPStoPDF.pdf", System::IO::FileMode::Create, System::IO::FileAccess::Write);
// 'using'ステートメントでリソースをクリアしています
System::Details::DisposeGuard<1> __dispose_guard_1({ pdfStream });
// ------------------------------------------
try {
// ソースファイル
System::SharedPtr<System::IO::Stream> xpsStream = System::IO::File::Open(u"SourceDirectory\\sample.xps", System::IO::FileMode::Open, System::IO::FileAccess::Read);
// 'using'ステートメントでリソースをクリアしています
System::Details::DisposeGuard<1> __dispose_guard_0({ xpsStream });
// ------------------------------------------
try
{
// ストリームからXPSドキュメントをロードする
System::SharedPtr<XpsDocument> document = System::MakeObject<XpsDocument>(xpsStream, System::MakeObject<XpsLoadOptions>());
// または、ファイルから直接XPSドキュメントをロードします。その場合、xpsStreamは必要ありません。
// XpsDocument document = new XpsDocument(inputFileName、new XpsLoadOptions());
// 必要なパラメータを使用してPdfSaveOptionsオブジェクトを初期化します。
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions> options = [&] {
auto tmp_0 = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfSaveOptions>();
tmp_0->set_JpegQualityLevel(100);
tmp_0->set_ImageCompression(Aspose::Page::XPS::Presentation::Pdf::PdfImageCompression::Jpeg);
tmp_0->set_TextCompression(Aspose::Page::XPS::Presentation::Pdf::PdfTextCompression::Flate);
tmp_0->set_PageNumbers(System::MakeArray<int32_t>({ 1, 3 }));
return tmp_0;
}();
// PDF形式のレンダリングデバイスを作成する
System::SharedPtr<Aspose::Page::XPS::Presentation::Pdf::PdfDevice> device = System::MakeObject<Aspose::Page::XPS::Presentation::Pdf::PdfDevice>(pdfStream);
// PDFファイルを保存
document->Save(device, options);
}
catch (...)
{
__dispose_guard_0.SetCurrentException(std::current_exception());
}
}
catch (...)
{
__dispose_guard_1.SetCurrentException(std::current_exception());
}
無料ライセンスを取得する
無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。
結論
この記事では、C++を使用してXPSおよびOXPSドキュメントをPDF形式に変換する方法を学習しました。さらに、Aspose.Page for C++ APIを使用して、XPS/OXPSドキュメントの選択したページをPDF形式に変換する方法を見てきました。 APIは、公式ドキュメントにアクセスして詳細に調べることができるXPSドキュメントを操作するための多くの追加機能を提供します。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。