2015-06-23 62 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); 
      } 
     }