翻譯|使用教程|編輯:李顯亮|2020-10-20 11:07:46.837|閱讀 652 次
概述:在大多數(shù)情況下,基本的轉(zhuǎn)換選項集效果很好。但是,今天,我們將討論將PDF轉(zhuǎn)換為PPTX的一些高級技巧——處理注釋或評論,將裝飾圖形與內(nèi)容圖像分開等內(nèi)容。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
在前一篇教程中,我們討論了如何在.NET應(yīng)用程序中使用C#將PDF文件轉(zhuǎn)換為PowerPoint PPT / PPTX演示文稿。在大多數(shù)情況下,基本的轉(zhuǎn)換選項集效果很好。但是,在本文中,將討論將PDF轉(zhuǎn)換為PPTX的一些高級技巧:
目前,.NET版Aspose.PDF升級到v20.10版,新增支持ZUGFeRD附件,優(yōu)化添加簽名功能嗎,修復(fù)XPS到PDF轉(zhuǎn)換異常等諸多Bug問題,感興趣的朋友可點擊下方按鈕下載最新版。
當(dāng)告訴別人一些事情并使用演示文稿時,我還喜歡在幻燈片上做筆記,畫箭頭,用幾何形狀繪制重音等。
很簡單,可以在Adobe Reader DC或Microsoft Edge中打開PDF文件,然后使用鉛筆工具。默認(rèn)情況下,Adobe Reader使用紅色鉛筆。
而Microsoft Edge使用藍(lán)色的。
如果將此類PDF文件轉(zhuǎn)換為PPTX演示文稿,則所有注釋都將傳輸?shù)絇PTX文件。
根據(jù)PDF標(biāo)準(zhǔn),我們正在處理頁面的內(nèi)容和名為注釋的其他元素。讓我們寫一小段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}"); } } }
執(zhí)行后,我們將得到如下結(jié)果:
這意味著PDF頁面上有三種類型的注釋:
因此,為了刪除PDF中的其他圖形,我們應(yīng)該刪除Ink和Square注釋。以下是執(zhí)行此操作的步驟。
下面的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)整最后一個樣本。例如,我們只能刪除紅色(顏色代碼#E52237)注釋或某些演示者的注釋。
讓我們嘗試另一種方法來改善PDF到PPTX轉(zhuǎn)換中的圖形內(nèi)容。
在將PDF轉(zhuǎn)換為PPTX時,通常將PDF文件中的所有圖像分組到輸出中的單個背景圖像中。這并不總是很方便,而且.NET的Aspose.PDF具有一種特殊的模式,可以在將PDF轉(zhuǎn)換為PPTX時更改轉(zhuǎn)換器的行為。
要啟用此模式,可以將SeparateImages屬性設(shè)置為true。以下代碼片段顯示了如何在C#中將PDF轉(zhuǎn)換為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個圖像。
應(yīng)該注意的是,并非總是能夠準(zhǔn)確地將背景圖像與內(nèi)容圖像分開。因此,轉(zhuǎn)換器有時可能會出錯,并在內(nèi)容中添加額外的元素。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn