将 PDF 与活动存储合并



我正在尝试将多个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

我还没有下载部分,但文档说使用 send_data combined_file.to_pdf,文件名:"combined.pdf",键入:"application/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

能够弄清楚。 下面是控制器:

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,则查找 url 的活动记录调用效果最好,我使用所需的"net/http"以这种方式访问它,因为路径不起作用,因为它没有存储在本地。 它目前无法在我的本地工作(在那里使用本地存储(,而是在与 heroku 一起生产中工作。

最新更新