使用 C++ 將 PUB 轉換為圖像

Microsoft Publisher (PUB) 文件用於打印或發布信息。在某些情況下,您可能需要共享這些文件,而接收方無權訪問 Microsoft Publisher。在這種情況下,在共享之前將這些文件轉換為圖像可能會有所幫助。為此,本文將教您如何使用 C++ 將 PUB 文件轉換為各種圖像格式。

用於將 PUB 文件轉換為圖像格式的 C++ API

我們將使用 Aspose.PUB for C++Aspose.PDF for C++ API 來執行此轉換。前者是用於處理 Microsoft Publisher (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 圖片的步驟。

以下示例代碼顯示瞭如何使用 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 圖像,請按照以下步驟操作。

以下示例代碼顯示瞭如何使用 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 圖像的步驟。

以下示例代碼演示瞭如何使用 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++ 將 Microsoft Publisher (PUB) 文件轉換為 JPG、PNG 和 TIFF 圖像。我們使用 Aspose.PUB for C++ 和 Aspose.PDF for C++ API 來實現這一點。您可以通過訪問它們的官方文檔來詳細探索這些 API。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。

也可以看看