Microsoft Publisher(PUB)ファイルは、情報の印刷または公開に使用されます。これらのファイルを共有する必要があり、受信側がMicrosoftPublisherにアクセスできないシナリオが存在する可能性があります。このような場合、共有する前にこれらのファイルを画像に変換すると便利です。そのために、この記事では、C++を使用してPUBファイルをさまざまな画像形式に変換する方法を説明します。
- PUBファイルを画像形式に変換するためのC++API
- C++を使用してPUBファイルをJPG画像に変換する
- C++を使用してPUBファイルをPNG画像に変換する
- C++を使用したPUBファイルのTIFF画像への変換
PUBファイルを画像形式に変換するためのC++API
この変換を実行するには、Aspose.PUB for C++およびAspose.PDF for C++APIを使用します。前者はMicrosoftPublisher(PUB)ファイルを操作するためのライブラリであり、後者はPDFファイルを作成、読み取り、および変更するためのライブラリです。 Aspose.PUB for C++ APIを使用してPUBファイルをPDF形式に変換し、Aspose.PDF for C++APIを使用して生成されたPDFファイルを画像形式に変換します。 NuGetを介してAPIをインストールするか、ダウンロードセクションから直接ダウンロードできます。
PM> Install-Package Aspose.PUB.Cpp
PM> Install-Package Aspose.PDF.Cpp
C++を使用してPUBファイルをJPG画像に変換する
PUBファイルをJPG画像に変換する手順は次のとおりです。
- PubFactory::CreateParser(System::String fileName)メソッドを使用してPUBファイルをロードします。
- ConvertToPdf(System::SharedPtr doc, System::String fileName)メソッド。
- Documentクラスを使用して生成されたPDFファイルをロードします。
- PDFファイルのページをループします。
- PDFページの寸法を取得します。
- Resolutionクラスのインスタンスを作成します。
- 幅、高さ、解像度を指定して、JpegDeviceクラスをインスタンス化します。
- 出力画像のFileStreamのインスタンスを作成します。
- JpegDevice->Process(System::SharedPtr page, System::SharedPtr< System::IO::Stream> output)メソッドを使用してPDFページをJPG画像に変換します。
- ストリームを閉じます。
次のサンプルコードは、C++を使用してPUBファイルをJPG画像に変換する方法を示しています。
// ソースPUBと出力PDFファイルパス
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";
// PUBファイルをロードします
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();
// PUBファイルをPDFに変換する
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);
// 生成されたPDFファイルをロードします
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);
// PDFページを繰り返し処理します
for (auto page : pdfDocument->get_Pages())
{
// PDFページの寸法を取得する
int width = info->GetPageWidth(page->get_Number());
int height = info->GetPageHeight(page->get_Number());
// Resolutionクラスのインスタンスを作成します
auto resolution = MakeObject<Devices::Resolution>(300);
// 指定された幅、高さ、解像度でJPEGデバイスを作成します
auto device = MakeObject<Devices::JpegDevice>(width, height, resolution);
// 出力画像のファイルストリームを作成します
System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(String::Format(u"OutputDirectory\\page_{0}.jpg", page->get_Number()));
// PDFページをJPG画像に変換します
device->Process(page, imageStream);
// ストリームを閉じる
imageStream->Close();
}
C++を使用してPUBファイルをPNG画像に変換する
PUBファイルをPNG画像に変換するには、以下の手順に従ってください。
- PubFactory::CreateParser(System::String fileName)メソッドを使用してPUBファイルをロードします。
- ConvertToPdf(System::SharedPtr doc, System::String fileName)メソッド。
- Documentクラスを使用して生成されたPDFファイルをロードします。
- PDFファイルのページをループします。
- PDFページの寸法を取得します。
- Resolutionクラスのインスタンスを作成します。
- 幅、高さ、解像度を指定して、PngDeviceクラスをインスタンス化します。
- 出力画像のFileStreamのインスタンスを作成します。
- PngDevice->Process(System::SharedPtr page, System::SharedPtrSystem::IO::Stream output)メソッド。
- ストリームを閉じます。
次のサンプルコードは、C++を使用してPUBファイルをPNG画像に変換する方法を示しています。
// ソースPUBと出力PDFファイルパス
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";
// PUBファイルをロードします
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();
// PUBファイルをPDFに変換する
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);
// 生成されたPDFファイルをロードします
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);
// PDFページを繰り返し処理します
for (auto page : pdfDocument->get_Pages())
{
// PDFページの寸法を取得する
int width = info->GetPageWidth(page->get_Number());
int height = info->GetPageHeight(page->get_Number());
// Resolutionクラスのインスタンスを作成します
auto resolution = MakeObject<Devices::Resolution>(300);
// 指定された幅、高さ、解像度でPNGデバイスを作成します
auto device = MakeObject<Devices::PngDevice>(width, height, resolution);
// 出力画像のファイルストリームを作成します
System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(String::Format(u"OutputDirectory\\page_{0}.png", page->get_Number()));
// PDFページをPNG画像に変換する
device->Process(page, imageStream);
// ストリームを閉じる
imageStream->Close();
}
C++を使用したPUBファイルのTIFF画像への変換
PUBファイルをTIFF画像に変換する手順は次のとおりです。
- PubFactory::CreateParser(System::String fileName)メソッドを使用してPUBファイルをロードします。
- ConvertToPdf(System::SharedPtr doc, System::String fileName)メソッド。
- Documentクラスを使用して生成されたPDFファイルをロードします。
- 最初のPDFページのサイズを取得します。
- Resolutionクラスのインスタンスを作成します。
- TiffSettingsクラスのインスタンスを作成し、必要な設定を行います。
- 幅、高さ、解像度、およびTiffSettingsを指定して、TiffDeviceクラスをインスタンス化します。
- 出力画像のFileStreamのインスタンスを作成します。
- TiffDevice->Process(System::SharedPtrAspose::Pdf::Document document, int32_t fromPage, int32_t toPage, System::SharedPtrSystem::IO::Stream output)メソッドを使用してPDFファイルをTIFF画像に変換します。
- ストリームを閉じます。
次のサンプルコードは、C++を使用してPUBファイルをTIFF画像に変換する方法を示しています。
// ソースPUBと出力PDFファイルパス
System::String filePub = u"SourceDirectory\\1.pub";
System::String filePdf = u"OutputDirectory\\1.pdf";
// PUBファイルをロードします
System::SharedPtr<IPubParser> parser = PubFactory::CreateParser(filePub);
System::SharedPtr<Aspose::Pub::Document> document = parser->Parse();
// PUBファイルをPDFに変換する
PubFactory::CreatePdfConverter()->ConvertToPdf(document, filePdf);
// 生成されたPDFファイルをロードします
auto pdfDocument = MakeObject<Aspose::Pdf::Document>(filePdf);
auto info = MakeObject<Facades::PdfFileInfo>(pdfDocument);
// 最初のPDFページの寸法を取得する
int width = info->GetPageWidth(1);
int height = info->GetPageHeight(1);
// Resolutionクラスのインスタンスを作成します
auto resolution = MakeObject<Devices::Resolution>(300);
// TiffSettingsクラスのインスタンスを作成し、必要な設定を設定します
auto settings = MakeObject<Devices::TiffSettings>();
settings->set_Compression(Devices::CompressionType::None);
settings->set_Depth(Devices::ColorDepth::Default);
// 指定された幅、高さ、解像度、TiffSettingsでTIFFデバイスを作成します
auto device = MakeObject<Devices::TiffDevice>(width, height, resolution, settings);
// 出力画像のファイルストリームを作成します
System::SharedPtr<System::IO::FileStream> imageStream = System::IO::File::Create(u"OutputDirectory\\pdf.tiff");
// PDFファイルをTIFF画像に変換します
device->Process(pdfDocument, 1, 1, imageStream);
// ストリームを閉じる
imageStream->Close();
無料ライセンスを取得する
無料の一時ライセンスをリクエストすることで、評価の制限なしにAPIを試すことができます。
結論
この記事では、C++を使用してMicrosoftPublisher(PUB)ファイルをJPG、PNG、およびTIFF画像に変換する方法を学習しました。これを実現するために、C++用のAspose.PUBとC++API用のAspose.PDFを使用しました。これらのAPIについては、公式ドキュメントにアクセスして詳しく調べることができます。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。