如何使用Prawn将base64字符串转换为PNG而不保存在Rails中的服务器上

时间:2012-11-06 18:03:49

标签: ruby-on-rails ruby prawn

所以我试图使用Prawn gem将Photoshop的PNG图像嵌入到PDF中。 Base64字符串是使用canvas'toDataURL()函数生成的。由于图像仅在PDF中需要,我试图避免将其保存在服务器上。 Params [:base64string]正确传递给服务器。

但是,我正在尝试使用

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

创建图像,但我得到NoM​​ethodError:nil的未定义方法`unpack':NilClass。

任何想法我做错了什么或者应该如何正确地做到这一点?

1 个答案:

答案 0 :(得分:2)

找到here

Prawn想要文件路径而不是编码图像数据。您可以使用临时文件:

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

希望这有帮助!