Microsoft Publisher (PUB) 文件用於打印或發布信息。在某些情況下,您可能需要共享這些文件,而接收方無權訪問 Microsoft Publisher。在這種情況下,在共享之前將這些文件轉換為圖像可能會有所幫助。為此,本文將教您如何使用 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 來執行此轉換。前者是用於處理 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 圖片的步驟。
- 使用 PubFactory::CreateParser(System::String fileName) 方法加載 PUB 文件。
- 使用 ConvertToPdf(System::SharedPtr) 將 PUB 文件轉換為 PDF 格式doc, System::String fileName) 方法。
- 使用 Document 類加載生成的 PDF 文件。
- 循環瀏覽 PDF 文件的頁面。
- 獲取 PDF 頁面的尺寸。
- 創建 Resolution 類的實例。
- 通過提供寬度、高度和分辨率實例化 JpegDevice 類。
- 為輸出圖像創建 FileStream 的實例。
- 使用 JpegDevice->Process(System::SharedPtr) 將 PDF 頁面轉換為 JPG 圖像頁,System::SharedPtr< System::IO::Stream > output) 方法。
- 關閉流。
以下示例代碼顯示瞭如何使用 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) 將 PUB 文件轉換為 PDF 格式doc, System::String fileName) 方法。
- 使用 Document 類加載生成的 PDF 文件。
- 循環瀏覽 PDF 文件的頁面。
- 獲取 PDF 頁面的尺寸。
- 創建 Resolution 類的實例。
- 通過提供寬度、高度和分辨率實例化 PngDevice 類。
- 為輸出圖像創建 FileStream 的實例。
- 使用 PngDevice->Process(System::SharedPtr頁面,System::SharedPtrSystem::IO::Stream輸出) 方法。
- 關閉流。
以下示例代碼顯示瞭如何使用 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) 將 PUB 文件轉換為 PDF 格式doc, System::String fileName) 方法。
- 使用 Document 類加載生成的 PDF 文件。
- 獲取第一個 PDF 頁面的尺寸。
- 創建 Resolution 類的實例。
- 創建 TiffSettings 類的實例並設置所需的設置。
- 通過提供寬度、高度、分辨率和 TiffSettings 實例化 TiffDevice 類。
- 為輸出圖像創建 FileStream 的實例。
- 使用 TiffDevice->Process( System::SharedPtrAspose::Pdf::Document文檔,int32t fromPage,int32t toPage,System::SharedPtrSystem::IO::Stream輸出) 方法。
- 關閉流。
以下示例代碼演示瞭如何使用 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。如有任何疑問,請隨時通過我們的免費支持論壇與我們聯繫。