2014-05-15 26 views
-1

我试图找出死书签和PDF上的链接,为此我将所有命名的目的地存储在字典中,并试图存储目标页面,以便我可以验证其有效页面还是不是?我正在尝试这样的..命名目的地到目标页码

 For Each named As KeyValuePair(Of String, PdfObject) In reader.GetNamedDestinationFromStrings() 

      If Not namedDestinations.ContainsKey(named.Key) Then 
       namedDestinations.Add(named.Key, named.Value) 

       Dim thisDest As PdfArray = DirectCast(named.Value, PdfArray) 

       Dim a As PdfIndirectReference = DirectCast(thisDest(0), PdfIndirectReference) 

       Dim thisPage As PdfDictionary = PdfReader.GetPdfObject(a) 

      End If 
     Next 

这段代码我从其他线程复制,我需要赶上页码。否则我们是否有其他方法来验证死链接和书签。

+0

我假设你复制了一些代码而不知道它是关于什么的。因此,阅读你的问题的人不知道你想达到什么目的。我们可以阅读你的问题,但代码片段似乎与问题无关。 –

+0

http://stackoverflow.com/questions/10315797/how-do-i-get-section-target-page-number-in-pdf-file-using-itextsharp,我读这个论坛从注释中找到目标页面,同样我适用于套件我的程序...,没有线索如何从本页达到页码..,这是我的问题.. – arivu

+0

对于k作为整数= 1对于reader.NumberOfPages 如果thisPage.Equals(读者.GetPageN(k))然后 msgbox k 退出 结束如果 Next',如果我使用此代码我可以捕获页码,但我们有任何其他直接的方法来获取页码.. – arivu

回答

0

要更改您的问题:要从PDF文档获取所有已命名的目标,而不是页面引用,您希望获取页码。

但是,您正在使用返回页面引用的reader.GetNamedDestinationFromStrings()

相反,你应该使用:

Dictionary<string,string> map = SimpleNamedDestination.GetNamedDestination(reader, false); 

,让你的目的地在'string'(该Dictionary的值)的形式。

这样的string看起来像这样:3 XYZ 36 802 0其中第一个元素(3)是页码。

+1

OMG。 ..这就是我所期待的......感谢布鲁诺.. – arivu

+0

我们是否有任何方法从页面注释中得到字符串? – arivu

+0

你必须更具体。 (引用)命名的目标存储在PDF的根对象中。 (引用)注释存储在页面的/ Annotations数组中。命名的目的地可以在链接注释中使用。链接注释只是许多可能的注释类型中的一种。当你要求从页面标注中得到字符串时,你的意思并不清楚,因为一些标注很难在字符串中捕获。 –