5

だから私はエビの宝石を使ってキャンバスのPNG画像をPDFに埋め込もうとしています。base64 文字列は、canvas の toDataURL() 関数を使用して生成されます。画像はPDFでのみ必要なので、サーバーに保存しないようにしています。Params[:base64string] がサーバーに正しく渡されます。

しかし、私は使用しようとしています

image = Prawn::Images::PNG.new(base64string)

画像を作成するために NoMethodError: undefined method `unpack' for nil:NilClass.

私が間違っていること、またはこれを正しく行う方法について何か考えはありますか?

4

1 に答える 1

2

ここにあります:

エビは、エンコードされた画像データではなく、ファイル パスを必要とします。一時ファイルを使用できます:

require 'prawn'
require 'tempfile'
require 'active_support' # for base64

Prawn::Document.generate('/tmp/test.pdf') do
  file = Tempfile.new('image')
  file.write ActiveSupport::Base64.decode64(image)
  file.close

  image file.path
end

お役に立てれば!

于 2012-11-06T18:06:57.587 に答える