使用wicked_pdf宝石和wkhtmltopdf对PDF图像头(Image header on

2019-10-19 21:14发布

我的控制器:

  def show
    respond_to do |format|
    format.pdf do
    #render :pdf => "show",:template => "welcome/show",:footer => { :right => 'Page [page] of [topage]' })
    #render :pdf => "show",:template => "welcome/show", :header => {:content => render_to_string({:template => 'welcome/pdf_header.html.erb'})}, :footer=> { :right => 'Page [page] of [topage]' },:margin => { :top => 38, :bottom => 35}
    #render :pdf => "show",:handlers => [:html],:template => "welcome/show.pdf.erb", :header => {:content => render_to_string({:layout => 'pdf_header.html.erb'})}, :footer=> { :right => 'Page [page] of [topage]' },:margin => { :top => 38, :bottom => 35}
    render :pdf => "show",:template => "welcome/show.pdf.erb", :header => {:content => ActionController::Base.new().render_to_string({:template => 'welcome/pdf_header.html.erb', :layout => false})}, :footer=> { :right => 'Page [page] of [topage]' },:margin => { :top => 38, :bottom => 35}
    end 
  end
end

我越来越有页码沿着PDF,但我不能让图像头。

这是布局:

pdf_header.html.erb

<%= image_tag  "gla/image.jpg" ,:width => "90",  :height=>"85" %>
<%#= wicked_pdf_image_tag  "gla/image.jpg" %>

有一次,我打开pdf_header为HTML文件,我得到的图像显示,但一旦我称之为PDF我不能显示图像

在控制台中我得到这个

Started GET "/welcome/show.pdf" for 127.0.0.1 at 2014-04-17 09:47:05 +0530
  Processing by WelcomeController#show as PDF
Rendered welcome/pdf_header.html.erb (0.4ms)
***************WICKED***************
Rendered welcome/show.pdf.erb (0.7ms)
Rendered text template (0.0ms)
Sent data show.pdf (1.8ms)
Completed 200 OK in 782ms (Views: 1.3ms | ActiveRecord: 0.0ms)

该评论的东西是什么,我都试过,而不是成功。 是否有另一种方式在头通过给图片的路径,而不是通过HTML传递直接显示图像?

Answer 1:

加。 到官方documnetation

<%= wicked_pdf_image_tag 'path' %> instead of <%= image_tag 'path' %>

这必须为你工作

<%= wicked_pdf_image_tag  "gla/image.jpg" ,:width => "90",  :height=>"85" %>


Answer 2:

这是自定义助手的实现:

def wicked_pdf_image_tag(img, options={})
  image_tag "file:///#{WickedPdfHelper.root_path.join('public', 'images', img)}", options
end

这需要是这样的,因为当它运行的发电机WickedPDF不加载的轨道,它只能访问红宝石。 因此,不存在本地主机,没有根路径,没有端口等

你得到的“无法加载本地资源”的错误似乎是一个权限问题。 确保运行控制台的用户拥有权利/images文件夹中。

如果所有的失败,你可以像这样在您的看法指定图像的绝对URL:

<img alt="Image" src="http://localhost:3000/images/gla/image.jpg">

但是,如果你这样做,请记住,只要您的主机或端口或协议的变化,这个字符串将需要随之改变。



文章来源: Image header on PDF using wicked_pdf gem and wkhtmltopdf