• <menu id="w2i4a"></menu>
  • logo Aspose.PDF使用教程

    文檔首頁(yè)>>Aspose.PDF使用教程>>PDF處理控件Aspose.PDF進(jìn)階技巧:在C#中將PDF轉(zhuǎn)換為PowerPoint PPTX

    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

    (安裝包僅提供部分功能,并設(shè)置限制,如需試用完整功能請(qǐng)申請(qǐng)免費(fèi)授權(quán)

    PDF至PPTX C#轉(zhuǎn)換–處理注釋或注釋

    當(dāng)告訴別人一些事情并使用演示文稿時(shí),我還喜歡在幻燈片上做筆記,畫(huà)箭頭,用幾何形狀繪制重音等。

    如何在PDF上繪圖?

    很簡(jiǎn)單,可以在Adobe Reader DC或Microsoft Edge中打開(kāi)PDF文件,然后使用鉛筆工具。默認(rèn)情況下,Adobe Reader使用紅色鉛筆。

    PDF處理控件Aspose.PDF進(jìn)階技巧:在C#中將PDF轉(zhuǎn)換為PowerPoint PPTX

    而Microsoft Edge使用藍(lán)色的。

    PDF處理控件Aspose.PDF進(jìn)階技巧:在C#中將PDF轉(zhuǎn)換為PowerPoint PPTX

    如果將此類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è)圖像。

    PDF處理控件Aspose.PDF進(jìn)階技巧:在C#中將PDF轉(zhuǎn)換為PowerPoint PPTX

    應(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),我們很高興為您提供查詢和咨詢
    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();