如何使用Carrierwave以编程方式生成PDF并将其保存在S3上?

时间:2015-02-04 19:10:13

标签: ruby-on-rails ruby-on-rails-4 carrierwave pdfkit

我正在尝试使用PDFKit生成PDF

html = '<b>test</b>'
kit = PDFKit.new(html, :page_size => 'Letter')
pdf = kit.to_pdf

这很好用,如果我愿意,我可以将数据保存到磁盘。

我有一个简单的模型:

class Attachment < ActiveRecord::Base
  mount_uploader :file, FileUploader, mount_on: :filename
end

当我这样做时:

a = Attachment.new
a.file = pdf

我收到以下错误:

ArgumentError: string contains null byte

我不想在上传之前将PDF保存到磁盘,因为我将使用Heroku。

1 个答案:

答案 0 :(得分:1)

由于威廉的要点不适合我,以下是我为解决问题所做的工作:

html = '<html><head></head><body>foo!</body></html>'
file = PDFKit.new html
file.to_pdf.gsub(/\0/, '')

这个想法来自this question的答案。副作用可能适用。