Проблема с реализацией уменьшения ширины штрих-кода в пакете python reportlab - PullRequest
0 голосов
/ 23 мая 2019

Уменьшение ширины полосы или BWR - это метод настройки файла графического дизайна штрих-кода для компенсации усиления при печати.Усиление печати или распространение чернил - одна из наиболее распространенных причин плохой работы штрих-кода.

Мы успешно внедрили модуль reportlab и можем наносить штрих-коды code128 и i2of5 на наши PDF-файлы, которые печатают и сканируют очень хорошо (модульфантастика для всего PDF действительно!).Проблема в том, что для некоторых из наших заводов им нужно большее уменьшение ширины стержня, чтобы компенсировать дополнительный выигрыш от их прессов, и я не могу правильно реализовать это поведение.

Я играл со многими атрибутами, которые я могу найти из кода reportlab на github - https://github.com/MatthewWilkes/reportlab/blob/master/src/reportlab/graphics/barcode/common.py - включая barWidth, Width, Gap, Ratio, и ни один из них, похоже, не меняетуменьшение ширины полосы при измерении.

Я измеряю полученные штрих-коды в наших PDF-файлах с помощью программного обеспечения ESKO под названием Pilot, которое позволяет нарисовать рамку вокруг штрих-кода в PDF-файле и сообщит вам код, если его можно правильно прочитать, и значениеуменьшение ширины стержня.

Вот пример кода одного из наших рабочих штрих-кодов, идущих на странице.

from reportlab.graphics import barcode
from reportlab.lib.units import inch, pica
from reportlab.lib.colors import CMYKColor

code = 12345678
black_color = CMYKColor(0,0,0,1.0)
bcode_draw = barcode.createBarcodeDrawing('Code128',
                          barFillColor = black_color,
                          barStrokeColor = black_color,
                          textColor = black_color,
                          width=3.644 * inch,
                          height=1.214 * inch,
                          quiet=False,
                          barWidth=0.0085 * inch,
                          value="0" + str(code))

bcode_draw.translate(x * pica, y * pica)
self.drawing.add(bcode_draw)

Результат - тот же самый штрих-код с тем же атрибутом сокращения barWidth (-.04), независимо от того, какими значениями я пытаюсь манипулировать, и мы пытаемся получить положительное значение .0075).

Существует модуль под названием TreePoem (https://github.com/adamchainz/treepoem/blob/master/treepoem/data.py), который я изучил, который принимает атрибут «inkspread», который делал то, что я хотел, но я не могу заставить эти файлы преобразовать из файла EPS вSVG-файл, такие как InkScape, просто заключают PNG в разметку SVG, так что это не совсем SVG. Также не все штрих-коды отсканированы очень хорошо, поэтому я сдался и удваиваю попытки заставить reportlab делать то, что я хочу!

Буду очень признателен за любые предложения. Даже если рекомендуются другие модули (или кто-то может конвертировать EPS в SVG лучше, чем я). Мне нужно решение на python, которое можно реализовать вместе с reportlab и автоматизировать.

...