Сэм,
Во-первых, ваш штрих-код не будет сканироваться, как есть.Строка требует добавления начального символа, контрольной суммы и символа остановки для Code128B.Итак, вот что.
Я рекомендую перейти на шрифт Code 39 (который не требует контрольной суммы, а символы начала и окончания одинаковы: "*") или написание кода для создания контрольной суммы и немного больше узнать о Code 128 на Code 128 Wiki .
Во-вторых, я подозреваю, что существуют проблемы с ограничивающей рамкой дляграфика при конвертации в PDF.Эта небольшая часть преобразуемого штрих-кода больше похожа на часть числа девять в строке.Я подозреваю, что происходит некоторое сокращение изображения.
Попробуйте заменить обычный текстовый шрифт, чтобы убедиться, что изображение штрих-кода не теряется при конвертации.
Отредактированный ответ, включающий предложение использовать PNGвместо PDF.
Мне удалось заставить программное обеспечение работать, если вы выводите в формате PNG.Я знаю, теперь проблема заключается в том, как конвертировать PNG в PDF.Вы можете начать с изучения некоторых библиотек, упомянутых здесь: Создать PDF из списка изображений
Короче я рекомендую вам создавать графические файлы, а затем вставлять их в файлы документов.
Я также добавил код, необходимый для построения штрих-кода с символами начала, контрольной суммы и остановки:
import os
import matplotlib.pyplot as plt
from matplotlib import font_manager as fm
def draw_label(label, label_dimensions_x=3.8189, label_dimensions_y=1.41732):
# import barcode code128 font
fpath = os.path.join("./", "code128.ttf")
prop = fm.FontProperties(fname=fpath, size=32)
fig, ax = plt.subplots(1, figsize=(label_dimensions_x,
label_dimensions_y))
plt.axis('off')
plt.xticks([], [])
plt.yticks([], [])
plt.tight_layout()
plt.xlim(0, label_dimensions_x)
plt.ylim(0, label_dimensions_y)
# calc checksum THEN plot barcode
weight = 1
chksum = 104
for x in label:
chksum = chksum + weight*(ord(x)-32)
weight = weight + 1
chksum = chksum % 103
chkchar = chr(chksum+32)
label128 = "%s%s%s%s" % ('Ñ', label, chkchar, 'Ó')
plt.text(label_dimensions_x / 2, label_dimensions_y / 2, label128,
ha='center', va='bottom',
fontproperties=prop)
try:
plt.savefig(os.path.join("./", label + '.png'))
except PermissionError:
logging.warning("Close the current label pdf's before running this script.")
return
draw_label('123456789')
draw_label('987654321')
draw_label('Test&Show')