2011-12-09 2 views
7

ITextSharp 또는 PDFBox를 사용하는 PDF 파일에서 텍스트를 추출하는 예제를 보았습니다. PDFBox는 텍스트를 추출하는 데 가장 신뢰할 수있는 방법 인 것처럼 보이지만 많은 추가 단계가 필요합니다..Net 용 PDFBox 작성 방법

here이라는 지침을 사용하여 DLL을 빌드하려했지만 .Net에 필요한 파일을 올바르게 빌드하는 방법을 모릅니다.

나는 잃어버린 누군가가 "인형을위한 .Net 응용 프로그램에 PDFBox를 포함"단계를 단계별로 제공 할 수 있습니까?

+0

java 및 lucene과 어떤 관련이 있습니까? – Manish

+2

PDFBox는 자바로 작성되었으며 종종 Lucene과 함께 사용됩니다. IKVM을 사용하여 .Net에서 Java 응용 프로그램을 사용하려고합니다. – SharpBarb

답변

21

마침내 작동하게되었습니다. 작업 예제를 얻으려는 단계를 간략하게 설명했습니다. 누군가 도움이되기를 바랍니다.

다운로드 Java JDK
다운로드 IKVM 0.42.0.6
다운로드 PDFBox 1.6.0-src.zip

Ant Manual은 도움이되었다.

나는 그들의 이름을 단축하기 위해 개미와 PDFBox 폴더의 이름을 변경하고 그들에게 내 C 이동 : 설정에 환경 변수를 드라이브

당신은해야합니다. (Windows 7) 내 컴퓨터 -> 속성 -> 고급 시스템 설정 -> 환경 변수를 마우스 오른쪽 단추로 클릭

다음 설정을 사용했지만 자바를 설치 한 위치와 Ant 및 PDF를 넣은 위치에 따라 다릅니다 박스 폴더.

 
Variable Value 
ANT_HOME C:\apache-ant\ 
JAVA_HOME C:\Program Files (x86)\Java\jdk1.7.0_01 
Path  ;C:\apache-ant\bin\  (Append semi-colon and path) 

일단이 완료 위의 모든 설정이 올바르게 경우, 명령 창에서 "개미"를 입력, 당신은 "build.xml 파일이 존재하지 않습니다!"메시지가 표시됩니다.

"pdfbox-1.6.0 \ pdfbox"폴더에서 build.xml 파일을 편집하십시오. 이있는 행을 찾으십시오. "."를 "Your IKVM Folder Path"로 바꾸십시오.

명령 창을 열고 CD를 : 광산처럼 보이는 있도록 "C : \ pdfbox-1.6.0 \ pdfbox을"과 "개미"

을 입력

나는 "iKVM을 \ C가"로 iKVM을 이동

... 그리고 기적이 발생합니다.

이제 pdfbox 폴더에 존재해야 새 폴더의 무리. 필요한 dll을의이 bin 폴더에 있습니다. 그 이유를 모르겠지만, 나는 "-snapshot"을 가지고 그리고 내 모든 파일의 끝 (pdfbox-1.6.0-SNAPSHOT.dll)

IKVM.GNU.Classpath (IKVM.OpenJDK.Classpath라고도 함)는 더 이상 존재하지 않으며 0.40 릴리스 이후 모듈화되었습니다. 이제는 여러 IKVM.OpenJDK dll 형식으로 사용할 수 있습니다. 당신은 그들 중 몇 개만 필요합니다.

는 비주얼 스튜디오 C#에서 새 프로젝트를 만들고

복사하여 비주얼 C# 프로젝트의 bin 폴더의 bin 폴더에 pdfBox bin 폴더에서 이러한 파일 :

 
pdfbox-1.6.0-SNAPSHOT.dll 
fontbox-1.6.0-SNAPSHOT.dll 
commons-logging.dll 

복사 iKVM을 함에서이 파일 당신의 비주얼 C# 프로젝트의 bin 폴더의 bin 폴더에 폴더 :

 
IKVM.OpenJDK.Core.dll 
IKVM.OpenJDK.SwingAWT.dll 
IKVM.OpenJDK.Text.dll 
IKVM.OpenJDK.Util.dll 
IKVM.Runtime.dll 

위의 iKVM을 DLL이의에 대한 참조를 추가하고 프로젝트를 빌드합니다.

pdfbox dll에 대한 참조를 추가하고 프로젝트를 다시 빌드하십시오.

이제 몇 가지 코드를 작성할 준비가되었습니다. 아래의 간단한 예제는 입력 PDF에서 멋진 텍스트 파일을 생성했습니다.

using System; 
using System.IO; 

using org.apache.pdfbox.pdmodel; 
using org.apache.pdfbox.util; 

namespace testPDF 
{ 
class Program 
{ 
    static void Main() 
    { 
     PDFtoText pdf = new PDFtoText(); 

     string pdfText = pdf.parsePDF(@"C:\Sample.pdf"); 

     using (StreamWriter writer = new StreamWriter(@"C:\Sample.txt")) 
     { writer.Write(pdfText); } 

    } 

    class PDFtoText 
    { 
     public string parsePDF(string filepath) 
     { 
      PDDocument document = PDDocument.load(filepath); 
      PDFTextStripper stripper = new PDFTextStripper(); 
      return stripper.getText(document); 
     } 

    } 
} 

} 
+1

OCR 레이어에서 텍스트를 읽는 데 IKVM.OpenJDK.Text.dll이 필요하다는 것을 깨달았습니다. – SharpBarb

+0

Ant는 더 이상 사용되지 않으며 Maven으로 바뀌 었습니다. [More here] (http://pdfbox.apache.org/building.html). – basiphobe

+0

친절한 설명에 감사드립니다. 누군가이 유용한 게시물을 소개했지만 Java와 완전히 관련이 없으며 이해하기에는 너무 가난합니다. 당신의 위대한 일이되기를 바랍니다! –