class Pdf::NewApplicationService < ApplicationService
  def call
    pdf = WickedPdf.new.pdf_from_string(body, options)
    file = Tempfile.new
    file.binmode
    file.write(pdf)
    file.close
    file
  end

  private
    def options
      {}.tap do |data|
        data[:footer] = footer
        data[:header] = header if defined?(header)
      end.merge(configuration)
    end

    def configuration
      {}.tap do |config|
        config[:encoding] = 'UTF-8'
        config[:margin] = { top: 40, bottom: 20 }
      end
    end

    def footer
      { center: 'Page [page] of [topage]' }
    end
end
