【问题标题】:How to use pdfkit to render image in rails app?如何使用 pdfkit 在 Rails 应用程序中渲染图像?
【发布时间】:2015-02-02 13:12:44
【问题描述】:

谁能一步一步或举例说明如何在rails中安装和使用pdfkit来呈现html中的图像?

我已经安装了pdfkitwkhtmltopdf-binary。当我这样做时

require 'pdfkit'
kit = PDFKit.new('http://google.com')
gpdf = kit.to_file('/home/blackat/Desktop/gpdf.pdf')

它将完美地生成一个谷歌主页的pdf。所以这意味着pdfkit在我的系统中正确安装(如果有错误请纠正我)。

正如railcast 中提到的,我做了所有的更改。

  1. gem 'pdfkit' # 在我的 Gemfile 中

  2. bundle install

  3. require 'pdfkit' # 在 application.rb 中
  4. config.middleware.use "PDFKit::Middleware", :print_media_type => true#in application.rb

为了检查天气是否有效,我在控制器中做了一些解决方法 像这样

html_data = render_to_string :layout => false
html_file_path = "demo.html"
pdf_file_path = "demo.pdf"
f = File.open(html_file_path, "w")
f.write(html_data)
f.close

kit = PDFKit.new(html_data,:page_size => 'Letter')
pdf_file = kit.to_file(pdf_file_path)

当我从 html.erb 模板中删除图像时,会生成一个 pdf。如果我在我的 erb 模板中指定任何图像,或者如果我在浏览器中包含“.pdf”,则执行会终身挂起。

我哪里做错了? 有什么博客/例子可以参考吗?

“wkhtmltopdf”是否安装正确?

请帮助我。我从 2 周开始尝试这个。

我正在使用 rails '3.2.11' 和红宝石 1.9.3

提前致谢。

【问题讨论】:

  • 您正在从本地 HTML 文件生成 PDF。确保您使用的是绝对路径,以便 wkhtmltopdf 可以找到您的样式表和图像。 (在浏览器中打开 demo.html 以查看缺少的内容)
  • @Stefan 我使用了简单的内联 CSS(我认为这不会爆炸)。我将尝试使用图像的绝对路径。
  • @Stefan 我已经更改了我的图像路径,就像<%= image_tag("/images/myImage.png")%> 这样在我的视图中呈现图像。但是当我使用render_to_string 转换它时,它只返回<img alt="MyImage" src="/images/myImage.jpg" /> 我怎么知道在做render_to_string 时采用绝对路径?
  • @Stefan 如果我用#{Rails.root} 附加图像标签 pdfkit 挂起。
  • IIRC,你可以使用image_url来计算完整的URL,即image_tag(image_url('file.png'))。以下是我的处理方法:(1) 生成本地 HTML 文件 demo.html (2) 在浏览器中打开文件并修复所有错误 (3) 使用命令行工具从该文件生成 PDF:wkhtmltopdf demo.html demo.pdf ( 4) 启动 IRB 并手动调用 PDFKit (5) 将该代码插入到您的控制器中。

标签: ruby-on-rails ruby ruby-on-rails-3 pdf pdfkit


【解决方案1】:

尝试在您的视图中给出图像文件的绝对路径,例如:

%img{src: "file://#{Rails.root}/public/imagesmyImage.png"}

【讨论】:

  • 在开发环境中,图像将从资产文件夹中加载,而在生产环境中,图像将从公共加载。我们如何处理这种情况?
猜你喜欢
  • 2015-06-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 2016-02-21
  • 1970-01-01
  • 2014-01-24
相关资源
最近更新 更多