Sha256: 52e28c8cac3cf44e023f4e727bfcec6646b7ce1b7c40f361d63e5c8ec386d6c2

Contents?: true

Size: 1.09 KB

Versions: 2

Compression:

Stored size: 1.09 KB

Contents

require 'tempfile'

module Propaganda    

  def self.check_dependencies
    require 'propaganda/fop/shell' 
    require 'propaganda/fop/bridge' 
  rescue LoadError => e
    false
  end

  MODE = check_dependencies ? 'rjb' : 'shell'

  class Renderer
    def initialize(verbose=false)
      @verbose = verbose
    end

    def version
      invoke('-v')
    end

    def render(html, output, template=nil)
      template ||= 'default'
      stylesheet = File.join(File.dirname(__FILE__), '..', '..', 'templates', "#{template}.xsl")
      stylesheet = File.expand_path(stylesheet)
      tmp = Tempfile.new('fop')
      tmp << html
      tmp.flush
      tmp.close
      output = File.expand_path(output)
      invoke('-xml', tmp.path, '-xsl', stylesheet, '-pdf', output)
    ensure
      tmp.close rescue nil
      tmp = nil  
    end
    
    private 
    
    def invoke(*args)
      if MODE == 'rjb'
        fop = Propaganda::Fop::Bridge.new(@verbose)
        fop.invoke(*args)
      elsif MODE == 'shell'
        fop = Propaganda::Fop::Shell.new(@verbose)
        fop.invoke(*args)
      end
    end        
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
propaganda-0.5.0 lib/propaganda/renderer.rb
propaganda-0.4.0 lib/propaganda/renderer.rb