首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PDF与Active Storage相结合

将PDF与Active Storage相结合
EN

Stack Overflow用户
提问于 2018-06-29 23:34:37
回答 1查看 812关注 0票数 1

我正在尝试将多个pdf合并为一个可下载的文件。我有一个模型与多个房间名称和电子邮件房间有一个pdf附加,这是房间的布局。目标是能够下载基于房间列表的所有房间布局。我找到了宝石combine_pdf,它看起来很棒,很简单,但我觉得我错过了什么。我得到了很多“没有这样的文件或目录@ rb_sysopen -”,但当我剪切并粘贴以下链接时,它工作得很好。

当前代码

代码语言:javascript
复制
 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”

但是我如何让视图从控制器访问并使其可下载呢?

更新:我可以通过下面的代码传递所有的错误。但是我不知道如何创建一个下载的链接

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2018-07-01 09:04:52

能够弄清楚这一点下面是控制器:

代码语言:javascript
复制
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

结束

视图是

代码语言:javascript
复制
<%= link_to "Printable Receipt (PDF)", cabinpdf_path(@forms, format: 'pdf', disposition: "attachment") %>

我现在要回去把它清理干净,但很高兴我能拿到它。我之前遗漏了两个秘密,那就是如果你使用.service_url,我会使用active record调用来找到最好的url,而我使用了必需的'net/http‘来访问它,因为它不是本地存储的,所以路径不起作用。它目前不在我的本地(使用本地存储)上工作,但正在与heroku一起在生产中工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51105171

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档