rails:生成pdf并将其渲染为图像

时间:2013-08-20 08:37:15

标签: ruby-on-rails imagemagick rmagick wicked-pdf

我正在尝试制作pdf并将其作为文件发送,或者更好,使用imagemagick和wicked_pdf将其渲染为浏览器中的图像。

我能够发送一些内容,但操作系统无法将其识别为图像。 pdf字符串生成正确,所以我认为问题出在图像部分

这是我的控制器的代码:

  format.jpg do
    @format = :pdf

    pdfstr =  render_to_string 'generated_graphics/tag.erb', :pdf => "tag", :layout => nil, :page_height => '38mm', :page_width => '129mm'

    file = Tempfile.new('foo')
    file.write pdfstr
    file.close

    require 'RMagick'  
    pdf = Magick::ImageList.new(file.path)
    send_data pdf.write("myimage.jpg"), :type => 'image/jpg'
  end

2 个答案:

答案 0 :(得分:4)

看一下ruby的imagemagick和rmagick插件。这使您可以进行各种图像转换,包括PDF到jpeg。

http://rmagick.rubyforge.org/

编辑:

未经测试的示例代码:

require 'RMagick' 

pdf = Magick::ImageList.new("doc.pdf")
pdf.write("myimage.jpg") 

如果doc.pdf有3个页面,则应输出3个图像:myimage.jpg.0 myimage.jpg.1 myimage.jpg.2

查看文档on this page的结尾,其中显示了该文档  一个类似的例子,多帧gif转换为多个PNG

答案 1 :(得分:1)

如果你的目标是拥有一张图片我认为你可以跳过所有的pdf内容,那么就没有把它首先转换为pdf然后转换为图像的感觉。 看看IMGKit,它允许从html字符串生成图像。