我有一个应用程序,我在浏览器中将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
或其他可用的库来执行此操作?
由于
答案 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'