Как создать многостраничный PDF из HTML - PullRequest
5 голосов
/ 19 декабря 2011

Нам нужно напечатать тысячи счетов в этом формате -

http://example.com/orders/n

, где n = тысячи заказов

Пройдя по каждому заказу, а затем нажавна «печать» у нас уходит много времени.Есть ли способ создать многостраничный pdf из каждого из этих URL, который мы можем загрузить как один pdf, чтобы мы могли нажать «print» один раз?

Ответы [ 3 ]

6 голосов
/ 19 декабря 2011

Вы можете попробовать скрипт ruby, используя PDFkit gem (wraps wkhtmltopdf).

Я бы предложил разделить ваши PDF-файлы, вероятно, на 50-100 страниц каждый, не нравится мысль1000 страниц pdf в памяти ... вероятно, упал.

Пример сценария, объединяет страницы в одну большую HTML-строку с div-адресами разрыва страницы и сохраняет в файл:

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 голосов
/ 19 декабря 2011

Для счетов я хотел бы использовать htmldoc - он выглядит немного лучше, чем wkhtmltopdf, но недостатком является то, что вы не можете использовать таблицу стилей.

Так что для htmldoc вы, вероятно, захотитенеобходимо повторно закодировать вид счета-фактуры, чтобы использовать более табличный макет со встроенными стилями.

0 голосов
/ 19 декабря 2011

Рекомендуется использовать wkhtmltopdf .

Это очень хорошая утилита командной строки, которая использует движок рендеринга Webkit для создания страниц PDF.

...