ruby-on-rails – 带有Rails 3.2.13和Bootstrap的Heroku上的PDFK
发布时间:2020-12-17 02:21:21 所属栏目:百科 来源:网络整理
导读:我很难让PDFKit在Heroku上工作.我已经阅读了 here,here和 here的教程,但仍然无法弄清楚如何正确显示pdf.我遇到了上一个链接中描述的相同问题,其中应用程序在开发中正常工作,并在Heroku上生产.我尝试添加以下内容(从教程中获得). application_helper.rb def r
我很难让PDFKit在Heroku上工作.我已经阅读了
here,here和
here的教程,但仍然无法弄清楚如何正确显示pdf.我遇到了上一个链接中描述的相同问题,其中应用程序在开发中正常工作,并在Heroku上生产.我尝试添加以下内容(从教程中获得).
application_helper.rb def request_from_pdfkit? # when generating a PDF,PDFKit::Middleware will set this flag request.env["Rack-Middleware-PDFKit"] == "true" end # We have to reference the actual output of the assets pipeline,which according # to http://guides.rubyonrails.org/asset_pipeline.html is application-<md5>.css and # application-<md5>.js. We have to dynamically find these file names and correctly # reference them. def get_mdf5_file(base_file) stripped_name = base_file.basename.to_s.gsub(base_file.extname,"") Dir.glob("#{base_file.parent}/*#{base_file.extname}").each do |file| return file if file.match(/#{stripped_name}-[dw]+#{base_file.extname}/) end return base_file end application.html.erb <% if request_from_pdfkit? %> <style type="text/css" media="all"> <%= File.read(get_mdf5_file(Rails.root.join("public","assets","application.css")) %> </style> <script type="text/javascript"> <%= File.read(get_mdf5_file(Rails.root.join("public","application.js"))) %> </style> <% else %> <%= stylesheet_link_tag "application",:media => "all" %> <%= javascript_include_tag "application" %> <% end %> 当我这样做时,生成的PDF具有最小的样式,并且没有从javascript生成的内容.它(基于我的预感)似乎没有任何Bootstrap scss被预编译到application.css中.现在,这是内容 application.css /* *= require_self *= require dataTables/jquery.dataTables *= require dataTables/jquery.dataTables.bootstrap *= require dataTables/src/demo_table_jui *= require jquery.ui.all *= require jquery.jqplot *= require_tree . */ 的application.js //= require jquery //= require jquery_ujs //= require jquery-ui //= require bootstrap //= require bootstrap-multiselect //= require dataTables/jquery.dataTables //= require dataTables/jquery.dataTables.bootstrap //= require jquery.jqplot //= require plugins/jqplot.cursor //= require plugins/jqplot.BezierCurveRenderer //= require plugins/jqplot.bubbleRenderer //= require plugins/jqplot.barRenderer //= require plugins/jqplot.categoryAxisRenderer //= require plugins/jqplot.canvasTextRenderer //= require plugins/jqplot.canvasAxisLabelRenderer //= require plugins/jqplot.highlighter //= require plugins/jqplot.canvasOverlay //= require plugins/jqplot.cursor //= require plugins/jqplot.enhancedLegendRenderer //= require plugins/jqplot.dateAxisRenderer //= require plugins/jqplot.canvasAxisTickRenderer //= require_tree . 我尝试手动将一些Bootstrap scss组件添加到application.css资产管道,但得到的错误是here. 我不知道如何让这个工作,所以任何帮助将不胜感激. 编辑 我一直在玩这个很多,并注意到当内联插入Javascript和CSS时,根据Chrome上显示的来源,所有引号“都被替换为”.我尝试添加.gsub(/“/,/”/),但这不起作用.有谁知道我为什么看到“而不是”,或者这甚至是一个问题. 编辑2 通过实施以下更改,我能够让显示效果更好一些 <script type="text/javascript"> <%= raw(File.read(get_mdf5_file(Rails.root.join("public","application.js"))).gsub("</script>","")) %> </script> <style type="text/css" media="all"> <%= raw File.read(get_mdf5_file(Rails.root.join("public","application.css"))) %> </style> 然而造型仍然混乱,所以我仍在寻找解决方案. 解决方法
我想通了.我不得不降级到wkhtmltopdf 0.10 rc2.在我这样做之后,我能够修改样式以使PDF看起来像样.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |