2012-05-04 3 views
1

PDFNet 라이브러리를 사용하여 PDF 파일의 내용을 추출합니다. 우리가해야 할 일 중 하나는 PDF에서 URL을 추출하는 것입니다. 불행히도 파일의 요소를 검사 할 때 URL을 조각으로 가져오고 어떤 조각이 어느 부분으로 이동하는지 항상 명확하지는 않습니다.PDFNet을 사용하여 PDF에서 URL 가져 오기

PDFNet에서 전체 URL을 얻는 가장 좋은 방법은 무엇입니까?

+0

전체 문서에서 텍스트 출력을 얻는 방법은 토글링입니까? – Paparazzi

답변

1

링크는 주석으로 페이지에 저장됩니다. 주석으로부터 URI를 얻기 위해 다음 코드와 같은 것을 할 수 있습니다. try/catch 블록은 값이 누락 되어도 여전히 Obj 객체를 반환하기 때문에 거기에 있습니다.하지만 던지기 전에는 아무 메소드도 호출 할 수 없기 때문에 try/catch 블록이 있습니다.

또한 링크처럼 보이는 모든 것이 동일한 것은 아니라는 점에 유의하십시오. 동일한 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; 
}