7

レール 4 * Mac OSX 10.8.4 *


wicked_pdf pdf 生成に次の Gem を使用しています。

gem 'wkhtmltopdf-binary'
gem 'wicked_pdf'

ビューを pdf としてレンダリングすると問題なく動作し、Google は PDF ビューアを正しく表示します。私の PDF は、私が望むとおりに見えます。

ユーザーに電子メールで送信する目的で、PDF をディスクに保存しようとすると、問題が発生します。

たとえば、これは正常に機能します。

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

これにより、Google Chrome PDF ビューアーで PDF がレンダリングされます。

しかし、ここでPDFを生成してファイルに保存したいところです。

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

しかし、私はエラーが発生しています:

Failed to execute:

Error: "\xFE" from ASCII-8BIT to UTF-8
4

1 に答える 1

7

これを試して:

   File.open(save_path, 'w:ASCII-8BIT') do |file|
     file << pdf
   end

メモリ内の文字列としてレンダリングされたPDFはASCIIのように見えるので、そのまま保存してください:)

于 2015-03-13T14:28:47.883 に答える