Sha256: 5e7b2cf39cbaa59c7a1009171bfca5d19c72e62d68e5f9377fca952108e8a262
Contents?: true
Size: 1.43 KB
Versions: 3
Compression:
Stored size: 1.43 KB
Contents
module PdfHelper require 'pdfkit' def self.included(base) base.class_eval do alias_method_chain :render, :ezprint end end def render_with_ezprint(options = nil, *args, &block) if options.is_a?(Symbol) or options.nil? or options[:pdf].nil? render_without_ezprint(options, *args, &block) else options[:name] ||= options.delete(:pdf) make_and_send_pdf(options.delete(:name), options) end end private def make_pdf(options = {}) options[:stylesheets] ||= [] options[:layout] ||= false options[:template] ||= File.join(controller_path,action_name) # Stop Rails from appending timestamps to assets. ENV["RAILS_ASSET_ID"] = '' html_string = render_to_string(:template => options[:template], :layout => options[:layout]) kit = PDFKit.new(process_html_string(html_string)) kit.stylesheets = options[:stylesheets].collect{ |style| stylesheet_file_path(style) } kit.to_pdf end def make_and_send_pdf(pdf_name, options = {}) send_data( make_pdf(options), :filename => pdf_name + ".pdf", :type => 'application/pdf' ) end def stylesheet_file_path(stylesheet) stylesheet = stylesheet.to_s.gsub(".css","") File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR,"#{stylesheet}.css") end def process_html_string(html) html.gsub!("src=\"/","src=\"#{RAILS_ROOT}/public/") # reroute absolute paths end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
ezprint-0.1.2 | lib/ezprint/pdf_helper.rb |
ezprint-0.1.1 | lib/ezprint/pdf_helper.rb |
ezprint-0.1.0 | lib/ezprint/pdf_helper.rb |