Ruby send_data在浏览器中将数组呈现为PDF

时间:2016-09-29 10:49:06

标签: ruby-on-rails ruby

我有一个应用程序,我在浏览器中将Fedex标签显示为PDF。

我使用send_data渲染每个标签,如下所示,它完美无缺:

 @label_image = Base64.decode64(image_hex).html_safe   #image_hex is a text field where I store the label in db
 send_data @label_image, :type => 'application/pdf', :disposition => 'inline', :filename => 'test.pdf'

但是,我想以类似的方式呈现多个标签,即我可以有一个标签数组say @labels_images,并在一个请求中将它们呈现给浏览器。

PDF的每个页面都应该有一个标签。

如何使用send_data或其他可用的库来执行此操作?

由于

2 个答案:

答案 0 :(得分:1)

听起来你需要先创建一个多页的pdf,一旦你有了,你就可以把它传递给send_data

在ruby中有很多pdf库,ruby-toolbox上有一个很好的列表。

或者,如果您不想要多页pdf,可以将多个pdf压缩成一个文件并将其传递给send_data

答案 1 :(得分:0)

我最终使用combine_pdf gem帮助我将多个对象合并为浏览器中的PDF格式。

工作代码如下所示:

pdf = CombinePDF.new
@label_items.each { |item| pdf << CombinePDF.parse(Base64.decode64(item.image_hex).html_safe) }
send_data pdf.to_pdf, :type => 'application/pdf', :disposition => 'inline', :filename => 'test.pdf'