获取ABCPdf中IndirectObject的页码

时间:2015-04-21 10:28:58

标签: pdf abcpdf

我有一个脚本处理来自对象汤的间接对象(它处理PDF的图像)。

所以,我有IndirectObject,我需要它的页码:

var indiObj = sourceDoc.ObjectSoup[objectToProcess];

我尝试使用sourceDoc.GetInfo(indiObj.ID, "whatever");,但我不知道哪个属性可以用作类型,因为我找不到任何可能属性列表的文档。

1 个答案:

答案 0 :(得分:1)

我询问了版本,因为我正在使用版本7 :(

这是一个有趣的问题(恕我直言)。我首先想到这可能有用:

 oDoc.ObjectSoup.Catalog.Pages.GetPageArray

但是,尽管你得到了这些页面,你仍然无法获得每个页面的对象汤(至少在版本7中)......

所以,也许,你可以尝试这样的东西,就像'对象汤'中的PDF代码一样从顶部到底部:

    Dim oDoc As New WebSupergoo.ABCpdf7.Doc
    Using oDoc
        oDoc.Read(path_to_your_PDF)

        Dim iPage As Integer = 0
        Dim sType As String

        For iAux As Integer = 0 To oDoc.ObjectSoup.Count - 1
            sType = oDoc.ObjectSoup(iAux).GetType.ToString()
            Select Case sType
                Case "WebSupergoo.ABCpdf7.Objects.Page"
                    iPage += 1
                    Debug.Print(vbNewLine & "Page " & iPage.ToString & " detected")
                Case "WebSupergoo.ABCpdf7.Objects.PixMap"
                    Dim oPDFImg As WebSupergoo.ABCpdf7.Objects.PixMap
                    oPDFImg = CType(oDoc.ObjectSoup(iAux), WebSupergoo.ABCpdf7.Objects.PixMap)
                    Debug.Print(vbNewLine & "Image on page " & iPage.ToString & " -> ID " & oPDFImg.ID.ToString)
            End Select
        Next
    End Using

您可以使用“typeof”而不是Select Case(无论如何将'ABCpdf7'更改为'ABCpdf9')。希望它有所帮助。