2011-12-19 13 views
5

nam potrzeba wydrukować tysiące faktur, które są w tym formacie -jak stworzyć wielostronicowy PDF z HTML

http://example.com/orders/n

gdzie n = tysiące zleceń

przeżywa każdego zlecenia, a następnie kliknąć na "print" zabiera nam to trochę czasu. Czy istnieje sposób na stworzenie wielostronicowego pliku pdf z każdego z tych URL-i, który możemy pobrać jako jeden plik pdf, abyśmy mogli raz kliknąć "print"?

+0

[PrinceXML] (http://princexml.com/) to świetny program do renderowania HTML na PDF. – chesles

Odpowiedz

6

Możesz wypróbować skrypt ruby ​​przy użyciu klejnotu PDFkit (wraps wkhtmltopdf).

Sugerowałbym podzielenie plików pdf na prawdopodobnie od 50 do 100 stron, nie podoba mi się myśl o 1000-stronicowym pliku PDF w pamięci ... prawdopodobnie się przewróci.

Przykład skryptu, concats stron w jeden wielki html ciągiem z div Podział strony i zapisuje do pliku:

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

Rozważ użycie wkhtmltopdf.

Jest to bardzo ładne narzędzie wiersza polecenia, które wykorzystuje silnik renderujący Webkit do tworzenia stron pdf.

0

przypadku faktur Lubię używać htmldoc - to sprawia trochę ładniejszy niż wkhtmltopdf, ale minusem jest to, że nie możesz użyć arkusza stylów.

Dla htmldoc prawdopodobnie trzeba będzie ponownie zakodować widok faktury, aby użyć bardziej tabelarycznego układu ze stylami wstawianymi.