문제

Ruby (Linux 및 OSX)에서 대형 PDF 파일을 읽거나 구문 분석하는 빠르고 신뢰할 수있는 방법을 찾고 있습니다.

지금까지 나는 다소 오래되고 단순하다는 것을 알았습니다 pdf-toolkit (ㅏ pdftotext-Wrapper) 및 PDF- 리더, 내 파일의 대부분을 읽을 수 없었습니다. 두 라이브러리는 내가 찾고 있던 기능을 정확하게 제공하지만.

내 질문 : 내가 뭔가를 놓쳤습니까? 내 문제를 해결하기 위해 더 적합하고 (빠르고 신뢰할 수있는) 도구가 있습니까?

도움이 되었습니까?

해결책

당신은 찾을 수 있습니다 docsplit 유용한:

DocSplit은 문서를 구성 요소 부분으로 분할하기위한 명령 줄 유틸리티 및 Ruby 라이브러리입니다. 검색 가능한 UTF-8 일반 텍스트, 페이지 이미지 또는 썸네일, 모든 형식, PDF, 단일 페이지 및 문서 메타 데이터 (제목, 저자, 페이지 수 ...)

다른 팁

다른 방법을 시도한 후에는 사용 중입니다 pdf-toolkit 지금. 꽤 오래되었지만 빠르고 안정적이며 신뢰할 수 있습니다. 게다가, 그것은 단지 새로울 필요가 없습니다. XPDF CommandLine 유틸리티.

Jruby 및 ApachePDFBox와 같은 Java PDF 라이브러리 파서를 사용할 수 있습니다.https://www.ohloh.net/p/pdfbox). 또한보십시오 http://java-source.net/open-source/pdf-libraries.

몇 가지 옵션이 있습니다.

http://en.wikipedia.org/wiki/list_of_pdf_software

해당 링크와 SourceForge 검색에서는 다음과 같이 원하는 작업을 수행 할 수있는 몇 가지 명령 줄 유틸리티가 있습니다. http://pdftohtml.sourceforge.net/

요구 사항과 PDF의 모습에 따라 Google Docs API를 사용하여 (PDF를 업로드 한 다음 텍스트로 다운로드) 또는 같은 것을 시도 할 수 있습니다. 고유. 나는 과거에 Gocr과 함께 이미지 텍스트를 구문 분석하는 많은 운이 있었고, 당신은 껍질로 튀어 나와서 gocr -i whatever.pdf (PDF와 함께 작동한다고 생각합니다).

이들 모두의 단점은 순수한 루비 구현이 아니지만 많은 양의 (무료) OCR 프로젝트가 그런 식으로 수행되는 것 같습니다.

PDF 파일에서 텍스트 콘텐츠를 가져와야하는 경우 SourceForge의 PDFTOHTML이 효율적입니다. 이미지를 다루는 데 적합하지 않습니다.

당신은 combinepdf 도서관?

페이지 추출, 다른 PDF 페이지를 다른 PDF 페이지를 오버레이, 페이지 번호 매기기, 기본 텍스트 및 테이블 작성 등과 같은 일부 PDF 조작을 허용하는 순수한 루비 솔루션입니다.

다음은 로고가있는 기존 PDF 파일을 그루터기위한 예입니다. 이 예제는 PDF 파일을 읽고 스탬프로 사용할 한 페이지를 추출하고 다른 PDF 파일을 스탬프합니다.

require 'combine_pdf'
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf = CombinePDF.load "content_file.pdf"
pdf.pages.each {|page| page << company_logo}
pdf.save "content_with_logo.pdf"

텍스트, 번호 페이지 또는 사용을 스탬프 할 수도 있습니다.

require 'combine_pdf'

pdf = CombinePDF.load "content_file.pdf"

pdf.number_pages #adds page numbers. you can add formatting and placement options.

pdf.pages.each {|page| page.textbox "One Way To Stamp"}

#you can a shortcut method to stamp pages
pdf.stamp_pages "Another way to stamp"

#you can use the shortcut method for both text and PDF stamps
company_logo = CombinePDF.load("company_logo.pdf").pages[0]
pdf.stamp_pages company_logo

# you can use write simple tables
pdf.pages[0].write_table headers: ['first name', 'surname'], table_data: [['John', 'Doe'], ['Mr.', 'Smith']]

pdf.save "content_with_logo.pdf"

복잡한 작업을위한 것은 아니지만 대부분의 PDF 저자 라이브러리를 보완하며 모든 것을 처음부터 쓰는 대신 PDF 템플릿을 사용할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top