2010-06-27 138 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。它应该是相当简单的通过一些小的调整,以获得其他部分(如果需要)用这种方法。

相关问题