PDF處理控件Aspose.PDF進階技巧:在C#中將PDF轉換為PowerPoint PPTX
在前一篇教程中,我們討論了如何在.NET應用程序中使用C#將PDF文件轉換為PowerPoint PPT / PPTX演示文稿。在大多數情況下,基本的轉換選項集效果很好。但是,在本文中,將討論將PDF轉換為PPTX的一些高級技巧:
- 處理注釋或評論
- 將裝飾圖形與內容圖像分開
目前,.NET版Aspose.PDF升級到v20.10版,新增支持ZUGFeRD附件,優化添加簽名功能嗎,修復XPS到PDF轉換異常等諸多Bug問題,感興趣的朋友可點擊下方按鈕下載最新版。
PDF至PPTX C#轉換–處理注釋或注釋
當告訴別人一些事情并使用演示文稿時,我還喜歡在幻燈片上做筆記,畫箭頭,用幾何形狀繪制重音等。
如何在PDF上繪圖?
很簡單,可以在Adobe Reader DC或Microsoft Edge中打開PDF文件,然后使用鉛筆工具。默認情況下,Adobe Reader使用紅色鉛筆。

而Microsoft Edge使用藍色的。

如果將此類PDF文件轉換為PPTX演示文稿,則所有注釋都將傳輸到PPTX文件。
我們該如何解決?
根據PDF標準,我們正在處理頁面的內容和名為注釋的其他元素。讓我們寫一小段C#代碼來研究此類文檔中存在哪些類型的注釋。
private static void ShowAnnotations() { var inputFileName = @"C:\tmp\Presentations\Sample Screen.pdf"; var document = new Aspose.Pdf.Document(inputFileName); foreach (var page in document.Pages) { foreach (var annotation in page.Annotations) { Console.WriteLine($"{page.Number} {annotation.FullName} {annotation.AnnotationType} {annotation.Color}"); } } }
執行后,我們將得到如下結果:
這意味著PDF頁面上有三種類型的注釋:
- 墨水–這是我們的鉛筆畫,
- 正方形-我們的矩形圖,
- 彈出窗口–彈出注釋會在彈出窗口中顯示文本,以供輸入和編輯。它不應單獨出現,而是與標記注釋及其父注釋相關聯,并應用于編輯父文本。在我們的示例中,彈出注釋與Ink和Square鏈接。它沒有外觀流,因此不會影響PDF到PPTX的轉換。
刪除PDF到PPTX轉換中的注釋
因此,為了刪除PDF中的其他圖形,我們應該刪除Ink和Square注釋。以下是執行此操作的步驟。
- 使用Page.Annotations屬性訪問注釋。
- 按類型過濾注釋。
- 循環瀏覽注釋,并使用Page.Annotations.Delete(Annotation)方法將其一一刪除。
下面的C#代碼段顯示了刪除PDF到PPTX轉換中的注釋的一種可能方法:
private static void RemoveAnnotations(Page page, Aspose.Pdf.Annotations.AnnotationType annotationType) { var annotations = page.Annotations.Where(a => a.AnnotationType == annotationType).ToArray(); foreach (var annotation in annotations) { page.Annotations.Delete(annotation); } }
如上所述,演示者可以使用不同的工具和顏色進行注釋,并且我們可以(如果需要)調整最后一個樣本。例如,我們只能刪除紅色(顏色代碼#E52237)注釋或某些演示者的注釋。
讓我們嘗試另一種方法來改善PDF到PPTX轉換中的圖形內容。
C#PDF到PPTX –從內容圖像中分離裝飾圖形
在將PDF轉換為PPTX時,通常將PDF文件中的所有圖像分組到輸出中的單個背景圖像中。這并不總是很方便,而且.NET的Aspose.PDF具有一種特殊的模式,可以在將PDF轉換為PPTX時更改轉換器的行為。
要啟用此模式,可以將SeparateImages屬性設置為true。以下代碼片段顯示了如何在C#中將PDF轉換為PPTX時使用此選項:
private static void ConvertPDFtoPPTX(string inputFileName, string outputFileName) { var document = new Aspose.Pdf.Document(inputFileName); foreach (var page in document.Pages) { RemoveAnnotations(page, Pdf.Annotations.AnnotationType.Ink); RemoveAnnotations(page, Pdf.Annotations.AnnotationType.Square); } var options = new Aspose.Pdf.PptxSaveOptions { SeparateImages = true, //CustomProgressHandler = ShowProgressOnConsole }; document.Save(outputFileName, options); }
因此,來自先前示例的幻燈片將被分為3個圖像。

應該注意的是,并非總是能夠準確地將背景圖像與內容圖像分開。因此,轉換器有時可能會出錯,并在內容中添加額外的元素。
還想要更多嗎?您可以點擊閱讀【2020 · Aspose最新資源整合】,查找需要的教程資源。如果您有任何疑問或需求,請隨時加入Aspose技術交流群(642018183),我們很高興為您提供查詢和咨詢。