通过 C++ 进行PDF 格式转换器

將 PDF 匯出到微軟辦公®用字、Excel、簡報、圖像、HTML 和固定佈局格式

概述

在極少數情況下,需要操作 PDF 以外的文件,同時以 PDF 格式提供解析數據。因此,對於此類應用程式,將有兩種方案,要麼在自己的解決方案中添加PDF解析功能,要麼添加PDF轉換功能以操作受支援格式的數據。對於將 PDF 轉換為 Word**、Excel、HTML、圖像或任何所需格式的第二種方案,在基於 .NET 的代碼中實現 C# PDF 閱讀器和轉換器 代碼非常簡單。我們在這裡討論的是幾種情況,以便程式師可以根據自己的要求修改這些轉換代碼片段。

PDF 到 Microsoft Word 2003-2019 轉換

示例:PDF 到 Word 轉換的 C# 代碼

String _dataDir("C:\\Samples\\Conversion\\");
String infilename("sample.pdf");
String outfilename("PDFToDOC.doc")

// 載入源檔
auto document = MakeObject<Document>(_dataDir + infilename);

// 使用保存選項保存
// 創建文件保存選項物件
auto saveOptions = MakeObject<DocSaveOptions>();

// 將識別模式設置為「流」表示「完全識別模式」
saveOptions->set_Mode(DocSaveOptions::RecognitionMode::Flow);
// 其他兩種模式是“識別模式”“文本框”和“識別模式增強流”

// 將「水平鄰近度」設置為2.5
saveOptions->set_RelativeHorizontalProximity(2.5f);

// 使值在轉換過程中識別項目符號
saveOptions->set_RecognizeBullets(true);

// 保存生成的文件檔檔
document->Save(_dataDir + outfilename, saveOptions);

Aspose.PDF for .NET 庫支持所有 PDF 到 Word 的轉換。 如果我們只是在沒有任何特殊設置的情況下轉換 Microsoft Word 文檔,我們只需使用 Document 類的 Save 方法加載 PDF 文件,並將使用輸出 Word 文檔路徑和 SaveFormat 作為參數。 對於需要增強線距、圖像分辨率和更多設置的特殊情況,API 具有公開所有此類設置的 DocSaveOptions 類。

將 PDF 另存為 Excel 檔

將 PDF 另存為 Excel 檔

String _dataDir("C:\\Samples\\Conversion\\");
String infilename("sample.pdf");
String outfilename("PDFToExcel.xlsx");
// 載入文件
auto document = MakeObject<Document>(_dataDir + infilename);
// 初始化快取選項
auto excelSave = MakeObject<ExcelSaveOptions>();
// 設置輸出輸出
excelSave->set_Format(ExcelSaveOptions::ExcelFormat::XLSX);
// 盡量減少工作表的數量
excelSave->set_MinimizeTheNumberOfWorksheets(true);
// 將 PDF 轉換為 Excel 輸出檔
document->Save(outfilename, excelSave);

專用 [保存格式](https://apireference.aspose.com/pdf/net/aspose.pdf/saveformat) 枚舉可用於將 PDF 保存為特定的微軟 Excel XLS XLSX 輸出格式。此外,.NET PDF庫還具有一個特殊的[ExcelSaveOptions類](https://apireference.aspose.com/pdf/net/aspose.pdf/excelsaveoptions),它不僅可以保存為Excel格式,還可以提供不同的功能和屬性來設置不同的屬性,如精確的輸出格式,最小化工作表的數量等等。

將 PDF 轉換為簡報

示例:C# 代碼 PDF 到 PowerPoint 的轉換

// String for path name
String _dataDir("C:\\Samples\\Conversion\\");
String infilename("sample-pptx.pdf");
String outfilename("sample-pptx.pptx");
// 載入文件
Document pdfDocument = new Document("document.pdf");
auto pptxOptions = MakeObject<PptxSaveOptions>();
pptxOptions->set_SlidesAsImages(true);
// 保存輸出檔
document->Save(_dataDir + outfilename, pptxOptions);

.NET PDF API 支持通过将幻灯片呈现为图像,将 PDF 页面转换为带有可选文本或图像的 PowerPoint 演示幻灯片。将便携式文档格式保存到 PowerPoint 的模式几乎相同,使用 Document 类加载文件,然后使用输出文件路径和 SaveFormat 作为参数调用 Save 方法。如果使用特殊的演示选项进行渲染,程序员可以将 pptxSaveOptions class 与任何相关的特定渲染选项一起使用。调用 save 方法并将选项作为参数传递。

可移植文件格式 PDF 到 HTML 的轉換

示例:用於 PDF 到 HTML 轉換的 C# 代碼

String _dataDir("C:\\Samples\\Conversion\\");
String infilename("sample.pdf");
String outfilename("PDFToHTML.html")

// 載入源文件
auto document = MakeObject<Document>(_dataDir + infilename);

// 實例化 HTML 儲存選項物件
auto htmlOptions = MakeObject<HtmlSaveOptions>();

// 為 PDF 到 HTML 指定單獨的資料夾(帶影像)
htmlOptions->SpecialFolderForAllImages = (_dataDir + String("\\images\\"));

// 將生成的 HTML 指定拆分為多個頁面的選項
htmlOptions->set_SplitIntoPages(true);

document->Save(_dataDir + outfilename, htmlOptions);

PDF 解析庫支援將 PDF 另存為整個 HTML 以及包含影像的嵌入資源。對於一般情況,將 PDF 轉換為其他格式的過程相同,例如載入源文檔並使用輸出 HTML 檔路徑和 SaveFormat.Html 作為參數調用 Save 方法。在使用嵌入式資源進行保存的情況下,有一個[HtmlSaveOptions類](https://apireference.aspose.com/pdf/net/aspose.pdf/htmlsaveoptions)具有多個選項,例如在轉換過程中將圖像保存到特定資料夾,將生成的HTML拆分為多個頁面等等。

將 PDF 轉換為影像

示例:PDF 到圖像轉換的 C# 代碼

// 載入文件
auto document = MakeObject<Document>(_dataDir + u"ConvertAllPagesToBmp.pdf");

// 創建解析度物件
 auto resolution = MakeObject<Aspose::Pdf::Devices::Resolution>(300); //300 dpi

// 創建具有指定屬性的映像設備
// 寬度、高度、解析度
System::SmartPtr<Aspose::Pdf::Devices::ImageDevice>
    jpegDevice = MakeObject<Aspose::Pdf::Devices::JpegDevice>(resolution);
// 對於 BMP、PNG、TIFF,它將分別是 BMP 設備、PNG 設備、Tiff 設備

// 轉換特定頁面並將圖像保存到流
jpegDevice->Process(document->get_Pages()->idx_get(1), imageStream);

// 關閉流
imageStream->Close();

使用下面列出的代碼片段,在基於 .NET 的應用程式中,將 PDF 頁面轉換為包括 PNG、JPEG、TIFF、BMP 等在內的圖像非常容易。開發人員可以在載入檔後遍歷 PDF 頁面,並將逐頁轉換為所需的圖像格式。開發人員可以使用[解析度類](https://apireference.aspose.com/pdf/net/aspose.pdf.devices/resolution)設置圖像的外解析度和垂直解析度