Sha256: 395fa697d2f9cb3228e8a23909b04b9277f25e0c23f0d4743c3e8527ad22751e
Contents?: true
Size: 1.24 KB
Versions: 1
Compression:
Stored size: 1.24 KB
Contents
require 'postdoc/postdoc_view_helper' require 'chrome_remote' module Postdoc class PostdocRailtie < Rails::Railtie initializer 'postdoc.register' do |_app| ActionView::Base.send :include, PostdocViewHelper end end ActionController::Renderers.add :pdf do |filename, options| htmlfile = Tempfile.new ['input', '.html'] htmlfile.write render_to_string(options) htmlfile.flush # random port at 1025 or higher random_port = 1024 + Random.rand(65535 - 1024) pid = Process.spawn "chrome --remote-debugging-port=#{random_port} --headless" # FIXME sleep 1 begin chrome = ChromeRemote.client port: random_port chrome.send_cmd 'Page.enable' chrome.send_cmd 'Page.navigate', url: "file://#{htmlfile.path}" chrome.wait_for 'Page.loadEventFired' response = chrome.send_cmd 'Page.printToPDF', { landscape: options[:landscape] || false, printBackground: true, headerTemplate: options[:header_template] || '', footerTemplate: options[:footer_template] || '', } result = Base64.decode64 response['data'] ensure Process.kill 'KILL', pid Process.wait pid htmlfile.close htmlfile.unlink end result end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
postdoc-0.2.0 | lib/postdoc.rb |