複数のpngを1つのpdfに保存しようとしています。Endicia Label Server への API 呼び出しから PNG を受信しています。これにより、Base64 でエンコードされたイメージが応答として返されます。
この質問に基づいて:
Railsのサーバーに保存せずにPrawnを使用してbase64文字列をPNGに変換する方法
def batch_order_labels
@orders = Spree::Order.ready_to_ship.limit(1)
dt = Date.current.strftime("%d %b %Y ")
title = "Labels - #{dt} - #{@orders.count} Orders"
Prawn::Document.generate("#{title}.pdf") do |pdf|
@orders.each do |order|
label = order.generate_label
if order.international?
@image = label.response_body.scan(/<Image PartNumber=\"1\">([^<>]*)<\/Image>/imu).flatten.last
else
@image = label.image
end
file = Tempfile.new('labelimg', :encoding => 'utf-8')
file.write Base64.decode64(@image)
file.close
pdf.image file
pdf.start_new_page
end
end
send_data("#{title}.pdf")
end
しかし、次のエラーが表示されます。
ASCII-8BIT から UTF-8 への「\x89」
何か案が?