2010-06-27 85 views
4

我正在尋找一種方法來閱讀單PowerPoint演示文稿中幻燈片之間的鏈接。我需要打開一個PowerPoint文件並檢索幻燈片互相之間的所有鏈接。如何檢索演示文稿中PowerPoint幻燈片之間的鏈接

現在我正在使用Aspose,但看起來他們沒有任何東西可以讀取幻燈片之間的鏈接。

我讀了一些關於PowerPoint 2007/2010文件格式的文章,發現它只是一個zip文件。重命名後,您可以看到其中的所有xml數據。有沒有人知道它裏面的許多xml文件中的哪一個包含了什麼幻燈片鏈接和幻燈片的信息?

我需要在C#或VB.NET中完成它。

回答

2

如果您不必這樣做,那麼就不需要去OpenXML--這可以通過對象模型完成。這是如何在VBA中完成的,它可以輕鬆移植到C#或VB.NET。

Sub PrintInteralLinks() 
    Dim ap As Presentation 
    Set ap = ActivePresentation 
    Dim hs As Hyperlinks 
    Dim h As Hyperlink 
    Dim sl As Slide 
    Dim linkedToSlide As String 
    Dim slideTitle As Integer 
    For Each sl In ap.Slides 
     Set hs = sl.Hyperlinks 
     For Each h In hs 
      slideTitle = InStrRev(h.SubAddress, ",") 
      If slideTitle > 0 Then 
       linkedToSlide = Mid(h.SubAddress, slideTitle + 1) 
       Debug.Print sl.Name & " links to " & linkedToSlide 
      End If 
     Next 
    Next 
End Sub 

slideTitle = InStrRev(h.SubAddress, ",")雖然不是萬無一失的。內部鏈接的模式爲#,#,Slide Title,因此您可能需要像使用某些RegEx一樣使其更好。

0

在C#中做到這一點,這裏是找到鏈接的幻燈片的好方法:

private int GetSlideIndexFromHyperlink(Hyperlink hyperlink) 
    { 
     var subAddrParts = hyperlink.SubAddress.Split(','); 
     return int.Parse(subAddrParts[1]); 
    } 

注意,超鏈接是對你所關心的形狀所需的ActionSettings內發現的(在我的情況下,它是shape.ActionSettings[PpMouseActivation.ppMouseClick]

子地址在PowerPoint鏈接被格式化等SlideId,SlideIndex,SlideTitle。它應該是相當簡單的通過一些小的調整,以獲得其他部分(如果需要)用這種方法。

相關問題