Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I display a PDF in ROR (Ruby)? [closed]

I have looked around on the internet, but do not seem able to find how to display a PDF in rails (I can only find info on how to create one).

Does anyone know what code/gem I need to display one?

like image 794
IAmGroot Avatar asked Sep 21 '11 13:09

IAmGroot


People also ask

How do I display a PDF in iframe?

All you need to do is add #view=fitH to the end of the source attribute. That's it! fitH stands for fit horizontal, and this will make the PDF in our iframe fit the width of the screen.


2 Answers

In your controller:

def pdf   pdf_filename = File.join(Rails.root, "tmp/my_document.pdf")   send_file(pdf_filename, :filename => "your_document.pdf", :type => "application/pdf") end 

In config/environment/production.rb:

config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 

or

config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

The config modification is required because it enables the web server to send the file directly from the disk, which gives a nice performance boost.

Update

If you want to display it instead of downloading it, use the :disposition option of send_file:

send_file(pdf_filename, :filename => "your_document.pdf", :disposition => 'inline', :type => "application/pdf") 

If you want to display it inline, this question will be much more complete that I could ever be.

like image 93
Benoit Garret Avatar answered Sep 23 '22 01:09

Benoit Garret


Basically you just need to write it in the html in your view. So this simple solution worked for me:

In the 'show.hmtl.erb'

<iframe src=<%= @certificate.certificate_pdf %> width="600" height="780" style="border: none;"> </iframe> 

just putting the file location in embedded ruby as the source of the iframe tag worked for me after hours and hours of searching. 'certificate' is my model, and 'certificate_pdf' is my attachment file.

like image 37
andrewcockerham Avatar answered Sep 19 '22 01:09

andrewcockerham