如何缩小Barby条形码以适合PDF页面大小

时间:2019-01-23 00:01:35

标签: ruby-on-rails prawn

我正在使用Barby生成条形码,并将其添加到使用Prawn生成的PDF中。条形码的长度可以变化,因此我希望能够缩小其宽度以确保其适合PDF。

我可以通过在xdim: <scale factor>选项中添加annotate_pdf来缩小条形码的宽度。但是,我不知道如何判断条形码是否会超出PDF页面的大小,以及如何使用比例因子。

app / pdfs / item_pdf.rb

require 'barby'
require 'barby/barcode/code_128'
require 'barby/outputter/prawn_outputter'

class ItemPdf < Prawn::Document
  def initialize(item)
    super(page_size: [79.2, 254.88],
          margin: 9,
          page_layout: :landscape)
    @item = item

    font_size 16
    job_name
    item_number
    barcode
  end

  def job_name
    text_box "Job: #{@item.job.name}", 
             height: 20,
             at: [0, 60],
             overflow: :shrink_to_fit
  end

  def item_number
    text_box "Item: \##{@item.number}",
             height: 20,
             at: [0, 40],
             overflow: :shrink_to_fit
  end

  def barcode
    barcode = Barby::Code128.new @item.number
    barcode.annotate_pdf(self, height: 25)
  end
end

1 个答案:

答案 0 :(得分:0)

  

好吧;出于相同的原因,height选项对于二维条形码无效   该宽度不适用于任何条形码:无法   将这些尺寸标注在结果上而不破坏它。

来源:https://github.com/toretore/barby/issues/30。您可以找到source code from here

所以您可以选择的一种方法是将条形码保存为png图像文件,然后可以使用对虾调整其大小以适合pdf宽度。