我想pdf从DB记录生成文件.将其编码为Base64字符串并将其存储到DB.哪个工作正常.现在我想要反向操作,如何解码Base64字符串并pdf再次生成文件?
这是我到目前为止所尝试的.
def data_pdf_base64
begin
# Create Prawn Object
my_pdf = Prawn::Document.new
# write text to pdf
my_pdf.text("Hello Gagan, How are you?")
# Save at tmp folder as pdf file
my_pdf.render_file("#{Rails.root}/tmp/pdf/gagan.pdf")
# Read pdf file and encode to Base64
encoded_string = Base64.encode64(File.open("#{Rails.root}/tmp/pdf/gagan.pdf"){|i| i.read})
# Delete generated pdf file from tmp folder
File.delete("#{Rails.root}/tmp/pdf/gagan.pdf") if File.exist?("#{Rails.root}/tmp/pdf/gagan.pdf")
# Now converting Base64 to pdf again
pdf = Prawn::Document.new
# I have used ttf font because it …Run Code Online (Sandbox Code Playgroud) 我想在一个pdf中保存多个png.我从API调用收到的PNG到Endicia Label Server,它给我一个Base64编码图像作为响应.
基于这个问题:
如何使用Prawn将base64字符串转换为PNG而不保存在Rails中的服务器上
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
Run Code Online (Sandbox Code Playgroud)
但我收到以下错误:
任何的想法?