2013-10-09 3 views
2

간단한 PDF 파일을 구문 분석하고 내가 관심있는 텍스트를 추출하기 위해 간단한 Ruby 프로그램을 사용해 왔습니다. pdf-reader은 pdf 파일 구문 분석에 꽤 좋은 보석입니다. 나는 그 보석에 주어진 예제와 그 주위의 약간의 tutorials을 읽었습니다.Ruby에서 pdf를 구문 분석하는 방법

콜백 메서드를 시도하고 내 PDF 파일에서 모든 텍스트를 가져올 수있었습니다. 그러나 콜백의 주장에 대한 개념을 이해하지 못했습니다.

예를 들어, 내 pdf에 3 열 2 행의 간단한 테이블이있는 경우. (헤더 행 값은 이름, 주소, 나이입니다)와 첫 번째 행의 값은 (룬, Hoskote, 22)이며, U는 루비 스크립트 다음 루비를 실행할 때

receiver = PDF::Reader::RegisterReceiver.new 
reader = PDF::Reader.new("Arun.pdf") 
reader.pages.each do |page| 
    page.walk(receiver) 
    receiver.callbacks.each do |cb| 
     puts cb.inspect 
    end 
end 

이 콜백의 시리즈를 인쇄하는 중 일부 show_text_with_positioning 흥미로운 콜백 이 인수는 pdf 파일에 대해서 무엇을 상징 하는가, 위의 콜백에서

{:name=>:show_text_with_positioning, :args=>[["N", 5, "am", -4, "e"]]} 
{:name=>:show_text_with_positioning, :args=>[[" "]]} 
{:name=>:show_text_with_positioning, :args=>[["Ad", 6, "d", 3, "ress"]]} 
{:name=>:show_text_with_positioning, :args=>[[" "]]} 
{:name=>:show_text_with_positioning, :args=>[["Age"]]} 
{:name=>:show_text_with_positioning, :args=>[[" "]]} 
{:name=>:show_text_with_positioning, :args=>[["Ar", 4, "u", 3, "n"]]} 
{:name=>:show_text_with_positioning, :args=>[[" "]]} 
{:name=>:show_text_with_positioning, :args=>[["H", 3, "o", -5, "sk", 9, "o", -5,  "te"]]} 
{:name=>:show_text_with_positioning, :args=>[[" "]]} 
{:name=>:show_text_with_positioning, :args=>[["22"]]} 
{:name=>:show_text_with_positioning, :args=>[[" "]]} 

을 다음과 같이인가? 이 예제에서 'Arun'(여기에 무엇이든 올 수있는) 이름 값 또는 여기에 나이 값 i, '25'(여기에 값이 올 수 있음) 만 추출하려면 어떻게해야합니까? PDF 파일에서 하나의 "관심있는"값만 가져올 수있는 PDF- 파서 API 또는 Ruby API가 있습니까?

내가 원했던 특정 콜백에 액세스하기 위해 Ruby 프로그램을 작성하려면 어떻게해야합니까? 텍스트를 일단

receiver = PDF::Reader::TextReceiver.new($stdout) 
PDF::Reader.file("Arun.pdf", receiver) 

하면, 당신은 정기적으로 사용할 수 있습니다 당신은 특히 텍스트 만 원하는 경우

답변

0

, 당신은 (아마도 텍스트의 대상으로 다른 스트림을 사용하고 있지만) 이런 식으로 뭔가를 할 수 표현식 또는 원하는 특정 가치를 얻으려면 무엇이든 사용할 수 있습니다.