2011-12-19 35 views
5

Tenemos que imprimir miles de facturas que se encuentran en este formato -cómo crear PDF de varias páginas de HTML

http://example.com/orders/n

donde n = miles de órdenes

Pasando por cada orden y luego haciendo clic en "imprimir" nos está llevando mucho tiempo. ¿Existe alguna manera de crear un pdf de varias páginas de cada una de esas URL que podamos descargar como un solo pdf para que podamos presionar "imprimir" una vez?

+0

[PrinceXML] (http://princexml.com/) es un gran procesador de HTML a PDF. – chesles

Respuesta

6

Puede intentar una secuencia de comandos de ruby ​​con la gema PDFkit (wraps wkhtmltopdf).

Sugiero dividir sus archivos PDF en probablemente 50 a 100 páginas cada uno, no me gusta la idea de un PDF de 1000 páginas en la memoria ... probablemente se caiga.

Script de ejemplo, concats páginas en una sola cadena html grande con divs de salto de página y la guarda en el archivo:

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

Considere utilizar wkhtmltopdf.

Es una línea de comando muy útil que utiliza el motor de renderizado Webkit para producir páginas en pdf.

0

Para las facturas me gusta usar htmldoc - que rinde un poco mejor que wkhtmltopdf, pero el inconveniente es que no puedes usar una hoja de estilo

Así que para htmldoc es probable que tenga que volver a la vista de código factura usar un diseño de tabla con más estilos en línea.

Cuestiones relacionadas