2010-04-26 5 views

답변

8

이 그것을 할 것입니다 :

PDF::Reader 파일의 페이지 수를 계산.

Prawn 입력 pdf의 각 페이지를 템플릿으로 사용하여 새 PDF 문서를 만듭니다.

require 'prawn' 
require 'pdf-reader' 

input_filename = 'input.pdf' 
output_filename = 'output.pdf' 

page_count = PDF::Reader.new(input_filename).page_count 

Prawn::Document.generate(output_filename, :skip_page_creation => true) do |pdf| 

    page_count.times do |num| 
    pdf.start_new_page(:template => input_filename, :template_page => num+1) 
    pdf.text('WATERMARK') 
    end 

end 

하지만, 내 출력 파일 크기를 테스트하는 것은 새우의 최신 보석 버전 (0.12)와 거대했다,하지만 github의의 마스터 지점에서 내 Gemfile을 가리키는 후, 모든 괜찮 았는데.

+0

': template' 옵션을'Prawn :: Document'에 넘겨 줄 수 있습니다. 그런 다음 페이지를 반복하면됩니다. 이렇게하면 출력 파일 크기가 입력 파일 크기에 훨씬 가깝게 유지됩니다. – siannopollo

+0

새우는 더 이상 두 개의 PDF를 하나로 편집/결합하는 것을 지원하지 않습니다. @Myst의 답변을 확인하여 최신 솔루션을 확인하십시오. –

-1

Ruport을 사용하십시오.

Google 검색 결과 중 첫 번째 결과는 ruby pdf watermark입니다.

+0

뜨아 그냥 ... 구글의 한계를 보여줍니다. 나는 똑같은 것을 찾고 있는데, 루퍼트는 그렇지 않다. – John

+0

'+ ruby ​​+ pdf + watermark -ruport' :-) –

+0

루퍼트는 PDF :: Writer를 사용합니다. PDF :: Writer는 PDF 만 만듭니다. 안돼. –

1

루비만을위한 새우 (http://github.com/sandal/prawn)와 루비를위한 프 롤토 (http://github.com/thorny-sun/prawnto)를 확인하십시오.

아마도 이미지 포함 기능 또는 배경 이미지 기능을 사용하려고 할 것입니다.

여기 http://cracklabs.com/prawnto/code/prawn_demos/source/general/background

+0

새우는 기존 새우가 아닌 새우로 만든 새 PDF에만 이미지를 포함 할 수 있기 때문에 나에게 적합하지 않습니다. – Mike

+0

아, 게시물의 * 기존 * 부분을 놓치 셨습니다. 미안합니다. 당신이 그것을 이미지로 변환하고 그것을 워터 마킹하지 않는다면 나는 거기 있다고 믿지 않습니다. –

+0

사실, Prawn은 해당 PDF를 템플릿으로 사용하면 기존 PDF를 수정할 수 있습니다. http://groups.google.com/group/prawn-ruby/browse_thread/thread/a8dd9bb83d2c2abd?pli = 1 & https://github.com/yob/prawn/tree/templates_2010. 개인적으로 사용하지는 않았지만 정보가 다소 최근에 보입니까? –

3

또 다른 옵션은 PDFTK을 사용하는 것입니다 배경 이미지를 사용하는 예입니다. 워터 마크를 추가하고 새 PDF를 만드는 데 사용할 수 있습니다. 어쩌면 새우가 같은 것을 할 것입니다.

pdftk in.pdf background arecibo.pdf output wmark1.pdf

일부 추가 정보를 원하시면 : http://rhodesmill.org/brandon/2009/pdf-watermark-margins/

당신이 쉘이 자신을 명령 할 필요가 없습니다, 배경 처리를 지원 active_pdftk라는 루비 래퍼 보석이 있습니다.

1

새우는

combine_pdf gem을 시도 ... 더 이상 템플릿을 지원하지 않습니다.

워터 마크, 페이지 번호를 결합하여 기존 PDF 파일에 간단한 텍스트를 추가 할 수 있습니다 (PDF 링크없이 간단한 목차 만들기 포함).

매우 단순하고 기본적인 PDF 라이브러리로서, 순수한 루비로 작성되었으며 의존성이 없습니다.

이 예는 (은 readme 파일에서의) 상황에 맞게 할 수 있습니다

# load the logo as a pdf page 
company_logo = CombinePDF.load("company_logo.pdf").pages[0] 

# load the content file 
pdf = CombinePDF.load "content_file.pdf" 

# inject the logo to each page in the content 
pdf.pages.each {|page| page << company_logo} 

# save to a new file, with the logo. 
pdf.save "content_with_logo.pdf"