Как уменьшить штрих-код Barby, чтобы он соответствовал размеру страницы PDF - PullRequest
0 голосов
/ 23 января 2019

Я создаю штрих-код с помощью 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

1 Ответ

0 голосов
/ 26 января 2019

ОК;опция высоты недопустима для 2D штрих-кодов, по той же причине, что ширина недоступна для любого штрих-кода: невозможно наложить эти размеры на результат, не повредив его.

source:https://github.com/toretore/barby/issues/30. Вы можете найти исходный код здесь .

Таким образом, у вас есть один вариант - сохранить штрих-код в виде файла изображения в формате png, а затем вы можете изменить его размер, чтобы он соответствовал ширине PDF, используя prawn.

...