我尝试过许多用于创建PDF文档的宝石,其中一些工作非常好,没有太多困难。我的任务是在PDF文档中创建QRcode。我在QR生成器和PDF生成器之间尝试了很多组合。虽然我在将Qr代码放入PDF文档时遇到了很多麻烦。我正在使用rqrcode
宝石,我喜欢它,因为它从CSS生成QR码,而不是图像。
我尝试使用专门为Prawn生成QR码的gems,但是我不断收到一条消息,说它无法识别modules
方法。我最接近的是在我的html
文档中使用类似的结构。但那只是在没有表的情况下使用它,这是没用的,因为gem通过输出表和CSS来工作。
我知道这很模糊,但由于我尝试过的可能解决方案和不同尝试的数量,我不确定我应该给出什么其他信息。
有什么想法吗?有没有其他人设法使用Prawn中的表创建一个包含rqrcode
gem的QR码?
表格在视图中的显示方式(HTML,而不是PDF):
<table class="qr">
<% qr.modules.each_index do |x| -%>
<tr>
<% qr.modules.each_index do |y| -%>
<% if qr.dark?(x,y) -%>
<td class="black"/>
<% else -%>
<td class="white"/>
<% end -%>
<% end -%>
</tr>
<% end -%>
</table>
我最接近.prawn.pdf file
时没有突破(当我试图添加它打破的表时)。 *
和!
只是在测试modules method
是否有效,当我尝试将其更改为单元格背景时,它会中断。
@qr.modules.each_index do |x|
@qr.modules.each_index do |y|
if @qr.dark?(x,y)
pdf.text "!"
else
pdf.text "*"
end
end
end
Gemfile
gem 'prawn'
gem 'prawn-qrcode'
gem "rqrcode", "~> 0.4.2"
更新
我找到了一些有用的code,虽然现在我遇到的问题是QR码的实际大小。我希望能够使QR码非常大。令人惊讶的是,新代码中的参数实际上并没有改变大小;实际QR码中的size
参数确实会稍微改变大小,但它实际上正在改变QR码的version,这不是我想要的。
答案 0 :(得分:1)
在控制器中,在课前
require 'rubygems'
require 'barby'
require 'barby/barcode/code_128'
require 'chunky_png'
require 'barby/outputter/png_outputter'
require 'aws/s3'
控制器方法
def generate_barcode
...
@barcode_numbers = inspection.get_barcode_numbers
...
@barcode_numbers.each do |d|
barcode = Barby::Code128B.new(d)
image_path = get_image_path + "code_#{params[:inspection_id]}_#{@spec.id}_#{d.sub('.', '0')}.png"
File.open(image_path, 'w'){|f|
f.write barcode.to_png(:height => 50, :margin => 3)
Barcode.create(:filename => "code_#{params[:inspection_id]}_#{@spec.id}_#{d.sub('.', '0')}.png", :measurement => d)
}
end
html = render_to_string(:action => "generate_barcode.html.haml", :layout => false)
kit = PDFKit.new(html)
send_data(kit.to_pdf, :filename => 'barcodes.pdf', :type => 'application/pdf', :disposition => 'inline')
@all_barcodes.each do |d|
File.delete("#{Rails.root}/tmp/#{d.filename}")
end if Rails.env != "development"
@all_barcodes.destroy_all