Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Save PDF file shown by PDFKit middleware

If somebody is interested in saving the PDF file in the filesystem which is shown by PDFKit middleware gem, then here it is...

  1. Override the call method of middleware.rb file.
  2. In overriding just replace this line:

    body = PDFKit.new(translate_paths(body, env), @options).to_pdf
    

    with

    pdf = PDFKit.new(translate_paths(body, env), @options)
    file = pdf.to_file('Your/file/name/path')
    Mymodel.my_method()     #You can write your method here to use that file
    body = pdf.to_pdf   #Here you can change the response body
    

You can also override the response-body and content-type if you don't want to give pdf response. If you have any further query then go ahead.

This procedure is really help full because when you are having heavy JavaScript an CSS in your view file then render_to_string method will not work i.e. it will not render the heavy JavaScript.

like image 562
Ashish Avatar asked Mar 01 '11 11:03

Ashish


1 Answers

If somebody is interested in saving the PDF file in the filesystem which is shown by PDFKit middleware gem, then here it is...

  1. Override the call method of middleware.rb file.
  2. In overriding just replace this line:

    body = PDFKit.new(translate_paths(body, env), @options).to_pdf
    

    with

    pdf = PDFKit.new(translate_paths(body, env), @options)
    file = pdf.to_file('Your/file/name/path')
    Mymodel.my_method()     #You can write your method here to use that file
    body = pdf.to_pdf   #Here you can change the response body
    

You can also override the response-body and content-type if you don't want to give pdf response. If you have any further query then go ahead.

This procedure is really help full because when you are having heavy JavaScript an CSS in your view file then render_to_string method will not work i.e. it will not render the heavy JavaScript.

like image 172
Vishnuprasad R Avatar answered Oct 21 '22 05:10

Vishnuprasad R