2015-06-23 21 views
0

我在确切地点放置签名图片PDF工作书签坐标。在PDF中,我添加了报告工具书签,因此我可以知道在哪里放置签名图像。问题是我不知道如何获取书签坐标。是否可以使用ITextsharp获取PDF

------> EDIT 书签

图片

enter image description here

-----> EDIT

解决办法是:

 PdfReader pdfReader = new PdfReader(GlobalVars.PdfFile); 
     IList<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(pdfReader); 
     string BookmarkID = ""; 
     for (int j = 0; j < bookmarks.Count; j++) 
     { 
      //MessageBox.Show(bookmarks[i].Values.ToArray().GetValue(0).ToString()); 
      string s = bookmarks[j].Values.ToArray().GetValue(0).ToString(); 
      if (bookmarks[j].Values.ToArray().GetValue(0).ToString() == "##PODPIS##") 
      { 
       BookmarkID = bookmarks[j].Values.ToArray().GetValue(1).ToString(); 
      } 


     } 

     var map = SimpleNamedDestination.GetNamedDestination(pdfReader, true); 
     foreach (KeyValuePair<string, string> entry in map) 
     { 
      if (entry.Key.ToString() == BookmarkID) 
      { 
       string[] LocationArray = entry.Value.Split(null); 
       GlobalVars.SignatuePageNumber = Convert.ToInt32(LocationArray[0]); 
       GlobalVars.SignatureX = float.Parse(LocationArray[2], CultureInfo.InvariantCulture.NumberFormat); 
       GlobalVars.SignatureY = float.Parse(LocationArray[3], CultureInfo.InvariantCulture.NumberFormat); 
      } 
     } 
+0

定义“书签”。你在谈论什么是正式命名为“大纲”,或者你在谈论“命名的目的地”?如果您正在讨论“大纲”,那么您称为“书签”的内容可以作为明确的目的地(这可以解决您的问题)实现为指定目的地,也可以作为另一个动作例如JavaScript(这会让你的问题难以回答)。总之:你的问题是不完整的。如果您不与我们分享PDF,我们无法为您提供帮助,因为在PDF中,“书签”可能意味着不同的事情。请更准确。 –

+0

我不知道它是轮廓还是它命名的目的地。我添加图片后,也许你可以弄明白。 – Igor

+0

根据图片,我们现在知道这是一个轮廓,但我们仍然不知道哪种轮廓。请分享PDF以便我们进行调查。或者在[iText RUPS](http://itextpdf.com/product/itext_rups)中打开PDF并向我们展示Outline是如何组成的。或者,你为什么不读[文件](http://pages.itextpdf.com/ebook-stackoverflow-questions.html),在那里你会找到答案,如http://stackoverflow.com/questions/27739820/阅读-pdf-bookmarks-in-vb-net-using-itextsharp –

回答

0

解决办法是:

 PdfReader pdfReader = new PdfReader(GlobalVars.PdfFile); 
     IList<Dictionary<string, object>> bookmarks = SimpleBookmark.GetBookmark(pdfReader); 
     string BookmarkID = ""; 
     for (int j = 0; j < bookmarks.Count; j++) 
     { 
      //MessageBox.Show(bookmarks[i].Values.ToArray().GetValue(0).ToString()); 
      string s = bookmarks[j].Values.ToArray().GetValue(0).ToString(); 
      if (bookmarks[j].Values.ToArray().GetValue(0).ToString() == "##PODPIS##") 
      { 
       BookmarkID = bookmarks[j].Values.ToArray().GetValue(1).ToString(); 
      } 


     } 

     var map = SimpleNamedDestination.GetNamedDestination(pdfReader, true); 
     foreach (KeyValuePair<string, string> entry in map) 
     { 
      if (entry.Key.ToString() == BookmarkID) 
      { 
       string[] LocationArray = entry.Value.Split(null); 
       GlobalVars.SignatuePageNumber = Convert.ToInt32(LocationArray[0]); 
       GlobalVars.SignatureX = float.Parse(LocationArray[2], CultureInfo.InvariantCulture.NumberFormat); 
       GlobalVars.SignatureY = float.Parse(LocationArray[3], CultureInfo.InvariantCulture.NumberFormat); 
      } 
     }