Skip to content

ViktorStiskala/python-qrplatba

Repository files navigation

python-qrplatba

Stable Version

Python library for generating QR codes for QR platba.

https://raw.github.com/viktorstiskala/python-qrplatba/gh-pages/example.png

See http://qr-platba.cz/pro-vyvojare/ for more information about the specification (available only in czech).

from qrplatba import QRPlatbaGenerator
from datetime import datetime, timedelta


due = datetime.now() + timedelta(days=14)
generator = QRPlatbaGenerator('123456789/0123', 400.56, x_vs=2034456, message='text', due_date=due)
img = generator.make_image()
img.save('example.svg')

# optional: custom box size and border
img = generator.make_image(box_size=20, border=4)

# optional: get SVG as a string.
# Encoding has to be 'unicode', otherwise it will be encoded as bytes
svg_data = img.to_string(encoding='unicode')

Installation

To install qrplatba, simply:

$ pip install qrplatba

Note on image file formats

This module generates SVG file which is an XML-based vector image format. You can use various libraries and/or utilities to convert it to other vector or bitmap image formats. Below is an example how to use libRSVG to convert SVG images.

libRSVG

libRSVG renders SVG files using cairo and supports many output image formats. It can also be used directly in console with rsvg-convert command.

$ rsvg-convert -f pdf example.svg -o example.pdf

SPAYD format

QR Platba uses SPAYD format (application/x-shortpaymentdescriptor) for encoding information related to bank transfer. In addition to generating QR codes, this library can also generate just the encoded string using the following code:

generator = QRPlatbaGenerator('123456789/0123', 400.56, x_vs=2034456, message='text', due_date=due)
spayd = generator.get_text()

License

This software is licensed under MIT license since version 1.0.0.

Changelog

1.1.1 (24 April 2023)

  • Added compatibility with lxml library. Fixes TypeError when using this library while lxml is installed in the same virtualenv.

1.1.0 (5 April 2023)

  • Dropped support for Python 3.7
  • Added pre-commit, black and ruff for code formatting

1.0.0 (4 April 2023)

Warning: While the API is mostly backwards compatible, the look and size of the generated QR codes has changed.

  • Updated requirements to support the latest qrcode version
  • Added support for custom output sizes using box_size and border parameters
  • Changed legacy setuptools to poetry
  • Dropped support for Python 2.x and <3.7
  • Changed license to MIT
  • Added unit tests