Rails, Prawn - PDF show up in browser & etc

11,036

Solution 1

How can I force prawn to generate the file in the app/report (or any other selected) folder?

def index
  pdf = Prawn::Document.new
  pdf.text "Hello World"
  pdf.render_file File.join(Rails.root, "app/report", "x.pdf")
end

How can I make the action to generate the file in the browser window and don't save it?

def index
  pdf = Prawn::Document.new
  pdf.text "Hello World"
  send_data pdf.render, :filename => "x.pdf", :type => "application/pdf"
end

How can I make it to save and show up in the browser window?

def index
  pdf = Prawn::Document.new
  pdf.text "Hello World"
  filename = File.join(Rails.root, "app/report", "x.pdf")
  pdf.render_file filename
  send_file filename, :filename => "x.pdf", :type => "application/pdf"
end

Solution 2

Answering Question 3: "How can I make it to save and show up in the browser window?"

def index
  pdf = Prawn::Document.new
  pdf.text 'Hello World'
  send_data pdf.render, filename: 'x.pdf', type: 'application/pdf', disposition: 'inline'
end

disposition: 'inline' will force the browser ( if it can ) to display your PDF inside the current browser window

Share:
11,036
Kael
Author by

Kael

Updated on June 24, 2022

Comments

  • Kael
    Kael about 2 years

    I'm trying to understand the Prawn pdf gem.

    I was able to make it generate a pdf. Every gem in the gemfile included:

    gem 'mysql', '~> 2.8.1'
    gem 'prawn', '~> 0.12.0'
    gem 'pdf-reader', '~> 0.10.0'
    gem 'Ascii85', '~> 1.0.1'
    

    In the config/application.rb:

    config.autoload_paths << "#{Rails.root}/app/reports"
    

    Then in the controller:

     require 'prawn'
    
     def index
      pdf = Prawn::Document.new
      pdf.text "Hello World"
      pdf.render_file "x.pdf"
     end
    

    Than I call the index function. A PDF named x.pdf is created in the root of my application. Amongst the gemfile, rakefile and config.ru.

    Question:

    1. How can I force prawn to generate the file in the app/report (or any other selected) folder?
    2. How can I make the action to generate the file in the browser window and don't save it?
    3. How can I make it to save and show up in the browser window?
  • SSR
    SSR almost 11 years
    Hi, for me its not going to save in that folder. but it goes there to find that is that pdf is there or not? any solution to store pdf in public folder?
  • sissy
    sissy over 10 years
    in the send_data you should add the option :disposition => 'inline'