Rails组合了来自动作流的pdf

时间:2016-09-01 10:10:30

标签: ruby-on-rails-4 pdf-generation

我在我的控制器#applications中有一个操作,它会呈现我的网站应用页面的html页面。当我使用:pdf格式指定此操作的路径时,它将页面呈现为pdf(可正常工作)。

我正在编写另一个动作#applications_print_version,需要包含来自#applications的渲染视图以及其他一些pdf(来自网址列表)。使用combine_pdf我已经能够通过网址获取pdf列表了,但我无法将#applications视图添加到#applications_print_version工作中的合并pdf中。

这是我到目前为止所拥有的。

def applications_print_version
    html = render_to_string(action: :applications) 
    pdf = WickedPdf.new.pdf_from_string(html) 

    new_pdf = CombinePDF.new
    new_pdf << CombinePDF.parse(pdf)

    #List of pdfs I got from somewhere else
    @pdf_attachments.each { |att| new_pdf << CombinePDF.parse( Net::HTTP.get( URI.parse( att.url ) ) ) }

    send_data new_pdf.to_pdf, :disposition => 'inline', :type => "application/pdf"
end

此解决方案确实包含所有数据,但pdf变量没有样式。我似乎无法让这个工作。

1 个答案:

答案 0 :(得分:0)

感谢当地社区的支持,我设法让它发挥作用。我需要解决一些问题。

我用来渲染#applications的布局是使用我用于PDFKit的标准pdf布局。我复制了布局并替换了

<%= stylesheet_link_tag 'application' %>

<%= wicked_pdf_stylesheet_link_tag 'application' %>

我做了一个,我可以使用WickedPDF所需的布局渲染#applications动作。

html = render_to_string(action: :applications, layout: 'wicked_pdf') 

我遇到了另一个问题。 WickedPDF https://github.com/mileszs/wicked_pdf/issues/470

存在已知问题

所以我不得不在我的样式表中删除@import "bootstrap"的任何不理想的实例,但我无法解决上述问题。

现在#applications_print_version正常工作了!

如果有人能做得更好,请告诉我,我想知道:)