Rails 4 *Mac OSX 10.8.4*
I'm using the following Gem for wicked_pdf pdf generation:
gem 'wkhtmltopdf-binary'
gem 'wicked_pdf'
Rendering Views as pdfs works fine and Google displays it's PDF viewer correctly. My PDFs look exactly how I want them to.
The problem arises when I try to save a pdf to disc, for the purpose of emailing them to a user.
For example, this works fine:
def command
  @event = Event.find(params[:id])
  @client = Contact.find(@event.client_id)
  @organizer = Contact.find(@event.organizer_id)
  render layout: 'command',
       pdf: 'Event Command',
       show_as_html: params[:debug].present?,
       dpi: 300,
       print_media_type: true,
       margin: {
           top: 0,
           bottom: 0,
           left: 0,
           right: 0
       }
  end
That will render the pdf in the Google Chrome PDF viewer.
But here, is where I want to generate a PDF and save to file.
def send_email
  @event = Event.find(params[:id])
  @client = Contact.find(@event.client_id)
  @organizer = Contact.find(@event.organizer_id)
  proforma = render_to_string(
      pdf: 'proforma.pdf',
      template: 'events/proforma',
      layout: 'proforma'
  )
  pdf = WickedPdf.new.pdf_from_string(
    proforma
  )
  save_path = Rails.root.join('public','proforma.pdf')
  File.open(save_path, 'wb') do |file|
    file << pdf
  end
end
But I'm getting the error:
Failed to execute:
Error: "\xFE" from ASCII-8BIT to UTF-8
                Try this:
   File.open(save_path, 'w:ASCII-8BIT') do |file|
     file << pdf
   end
The PDF rendered as a string in memory seems to be in ASCII, so save it as such :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With