2012-05-04 25 views
1

PDFNetライブラリを使用してPDFファイルの内容を抽出しています。必要なことの1つは、PDF内のURLを抽出することです。残念なことに、ファイル内の要素をスキャンすると、URLが部分的に取得され、どの部分がどの部分に合っているかは必ずしも明確ではありません。PDFNetを使用してPDFからURLを取得する

PDFNetから完全なURLを取得する最良の方法は何ですか?

+0

ドキュメント全体からテキスト出力を得るためのtostringのような方法はありますか? – Paparazzi

答えて

1

リンクは注釈としてページに保存されます。アノテーションからURIを取得するには、次のコードのような処理を行うことができます。 try/catchブロックが存在するのは、値のいずれかが欠落していてもObjオブジェクトを返しますが、スローすることなくメソッドを呼び出すことができないからです。

また、リンクのように見えるものはすべて同じではないことに注意してください。同じWordファイルから2つのPDFを作成しました。最初に私たちはPDFで印刷して作成しました。 2番目はAcrobatで作成したものです。

両方のファイルのリンクはAcrobat Readerで正常に動作しますが、2番目のファイルだけが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; 
} 
関連する問題