Sha256: f4f3e3faa6ae5e15c08c560b116fd193e3067410b403861c998c0fc372f44521

Contents?: true

Size: 891 Bytes

Versions: 3

Compression:

Stored size: 891 Bytes

Contents

require 'pdfkit'

module FacturaePrint
  module Renderers
    class PDFRenderer
    
      def initialize(template, invoice, args={})
        @template = template
        @invoice = invoice
        @stylesheet = args.delete(:stylesheet)
        @pdfkit_options = args
      end
      
      def render
        html = FacturaePrint::Renderers::HTMLRenderer.new(@template, @invoice).render
        
        append_stylesheet_tag(html, (@stylesheet.is_a?(IO) ? @stylesheet.read : @stylesheet)) if @stylesheet
        PDFKit.new(html, @pdfkit_options).to_pdf
      end
      
      private
      
      def append_stylesheet_tag(html_string, stylesheet)
        if html_string.match(/<\/head>/)
          html_string.gsub!(/(<\/head>)/, "<style>#{stylesheet}</style>"+'\1')
        else
          html_string.insert(0, "<style>#{stylesheet}</style>")
        end
      end
    
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
facturae_print-0.0.4 lib/facturae_print/renderers/pdf_renderer.rb
facturae_print-0.0.3 lib/facturae_print/renderers/pdf_renderer.rb
facturae_print-0.0.2 lib/facturae_print/renderers/pdf_renderer.rb