Sha256: 1729f066f2a0f770b4570707aefe6900d97470f73fa1fa4dbdc0115cbd256ead
Contents?: true
Size: 1.74 KB
Versions: 1
Compression:
Stored size: 1.74 KB
Contents
module Slim2pdf class Writer attr_accessor :template, :data attr_accessor :wkhtmltopdf_command attr_accessor :footer_text, :footer_font, :footer_font_size attr_accessor :logger def initialize(template=nil, data={}) @template = template @data = data end def render_to_html Slim::Template.new(template).render(scope) end def save_to_html(path) create_dir(path) File.write(path, render_to_html) logger.info "[Slim2pdf] HTML file saved: #{path}" if logger end def save_to_pdf(path) create_dir(path) html = create_tmp_html full_command = "#{wkhtmltopdf_command} #{html.path} #{path}" logger.debug "[Slim2pdf] Run command: #{full_command}" if logger `#{full_command}` html.unlink logger.info "[Slim2pdf] PDF file saved: #{path}" if logger end # wkhtmltopdf command without html and pdf file params def wkhtmltopdf_command @wkhtmltopdf_command || "wkhtmltopdf #{footer_params} -q" end def logger @logger ||= defined?(Rails) ? Rails.logger : nil end private # Change hash data to scope object def scope OpenStruct.new(data) end # Create dir if not exists def create_dir(path) FileUtils.mkdir_p(Pathname.new(path).dirname) end def create_tmp_html tmp = Tempfile.new ['slim2pdf', '.html'] begin tmp.write render_to_html ensure tmp.close end tmp end def footer_params return unless footer_text "--footer-line --footer-font-name '#{footer_font || 'verdana'}' " + "--footer-font-size '#{footer_font_size || 10}' --footer-left '#{footer_text}'" end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
slim2pdf-0.0.2 | lib/slim2pdf/writer.rb |