gpt4 book ai didi

ruby-on-rails - 如何使用 Barby 为字符串生成 code_128 条形码

转载 作者:行者123 更新时间:2023-12-04 06:22:59 28 4
gpt4 key购买 nike

我目前正在使用带有包装器 gem has_barcode 的 Barby gem 为我拥有的字符串生成条形码:j5xvvcz。

Gemfile gems(主要针对那些刚接触此解决方案的人)

#for barcode generation
gem "barby", "~> 0.5.0"
gem "has_barcode", "~> 0.2.0"
gem "rqrcode", "~> 0.4.2" #for qr code support

模型中的代码

include HasBarcode

has_barcode :barcode,
:outputter => :svg,
:type => :code_93,
:value => Proc.new { |p| "#{p.number}" }

我在哪里渲染它到屏幕:

如果我尝试生成一个 qr_code 或 code_93,一切正常,但 code_128 或 code_39 也无法正常工作,得到一条数据无效消息。我担心的是 code_93 在某些设备中不会被识别,因为它似乎没有被广泛采用(据我阅读 here 128 将是最好的解决方案)

这似乎是我可能做错的事情,因为代码在我测试时显然对 code_128 有效 here .

有人知道我的方法可能有什么问题吗?

最佳答案

显然,code_128 的模式“A”不适合带有 Barby 的小型股。

所以我必须让模式 B 工作。

当前发布的 has_barcode 强制模式 'A' 的 gem 版本,所以我添加了一点“home-patch”,同时向 github 添加了一个建议。

这是我最终的 has_barcode.rb 文件:

require "rubygems"
require "i18n"
require "active_support"
require "active_support/hash_with_indifferent_access.rb"
require "active_support/inflector.rb"
require "barby"

require "has_barcode/configuration"

module HasBarcode
def self.included(base)
base.send(:extend, ClassMethods)
end

module ClassMethods
def has_barcode(*args)
options = args.extract_options!
@@barcode_configurations ||= {}
@@barcode_configurations[args.first] = HasBarcode::Configuration.new(options)

define_method args.first do
if options[:type] == :code_128
@@barcode_configurations[args.first].barcode_class.new(options[:value].call(self), options[:code128])
else
@@barcode_configurations[args.first].barcode_class.new(options[:value].call(self))
end
end

define_method "#{args.first}_data" do |opts|
if opts
send(args.first).send("to_#{options[:outputter]}", opts)
else
send(args.first).send("to_#{options[:outputter]}")
end
end

end

def barcode_configurations
@@barcode_configurations
end
end

end

我的模型:

has_barcode :barcode,
outputter: :svg,
type: :code_128,
code128: 'B',
value: Proc.new { |p| "#{p.number}" }

我的观点:

<%= my_model.barcode_data(xdim:2, height:60).html_safe %>

请注意,在当前日期(2012 年 12 月 5 日),当前的 gem 未更新为允许传递输出参数(如 xdim 和高度)的最新更改。

这个答案是基于最新的代码更新(问题相关)和我自己的建议,可以找到here

虽然此解决方案未嵌入到 has_barcode gem 中,但我将直接使用 Barby:

在我的模型中添加:

def get_barcode(number)
require 'barby'
require 'barby/barcode/qr_code'
require 'barby/outputter/svg_outputter'

barcode = Barby::Code128B.new("#{number}")

barcode.to_svg(xdim:2, height:60)
end

在 View 中:

<%= my_model.get_barcode(my_model.number).html_safe %>

关于ruby-on-rails - 如何使用 Barby 为字符串生成 code_128 条形码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13724415/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com