Giter Site home page Giter Site logo

render_to_string doesn't work about wicked_pdf HOT 5 CLOSED

quorak avatar quorak commented on August 27, 2024
render_to_string doesn't work

from wicked_pdf.

Comments (5)

unixmonkey avatar unixmonkey commented on August 27, 2024

Did it work before?

I recently moved the prerendering of headers and footers into the make_pdf method here:
30de4a2

This should allow you a lot more flexibility since before headers and footers were previously only made when calling render.

And aliased render_to_string to render_to_string_with_wicked_pdf here:
3fbcca0

This should help, not hurt what you are trying to do.

Are you doing this in a controller or a mailer?

Could you provide a little more information about what you are trying to do?

from wicked_pdf.

quorak avatar quorak commented on August 27, 2024

yeah, I'm rendering a pdf in a mailer and send it directly with the mail.
I came up with a Wrapper Standalone class! Might be usefull for someone.

class WickedPdfStandalone

  attr_accessor :av

  def pdf_from_options(options={},variables = {})



    self.av = ActionView::Base.new(Rails::Application::Configuration.new(Rails.root).view_path) unless av
    av.class_eval do
        include ApplicationHelper
    end


    variables.each{|key,value|
      av.instance_eval("#{key} = nil")
      av.instance_variable_set("@order",value)
    }

    html_string = av.render(:template => options[:template],:layout => nil)

    options = prerender_header_and_footer(options)

    w = WickedPdf.new(options[:wkhtmltopdf])
    return w.pdf_from_string(html_string, options)

  end


  private



  # Given an options hash, prerenders content for the header and footer sections
  # to temp files and return a new options hash including the URLs to these files.
  def prerender_header_and_footer(options)
    [:header, :footer].each do |hf|
      if options[hf] && options[hf][:html] && options[hf][:html][:template]
        WickedPdfTempfile.open("wicked_pdf.html") do |f|
          f << av.render(:template => options[hf][:html][:template],
                                :layout => nil)
          options[hf][:html].delete(:template)
          options[hf][:html][:url] = "file://#{f.path}"
        end
      end
    end

    return options
  end
end

from wicked_pdf.

leifcr avatar leifcr commented on August 27, 2024

Thanks for the tip on putting it in a wrapper. Same issue here with render_to_string with header/footer in attachments.

Another option is to generate the pdf in a view, and attach the file by reading it from the view in the mailer. Although that would add another hit on the server.

from wicked_pdf.

yuthura avatar yuthura commented on August 27, 2024

Wicked PDF is not available from the mailer. We needed this in a hurry for a project I'm working on some time ago, so I forked it and monkey patched it by adding ActionMailer::Base.send :include, PdfHelper
to wicked_pdf_railtie.rb. Then you can just do render :pdf and render_to_string :pdf from your mailers too. Might be useful to others, but didn't (and unfortunately won't) add any tests for this due to time constraints.

from wicked_pdf.

taelor avatar taelor commented on August 27, 2024

I don't know if this will help anyone or not, but this is how I am rendering a PDF, and then attaching it to a email using Mailer. Check out the stuff dealing with "script"

https://github.com/taelor/radio/

https://github.com/taelor/radio/blob/master/app/controllers/episodes_controller.rb

https://github.com/taelor/radio/blob/master/app/mailers/episode_mailer.rb

from wicked_pdf.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.