加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – PDFkit javascript问题

发布时间:2020-12-17 03:29:45 所属栏目:百科 来源:网络整理
导读:我一直在研究使用PDFKit为Rail生成pdf报告 3我正在努力的应用程序.基本上如果我使用PDFKit作为中间件 应用程序中的页面很好地呈现为pdf,包括 javascript生成的图形. 但是,我想为pdf报告使用不同的布局来删除任何 侧边栏或导航详细信息所以我没有使用中间件选
我一直在研究使用PDFKit为Rail生成pdf报告
3我正在努力的应用程序.基本上如果我使用PDFKit作为中间件
应用程序中的页面很好地呈现为pdf,包括 javascript生成的图形.

但是,我想为pdf报告使用不同的布局来删除任何
侧边栏或导航详细信息所以我没有使用中间件选项,而是一直在玩相关的控制器操作

format.pdf {               
               html = render_to_string(:action => "show.html.erb",:layout => "report.html.erb")
               kit = PDFKit.new(html) 
               kit.stylesheets << "#{Rails.root}/public/stylesheets/application.css"
               send_data kit.to_pdf,:filename => "file.pdf",:type => :pdf}

(我还尝试了将此功能提取到渲染器选项的neater选项,因为Katz描述了here,但逻辑和问题是相同的)

这肯定解决了我的布局问题,但似乎没有应用程序的javascripts正在运行,图表不再出现.我看了一下PDFKit源代码,但我发现pdf的生成方式没有任何重大差异.

我仍然用铁轨找到很多东西,所以我敢肯定这可能是非常显而易见的盯着我的东西.任何人可能拥有的任何指针都将非常感激

解决方法

这基本上是我使用的解决方案,大致基于Katz真正伟大的 blog post

ActionController.add_renderer :pdf do |template,options|
  html = render_to_string template,options 
  html = translate_paths(html,env)
  kit = PDFKit.new(html) 
  css_files = Array.wrap(options.delete(:css)).each do |css_sheet|
    kit.stylesheets << "#{Rails.root}/public/stylesheets/#{css_sheet}.css"
  end
  send_data kit.to_pdf,:filename => options[:filename],:type => Mime::PDF
end

translate_paths方法与PDKKit机架中间件代码中使用的方法基本相同,可以在here及以下版本中看到

def translate_paths(body,env)
   # Host with protocol
   root = "#{env['rack.url_scheme']}://#{env['HTTP_HOST']}/"
   body.gsub(/(href|src)=(['"])/([^"']*|[^"']*)['"]/,'1=2' + root + '32')
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读