Metadata-Version: 2.1
Name: libscanner-dmgen
Version: 1.0.0
Summary: Генератор DataMatrix ECC 200 с проверкой GS1 и «Честного знака» — DataMatrix generator with GS1 validation
Keywords: datamatrix,data-matrix,barcode,generator,gs1,ecc200,chestny-znak,marking,png
License: Proprietary
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: Microsoft :: Windows
Classifier: Operating System :: POSIX :: Linux
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Multimedia :: Graphics
Classifier: Topic :: Printing
Classifier: Natural Language :: Russian
Project-URL: Homepage, https://libscanner.com
Project-URL: Documentation, https://libscanner.com/docs/datamatrix-generator/?lang=python
Project-URL: Source, https://github.com/libscanner/datamatrix-generator
Requires-Python: >=3.8
Description-Content-Type: text/markdown

# dmgen для Python

```sh
pip install libscanner-dmgen
```

Пакет импортируется как `dmgen`. Платформы: Windows x64, Linux x86-64, ARM64
и ARMv7 (glibc 2.36 и новее: Debian 12, Ubuntu 23.04+, Raspberry Pi OS
Bookworm).

> **English.** A DataMatrix ECC 200 generator for Python with GS1 and
> Chestny Znak (Russian product marking) validation: PNG/JPEG output, module
> matrix, readable error reports. Install with `pip install libscanner-dmgen`,
> import as `dmgen`. 30-day free trial, then a license from
> https://libscanner.com/en/.

Обёртка на `ctypes` над плоским C ABI библиотеки dmgen (`dmgen_c.dll` /
`libdmgen_c.so`). Компилируемого расширения нет: одно колесо на платформу
работает с любым Python 3.8+.

Колесо поставки (раздел «Загрузки» личного кабинета) несёт и собранную
утилиту-оболочку: после `pip install libscanner-dmgen` в окружении есть команда
`dmgen` (и `python -m dmgen`) — `dmgen "текст" -o код.png`,
`dmgen --license status`. Файл ключа `dmgen.key` — в `dmgen/_lib/`, общий для
утилиты и библиотеки.

```python
import dmgen

png = dmgen.make_image("0104601234567893215Abc12Xyz!-\x1d93dGVz", gs1="cz")
dmgen.save("(01)04601234567893(21)5Abc12Xyz!-(93)dGVz", "code.png", gs1="cz", module_px=10)
jpg = dmgen.make_image("Hello", fmt="jpeg", quality=100, side=26)

rep = dmgen.validate_gs1("(01)04601234567894(21)ABC")
rep.ok          # False
rep.issues[0]   # Issue(code=…, warning=False, message='AI (01) GTIN: контрольная цифра 4, должна быть 3', …)

dmgen.encode_matrix("ABC")   # [[1, 0, 1, …], …] — 1 тёмный модуль
dmgen.SIZES                  # (10, 12, 14, …, 144)
```

Строка `str` кодируется в байты UTF-8; `bytes` передаются как есть. Ошибки —
исключения `dmgen.Gs1Error` (с отчётом `.report`), `dmgen.EncodeError`,
`dmgen.UnlicensedError` (нет ни пробного периода, ни лицензии),
`dmgen.DmgenError` (общий предок).

Лицензия — `dmgen.license`: `status()`, `activate(key)`, `refresh()`,
`deactivate()`, `write_activation_request(path)`, `import_license_file(path)`,
`fingerprint()`; ответы — dict из того же JSON, что у `dmgen --license ... --json`.
Проще всего положить файл `dmgen.key` с ключом рядом с `dmgen_c.dll` /
`libdmgen_c.so` в пакете (`dmgen/_lib/`): библиотека активирует его сама.

Библиотека грузится только из `dmgen/_lib/` пакета. Переменная `DMGEN_LIB`
(абсолютный путь) — для пакета из исходников, где `_lib` пуст, и колесо не
переопределяет; системный поиск (PATH, каталоги библиотек) не используется.

## Документация и лицензия

Документация: https://libscanner.com/docs/datamatrix-generator/?lang=python

Пробный период — 30 дней с первого запуска на машине, без регистрации и без
сети. Без интернета: личный кабинет https://libscanner.com → Лицензии → «Активация без
интернета».
