Я создаю штрих-код с помощью Barby и добавляю его в PDF-файл, созданный с помощью Prawn. Штрих-код может иметь переменную длину, поэтому я хочу иметь возможность уменьшить его ширину, чтобы она соответствовала формату PDF.
Я могу уменьшить ширину штрих-кода, добавив xdim: <scale factor>
к параметрам annotate_pdf
. Однако я не знаю, как определить, превысит ли мой штрих-код размер страницы PDF, и какой масштабный коэффициент использовать.
приложение / 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