如何从html创建多页pdf

vin*_*nce 5 ruby pdf-generation screen-scraping ruby-on-rails

我们需要打印数千张这种格式的发票 -

http://example.com/orders/n

其中n =数千个订单

浏览每个订单,然后单击"打印",这将花费我们一个漫长的时间.有没有办法从每个URL中创建一个多页pdf,我们可以将其作为一个pdf下载,这样我们可以点击"打印"一次?

Dav*_*low 6

您可以使用PDFkit gem 尝试ruby脚本(包装wkhtmltopdf).

我建议将你的pdf分成每个50到100页,不喜欢内存中1000页pdf的想法......可能会摔倒.

示例脚本,将页面连接成一个带有分页符div的大html字符串并保存到文件:

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')
Run Code Online (Sandbox Code Playgroud)