2011-12-19 34 views
5

Chúng ta cần phải in hàng ngàn hóa đơn mà là ở định dạng này -làm thế nào để tạo trang pdf đa từ html

http://example.com/orders/n

trong đó n = hàng ngàn đơn đặt hàng

Đi qua mỗi lần đặt hàng và sau đó nhấp vào về "in" đang khiến chúng tôi mất thời gian. Có cách nào để tạo một pdf nhiều trang từ mỗi URL mà chúng tôi có thể tải xuống dưới dạng pdf để chúng tôi có thể nhấn "in" một lần không?

+0

[PrinceXML] (http://princexml.com/) là trình kết xuất HTML to PDF tuyệt vời. – chesles

Trả lời

6

Bạn có thể thử tập lệnh ruby ​​bằng cách sử dụng đá quý PDFkit (kết thúc tốt đẹp wkhtmltopdf).

Tôi khuyên bạn nên chia nhỏ tệp pdf của bạn thành 50 đến 100 trang, không thích suy nghĩ của 1000 trang pdf trong bộ nhớ ... có thể bị đổ.

Ví dụ kịch bản, concats trang thành một chuỗi html lớn với divs ngắt trang và tiết kiệm sang 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

Cân nhắc sử dụng wkhtmltopdf.

Dòng lệnh rất đẹp của nó sử dụng công cụ kết xuất Webkit để tạo các trang pdf.

0

Đối với hoá đơn Tôi thích sử dụng htmldoc - nó ám một chút đẹp hơn wkhtmltopdf, nhưng nhược điểm là bạn không thể sử dụng biểu định kiểu.

Vì vậy, đối với htmldoc, bạn có thể phải mã hóa lại chế độ xem hóa đơn của mình để sử dụng bố cục bảng hơn với kiểu nội tuyến.

Các vấn đề liên quan