2012-05-04 68 views
1

我們使用PDFNet庫來提取PDF文件的內容。我們需要做的一件事是提取PDF中的URL。不幸的是,當你掃描文件中的元素時,你會得到一些網址,並且並不總是清楚哪個片段與哪個片段相關。使用PDFNet從PDF獲取網址

從PDFNet獲取完整網址的最佳方法是什麼?

+0

是一種類似tostring的方法從整個文檔中獲取文本輸出嗎? – Paparazzi

回答

1

鏈接作爲註釋存儲在頁面上。您可以執行類似下面的代碼來從註釋中獲取URI。 try/catch塊在那裏,因爲如果有任何值丟失,它們仍然會返回一個Obj對象,但是如果沒有拋出,就無法調用任何方法。

另外,請注意,並非所有看起來像鏈接的東西都是相同的。我們從同一個Word文件創建了兩個PDF。我們首先用PDF打印創建的。第二個是我們在Acrobat中創建的。

這兩個文件中的鏈接都可以在Acrobat Reader中正常工作,但只有第二個文件具有PDFNet可以看到的註釋。

Page page = doc.GetPage(1); 
for (int i = 1; j < page.GetNumAnnots(); j++) { 
    Annot annot = page.GetAnnot(i); 
    if (!annot.IsValid()) 
     continue; 
    var sdf = annot.GetSDFObj(); 
    string uri = ParseURI(sdf); 
    Console.WriteLine(uri); 
} 


private string ParseURI(pdftron.SDF.Obj obj) { 
    try { 
     if (obj.IsDict()) { 
      var aDictionary = obj.Find("A").Value(); 
      var uri = aDictionary.Find("URI").Value(); 
      return uri.GetAsPDFText(); 
     } 
    } catch (Exception) { 
     return null; 
    } 
    return null; 
}