У меня есть внутреннее приложение для создания компьютерных ярлыков. Я импортирую компьютеры из файла, полученного от Dell, или ввожу их вручную, я экспортирую их в файл CSV, который можно импортировать в MS SCCM. Я могу печатать этикетки, чтобы поставить на компьютеры. На этикетках есть логотип компании, имя компьютера, MAC-адрес и контактная информация службы поддержки.
Я печатаю его с помощью gLabels. Вы создаете этикетку в gLabels, вводите динамические поля и подаете в нее файл CSV, и он выплевывает PDF, который я затем использую lpr для печати на моем Dymo Labelwriter.
Я поместил его в свою модель «Компьютеры», потому что не знал, куда еще его поместить.
# Print all computers with printed = false
def self.print
printed_labels = 0
csv_file = Tempfile.new(["computers", ".csv"])
logger.debug("Writing #{csv_file.path}")
begin
Computer.transaction do
Computer.unprinted.each do |computer|
csv_file.puts "\"#{computer.mac(' ')}\",\"#{computer.hostname}\""
computer.printed = true
computer.save
printed_labels += 1
end
end
ensure
csv_file.close
if csv_file.length > 0
pdf_file = Tempfile.new(["computers", ".pdf"])
begin
pdf_file.close
system '/usr/bin/glabels-batch', "--input=#{csv_file.path}", "--output=#{pdf_file.path}", AssetBase::Application.config.computer_label
system '/usr/bin/lpr', '-P', 'LabelWriter-450', pdf_file.path
ensure
pdf_file.unlink
end
end
csv_file.unlink
end
printed_labels
end
Это работает в Fedora Linux, поэтому серверная часть принтера - CUPS, и какая часть его обрабатывает PDF, я не знаю. Это может быть CUPS, драйвер принтера или сам драйвер принтера.
Существуют и другие способы создания структурированного текста в PDF, но для меток отлично подходит gLabels.