PDF處理控件Aspose.PDF進(jìn)階技巧:在C#中將PDF轉(zhuǎn)換為PowerPoint PPTX
在前一篇教程中,我們討論了如何在.NET應(yīng)用程序中使用C#將PDF文件轉(zhuǎn)換為PowerPoint PPT / PPTX演示文稿。在大多數(shù)情況下,基本的轉(zhuǎn)換選項(xiàng)集效果很好。但是,在本文中,將討論將PDF轉(zhuǎn)換為PPTX的一些高級(jí)技巧:
- 處理注釋或評(píng)論
- 將裝飾圖形與內(nèi)容圖像分開(kāi)
目前,.NET版Aspose.PDF升級(jí)到v20.10版,新增支持ZUGFeRD附件,優(yōu)化添加簽名功能嗎,修復(fù)XPS到PDF轉(zhuǎn)換異常等諸多Bug問(wèn)題,感興趣的朋友可點(diǎn)擊下方按鈕下載最新版。
點(diǎn)擊下載最新版Aspose.PDF for .NET
PDF至PPTX C#轉(zhuǎn)換–處理注釋或注釋
當(dāng)告訴別人一些事情并使用演示文稿時(shí),我還喜歡在幻燈片上做筆記,畫(huà)箭頭,用幾何形狀繪制重音等。
如何在PDF上繪圖?
很簡(jiǎn)單,可以在Adobe Reader DC或Microsoft Edge中打開(kāi)PDF文件,然后使用鉛筆工具。默認(rèn)情況下,Adobe Reader使用紅色鉛筆。
而Microsoft Edge使用藍(lán)色的。
如果將此類PDF文件轉(zhuǎn)換為PPTX演示文稿,則所有注釋都將傳輸?shù)絇PTX文件。
我們?cè)撊绾谓鉀Q?
根據(jù)PDF標(biāo)準(zhǔn),我們正在處理頁(yè)面的內(nèi)容和名為注釋的其他元素。讓我們寫一小段C#代碼來(lái)研究此類文檔中存在哪些類型的注釋。
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}"); } } }
執(zhí)行后,我們將得到如下結(jié)果:
這意味著PDF頁(yè)面上有三種類型的注釋:
- 墨水–這是我們的鉛筆畫(huà),
- 正方形-我們的矩形圖,
- 彈出窗口–彈出注釋會(huì)在彈出窗口中顯示文本,以供輸入和編輯。它不應(yīng)單獨(dú)出現(xiàn),而是與標(biāo)記注釋及其父注釋相關(guān)聯(lián),并應(yīng)用于編輯父文本。在我們的示例中,彈出注釋與Ink和Square鏈接。它沒(méi)有外觀流,因此不會(huì)影響PDF到PPTX的轉(zhuǎn)換。
刪除PDF到PPTX轉(zhuǎn)換中的注釋
因此,為了刪除PDF中的其他圖形,我們應(yīng)該刪除Ink和Square注釋。以下是執(zhí)行此操作的步驟。
- 使用Page.Annotations屬性訪問(wèn)注釋。
- 按類型過(guò)濾注釋。
- 循環(huán)瀏覽注釋,并使用Page.Annotations.Delete(Annotation)方法將其一一刪除。
下面的C#代碼段顯示了刪除PDF到PPTX轉(zhuǎn)換中的注釋的一種可能方法:
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); } }
如上所述,演示者可以使用不同的工具和顏色進(jìn)行注釋,并且我們可以(如果需要)調(diào)整最后一個(gè)樣本。例如,我們只能刪除紅色(顏色代碼#E52237)注釋或某些演示者的注釋。
讓我們嘗試另一種方法來(lái)改善PDF到PPTX轉(zhuǎn)換中的圖形內(nèi)容。
C#PDF到PPTX –從內(nèi)容圖像中分離裝飾圖形
在將PDF轉(zhuǎn)換為PPTX時(shí),通常將PDF文件中的所有圖像分組到輸出中的單個(gè)背景圖像中。這并不總是很方便,而且.NET的Aspose.PDF具有一種特殊的模式,可以在將PDF轉(zhuǎn)換為PPTX時(shí)更改轉(zhuǎn)換器的行為。
要啟用此模式,可以將SeparateImages屬性設(shè)置為true。以下代碼片段顯示了如何在C#中將PDF轉(zhuǎn)換為PPTX時(shí)使用此選項(xiàng):
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); }
因此,來(lái)自先前示例的幻燈片將被分為3個(gè)圖像。
應(yīng)該注意的是,并非總是能夠準(zhǔn)確地將背景圖像與內(nèi)容圖像分開(kāi)。因此,轉(zhuǎn)換器有時(shí)可能會(huì)出錯(cuò),并在內(nèi)容中添加額外的元素。
還想要更多嗎?您可以點(diǎn)擊閱讀【2020 · Aspose最新資源整合】,查找需要的教程資源。如果您有任何疑問(wèn)或需求,請(qǐng)隨時(shí)加入Aspose技術(shù)交流群(642018183),我們很高興為您提供查詢和咨詢。