Sha256: 87819d5885e94aa3e17884c1e7ea5c82c2d9202d548105f9ad9263f06d4b9bb8
Contents?: true
Size: 1.93 KB
Versions: 3
Compression:
Stored size: 1.93 KB
Contents
require 'princely' require 'princely/asset_support' module Princely module PdfHelper def self.included(base) base.send :alias_method_chain, :render, :princely end def render_with_princely(options = nil, *args, &block) if options.is_a?(Hash) && options.has_key?(:pdf) options[:name] ||= options.delete(:pdf) make_and_send_pdf(options.delete(:name), options) else render_without_princely(options, *args, &block) end end private def make_pdf(options = {}) options = { :stylesheets => [], :layout => false, :template => File.join(controller_path, action_name), :relative_paths => true, :server_flag => true, :media => nil, :javascript_flag => false }.merge(options) prince = Princely::Pdf.new(options.slice(:server_flag, :javascript_flag, :media)) # Sets style sheets on PDF renderer prince.add_style_sheets(*options[:stylesheets].collect{|style| asset_file_path(style)}) html_string = render_to_string(options.slice(:template, :layout, :handlers, :formats)) html_string = localize_html_string(html_string, Rails.public_path) if options[:relative_paths] # Send the generated PDF file from our html string. if filename = options[:filename] || options[:file] prince.pdf_from_string_to_file(html_string, filename) else prince.pdf_from_string(html_string) end end def asset_file_path(asset) asset = asset.to_s.gsub('.css', '') File.join(config.stylesheets_dir, "#{asset}.css") end alias_method :stylesheet_file_path, :asset_file_path def make_and_send_pdf(pdf_name, options = {}) options = {:disposition => 'attachment'}.merge(options) send_data( make_pdf(options), :filename => "#{pdf_name}.pdf", :type => 'application/pdf', :disposition => options[:disposition] ) end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
princely-2.0.2 | lib/princely/pdf_helper.rb |
princely-2.0.1 | lib/princely/pdf_helper.rb |
princely-2.0.0 | lib/princely/pdf_helper.rb |