2010-04-26 7 views

risposta

8

Questo lo farà:

PDF::Reader per contare il numero di pagine del file.

Prawn per creare un nuovo documento PDF utilizzando ogni pagina del PDF in ingresso come modello.

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 

Tuttavia, a mio testare la dimensione del file di output era enorme con l'ultima versione di Gemma Prawn (0,12), ma dopo aver sottolineato il mio Gemfile al ramo principale su GitHub, tutto ha funzionato bene.

+0

Puoi passare l'opzione ': template' a' Prawn :: Document' e quindi scorrere semplicemente le pagine in questo modo. Ciò manterrà la dimensione del file di output molto più vicina alla dimensione del file di input. – siannopollo

+0

Prawn non supporta più la modifica/combinazione di due PDF in uno. Controlla la risposta di @Myst per una soluzione aggiornata. –

-1

Usa Ruport.

primo risultato Googling ruby pdf watermark.

+0

Duh ... solo mostra i limiti di Google. Sto cercando la stessa cosa, e Ruport non lo è. – John

+0

'+ rubino + PDF + filigrana -ruport' :-) utilizza –

+0

Ruport PDF :: Writer. PDF :: Writer crea solo PDF. Non andare. –

1

Check out Prawn (http://github.com/sandal/prawn) per rubino e Prawnto (http://github.com/thorny-sun/prawnto) per Ruby on Rails.

probabilmente stai andando a voler usare sia per l'immagine incorporare la funzionalità o la funzionalità di immagine di sfondo.

Ecco un esempio di utilizzo di un'immagine di sfondo http://cracklabs.com/prawnto/code/prawn_demos/source/general/background

+0

Prawn è solo in grado di incorporare immagini in un pdf fresco creato con gambero non esistente ... quindi non funziona per me. – Mike

+0

ah, manca la * parte * esistente nel tuo post. Mi dispiace per quello Non credo che ci sia, a meno che non lo si convertisse in un'immagine e poi la filigrana. –

+0

In realtà, sembra che Prawn possa modificare un PDF esistente se si utilizza quel PDF come modello: http://groups.google.com/group/prawn-ruby/browse_thread/thread/a8dd9bb83d2c2abd?pli = 1 & https://github.com/yob/prawn/tree/templates_2010. Non li ho usati personalmente, ma le informazioni sembrano piuttosto recenti? –

3

Un'altra opzione è quella di utilizzare PDFTK. Può essere usato per aggiungere una filigrana e creare un nuovo PDF. Forse i gamberi faranno la stessa cosa con il suo modello.

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

qualche informazione in più: http://rhodesmill.org/brandon/2009/pdf-watermark-margins/

C'è una gemma rubino involucro chiamato active_pdftk che supporta backgrounding, in modo da non dovete fare i comandi di shell da soli.

1

Prawn non supporta i modelli più ...

provare il combine_pdf gem.

È possibile combinare, filigrana, numero di pagina e aggiungere testo semplice ai file PDF esistenti (inclusa la creazione di un semplice sommario senza collegamenti PDF).

È una libreria PDF molto semplice e di base, scritta in puro Ruby senza dipendenze.

Questo esempio può andare bene la vostra situazione (è dal file 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" 
Problemi correlati