93b28b1ea24951f35d7aa7b5fe9d10c4087a9ecf
- Created .gitignore to exclude unnecessary files and directories. - Implemented build_pdf.py for generating PDF labels from Excel data, including barcode rendering. - Added read_image.py for extracting DataMatrix codes from images using zxing-cpp. - Introduced render_eps.py for converting EPS images to PNG format with Ghostscript. - Updated README.md with project overview, features, installation instructions, and usage guidelines. - Included requirements.txt for dependency management. - Added resources for logos and sample Excel template. - Compressed Ghostscript binaries into Ghostscript.zip for easy integration.
LabelExtractor (Честный ЗНАК / CRPT)
Утилита для автоматизированного извлечения кодов маркировки (DataMatrix) и массовой генерации готовых к печати PDF-этикеток (формат 58x40 мм) на основе данных из Excel-шаблона. Решение оптимизировано для работы с системой «Честный ЗНАК» и создания этикеток для термопринтеров.
Ключевые возможности
- Распознавание DataMatrix: Точное чтение кодов из изображений с помощью
zxing-cppс сохранением непечатаемых спецсимволов GS1 (включая FNC1 / ASCII 29) посредством кодирования в Base64. - Интеграция с Excel: Парсинг атрибутов товара (GTIN, EAN, Описание, Артикул, Цвет, Размер, Организация) из Excel-шаблонов с использованием
pandas. Чтение строго по позициям колонок обеспечивает защиту от изменения заголовков. - PDF Генерация: Автоматическая сборка промышленных макетов этикеток (включая логотипы EAC, Честный ЗНАК, штрихкоды Code128 и DataMatrix) с помощью
reportlab. - Умное форматирование текста: Автоматический перенос строк (Word Wrap), адаптивное уменьшение размера шрифта и умное усечение текста многоточием (при выходе за границы AABB).
- Портативность: Использование встроенной версии Ghostscript (
gswin32c) для рендеринга EPS и штрихкодов без необходимости сложной системной настройки.
Требования и установка
Проект написан на Python 3. Установите необходимые зависимости из requirements.txt:
pip install -r requirements.txt
Зависимости:
pillow— работа с изображениями.zxing-cpp— быстрое и надежное чтение штрихкодов.reportlab— генерация векторных PDF-файлов.pandas&openpyxl— чтение и обработка Excel-таблиц.treepoem— генерация штрихкодов (Code128, DataMatrix).
Примечание: Убедитесь, что архив Ghostscript.zip распакован в папку Ghostscript в корне проекта для корректной работы treepoem и обработки EPS-файлов.
Структура проекта
build_pdf.py— Главный модуль и оркестратор бизнес-логики. Считывает базу данных Excel, группирует входные коды по GTIN, рендерит штрихкоды и генерирует готовые PDF-документы.read_image.py— Утилита для извлечения байтов DataMatrix из картинок и перевода их в безопасный Base64 формат.render_eps.py— Скрипт-конвертер EPS изображений в PNG с использованием портативного Ghostscript.Resources/— Папка с графическими ассетами (логотипы) и исходным файломШАблон для загрузки этикеток.xlsx.data/— Рабочая директория (содержит входные коды, картинки и генерируемые PDF в папкеoutput_pdfs).
Использование
- Подготовьте описания ваших товаров в файле
Resources/ШАблон для загрузки этикеток.xlsx. - Подготовьте список КМ (кодов маркировки), предварительно закодировав сырые байты DataMatrix в формат Base64. (Для получения Base64 из изображений можно использовать скрипт
read_image.py). - Запустите процесс генерации PDF:
python build_pdf.py
Готовые многостраничные PDF-файлы (сгруппированные по GTIN) будут сохранены в директории data/output_pdfs/.
Архитектура решения
Код разбит на несколько логических слоев:
- Domain Layer: Описание структур данных (
LabelData). - Data & Asset Layer: Функции генерации и трансформации изображений и штрихкодов (
render_code128,create_datamatrix_in_memory). Изображения генерируются без сглаживания (NEAREST) для идеальной печати на термопринтерах. - Presentation Layer: Низкоуровневая отрисовка PDF-холста через
reportlab, позиционирование блоков и алгоритмы подгонки текста (draw_label_page,place_text). - Business Logic Layer: Оркестрация батчевой обработки данных (
process_batch). Чтение тяжелых файлов происходит один раз для экономии ресурсов I/O диска.
Description
Languages
Python
88.6%
PowerShell
11.4%