我在我的控制器#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
变量没有样式。我似乎无法让这个工作。
答案 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
正常工作了!
如果有人能做得更好,请告诉我,我想知道:)