2011-12-19 15 views
5

Abbiamo bisogno di stampare migliaia di fatture che sono in questo formato -come creare più pagine PDF da HTML

http://example.com/orders/n

dove n = migliaia di ordini

Andando attraverso ogni ordine e quindi facendo clic su su "stampa" ci sta portando un tempo moooolto. C'è un modo per creare un pdf multipagina da ognuno di quegli URL che possiamo scaricare in un unico pdf in modo da poter "stampare" una sola volta?

+0

[PrinceXML] (http://princexml.com/) è un ottimo renderer HTML in PDF. – chesles

risposta

6

È possibile provare uno script rubino utilizzando la gemma PDFkit (avvolge wkhtmltopdf).

Suggerirei di suddividere i tuoi pdf in probabilmente da 50 a 100 pagine ciascuno, non mi piace il pensiero di un pdf di 1000 pagine in memoria ... probabilmente cadere.

Esempio di script, Inserto pagine in un unico grande stringa HTML con div interruzione di pagina e salva su file:

require 'rubygems' 
require 'open-uri' 
require 'pdfkit' 


PDFKit.configure do |config| 
    config.wkhtmltopdf = '/path/to/wkhtmltopdf' 
end 

invoice_numbers = (1..1000) #replace with actual numbers 

html = "" 

invoice_numbers.each do |n| 
    html << open("http://example.com/orders/#{n}").read + "<div style='page-break-before:always'></div>" 
end 


pdf = PDFKit.new(html, :page_size => 'Letter') 

pdf.to_file('/path/to/invoices.pdf') 
0

Utilizzare lo wkhtmltopdf.

È un util utilissimo riga di comando che utilizza il motore di rendering Webkit per produrre pagine PDF.

0

Per le fatture mi piace usare htmldoc - rende un po 'più bello di wkhtmltopdf, ma il lato negativo è che non puoi usare un foglio di stile.

Quindi per htmldoc si dovrà probabilmente ricodificare la vista fattura per utilizzare un layout più tabellare con stili in linea.