我正在使用这个gem来使用Prawn来创建PDF:https://github.com/Whoops/prawn-rails
但是,我似乎无法弄清楚如何添加图像。我已经尝试了pdf.image "path/to/img.jpg
,但它会说该文件不是可识别的格式。
我也在第101页查看了这个:http://prawn.majesticseacreature.com/manual.pdf,但它不起作用。
这在观点中发生:
prawn_document() do |pdf|
pdf.image "#{Rails.root}/public/logo.gif"
end
这引发:
Prawn::Errors::UnsupportedImageType at /admin/purchases/6188.pdf
image file is an unrecognised format
.jpg图像也是如此
答案 0 :(得分:1)
我会做这样的事情。
gem 'prawn'
bundle install
在您的控制器中。
def controller_method
pdf = Prawn::Document.new
begin
pdf_file_path = "#{Rails.root}/public/output"
full_doc = "#{Rails.root}/public/something.png"
pdf.image full_doc
pdf.start_new_page
pdf.render_file pdf_file_path
rescue Prawn::Errors::UnsupportedImageType
flash[:notice] = "Image unsupported"
redirect_to '/handle'
end
end
答案 1 :(得分:0)
添加图像非常简单。
def download
@document = Document.find(params[:id])
tmp_file = Tempfile.new(Digest::MD5.hexdigest(rand(12).to_s))
pdf = Prawn::Document.generate(tmp_file.path, :margin => 0, :page_size => "A4", :skip_page_creation => true) do |posting|
posting.start_new_page
posting.image @document.user.logo.path
send_data posting.render, :filename => "whatever.pdf", :type => "application/pdf"
end
end
显然@document.user.logo.path
可能是文字路径,在这种情况下,这只是一个Paperclip附件。
<强>更新强>
如果它是文字路径,您可能需要执行以下操作:
require "open-uri"
def download
...
posting.image File.open("/path/to/image.jpg")
...
end
答案 2 :(得分:0)
最近的大虾(版本1.0.0)似乎发生了变化。你会得到
undefined method `image=' for #<Prawn::Document
如果您尝试将某些内容应用于pdf.image。
这对我有用:
img = "#{Rails.root}/public/my_lovely_image.png"
Prawn::Document.new(background: img)