module Html2Pdf::Rails::Rendering

Public Instance Methods

render_pdf_and_get_url(options) click to toggle source
# File lib/html2pdf/rails/rendering.rb, line 13
def render_pdf_and_get_url(options)
  _html2_pdf_render_pdf_and_get_url(options.delete(:pdf), options)
end
render_to_pdf(options) click to toggle source
# File lib/html2pdf/rails/rendering.rb, line 9
def render_to_pdf(options)
  _html2pdf_make_and_send_pdf(options.delete(:pdf), options)
end

Private Instance Methods

_html2_pdf_render_pdf_and_get_url(pdf_name, options = {}) click to toggle source
# File lib/html2pdf/rails/rendering.rb, line 29
def _html2_pdf_render_pdf_and_get_url(pdf_name, options = {})
  options = _html2pdf_default_options(pdf_name, options)
  options[:put_to_storage] = true
  json = JSON.parse(_html2pdf_make_pdf(options))
  json['url']
end
_html2pdf_default_options(pdf_name, options) click to toggle source
# File lib/html2pdf/rails/rendering.rb, line 19
def _html2pdf_default_options(pdf_name, options)
  new_options = options.dup
  new_options[:layout] ||= false
  new_options[:template] ||= File.join(controller_path, action_name)
  new_options[:pdf_options] ||= {}
  new_options[:file_name] = "#{pdf_name}.pdf"
  new_options[:disposition] ||= 'inline'
  new_options
end
_html2pdf_make_and_send_pdf(pdf_name, options = {}) click to toggle source
# File lib/html2pdf/rails/rendering.rb, line 36
def _html2pdf_make_and_send_pdf(pdf_name, options = {})
  options = _html2pdf_default_options(pdf_name, options)

  if options[:show_as_html]
    render_opts = options.slice(:template, :layout, :formats, :handlers)
    render(render_opts.merge({ content_type: 'text/html' }))
  else
    pdf_content = _html2pdf_make_pdf(options)
    send_data(pdf_content, filename: options[:file_name], type: 'application/pdf', disposition: options[:disposition])
  end
end
_html2pdf_make_pdf(options = {}) click to toggle source
# File lib/html2pdf/rails/rendering.rb, line 48
def _html2pdf_make_pdf(options = {})
  render_opts = options.slice(:template, :layout, :formats, :handlers)
  html = render_to_string(render_opts)

  Retryable.retryable(tries: 3, on: Html2Pdf::Rails::ServiceUnavailableError) do
    Client.post(
      html: html,
      put_to_storage: options[:put_to_storage],
      file_name: options[:file_name],
      disposition: options[:disposition],
      pdf_options: options[:pdf_options]
    )
  end
end