我正在尝试将多个pdf合并为一个可下载的文件。我有一个模型与多个房间名称和电子邮件房间有一个pdf附加,这是房间的布局。目标是能够下载基于房间列表的所有房间布局。我找到了宝石combine_pdf,它看起来很棒,很简单,但我觉得我错过了什么。我得到了很多“没有这样的文件或目录@ rb_sysopen -”,但当我剪切并粘贴以下链接时,它工作得很好。
当前代码
def index
@forms = Form.all
@forms.each do |form|
pdf = CombinePDF.new
pdf << CombinePDF.load(url_for(form.image))
end
end我还没到下载部分,但文档上说要使用应用程序,文件名:"combined.pdf",键入:“send_data /pdf”
但是我如何让视图从控制器访问并使其可下载呢?
更新:我可以通过下面的代码传递所有的错误。但是我不知道如何创建一个下载的链接
def index
@forms = Form.all
@pdf = CombinePDF.new
@forms.each do |form|
file = open('http://evanliewer.com/orientation/test.pdf')
@pdf << CombinePDF.load(file.to_path)
end
@pdf.save "combined.pdf"
end发布于 2018-07-01 09:04:52
能够弄清楚这一点下面是控制器:
require 'net/http'
def viewproject
@forms = Form.all
respond_to do |format|
format.html
format.pdf do
pdf = CombinePDF.new
@forms.each do |form|
pdf << CombinePDF.parse( Net::HTTP.get( URI.parse( url_for(form.image.service_url) ) ) )
end
send_data pdf.to_pdf, :disposition => 'inline', :type => "application/pdf"
end
end结束
视图是
<%= link_to "Printable Receipt (PDF)", cabinpdf_path(@forms, format: 'pdf', disposition: "attachment") %>我现在要回去把它清理干净,但很高兴我能拿到它。我之前遗漏了两个秘密,那就是如果你使用.service_url,我会使用active record调用来找到最好的url,而我使用了必需的'net/http‘来访问它,因为它不是本地存储的,所以路径不起作用。它目前不在我的本地(使用本地存储)上工作,但正在与heroku一起在生产中工作。
https://stackoverflow.com/questions/51105171
复制相似问题