{ "info": { "author": "Claude Paroz", "author_email": "claude@2xlibre.net", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3" ], "description": ".. image:: https://travis-ci.com/claudep/swiss-qr-bill.svg?branch=master\n :target: https://travis-ci.com/claudep/swiss-qr-bill\n.. image:: https://img.shields.io/pypi/v/qrbill.svg\n :target: https://pypi.python.org/pypi/qrbill/\n\nPython library to generate Swiss QR-bills\n=========================================\n\nFrom 2020, Swiss payment slips will progressively be converted to the\nQR-bill format.\nSpecifications can be found on https://www.paymentstandards.ch/\n\nThis library is aimed to produce properly-formatted QR-bills as SVG files\neither from command line input or by using the ``QRBill`` class.\n\nInstallation\n============\n\nYou can easily install this library with::\n\n $ pip install qrbill\n\nCommand line usage example\n==========================\n\nMinimal::\n\n $ qrbill --account \"CH5800791123000889012\" --creditor-name \"John Doe\"\n --creditor-postalcode 2501 --creditor-city \"Biel\"\n\nMore complete::\n\n $ qrbill --account \"CH44 3199 9123 0008 8901 2\" --reference-number \"210000000003139471430009017\"\n --creditor-name \"Robert Schneider AG\" --creditor-street \"Rue du Lac 1268\"\n --creditor-postalcode \"2501\" --creditor-city \"Biel\"\n --additional-information \"Bill No. 3139 for garden work and disposal of cuttings.\"\n --debtor-name \"Pia Rutschmann\" --debtor-street \"Marktgasse 28\" --debtor-postalcode \"9400\"\n --debtor-city \"Rorschach\" --due-date \"2019-10-31\" --language \"de\"\n\nFor usage::\n\n $ qrbill -h\n\nIf no `--output` SVG file path is specified, the SVG file will be named after\nthe account and the current date/time and written in the current directory.\n\nNote that if you don't like the automatic line wrapping in the human-readable\npart of some address, you can replace a space by a newline sequence in the\ncreditor or debtor name, line1, line2, or street to force a line break in the\nprinted addresses.\n(e.g. `--creditor-street \"Rue des Quatorze Contours du Chemin\\ndu Creux du Van\"`)\nThe data encoded in the QR bill will *not* have the newline character. It will\nbe replaced by a regular space.\n\nPython usage example\n====================\n\n::\n\n >>> from qrbill import QRBill\n >>> my_bill = QRBill(\n account='CH5800791123000889012',\n creditor={\n 'name': 'Jane', 'pcode': '1000', 'city': 'Lausanne', 'country': 'CH',\n },\n amount='22.45',\n )\n >>> bill.as_svg('/tmp/my_bill.svg')\n\nOutputting as PDF or bitmap\n===========================\n\nIf you want to produce a PDF version of the resulting bill, we suggest using the\n`svglib ` library. It can be used on the\ncommand line with the `svg2pdf` script, or directly from Python::\n\n >>> import tempfile\n >>> from qrbill import QRBill\n >>> from svglib.svglib import svg2rlg\n >>> from reportlab.graphics import renderPDF\n\n >>> my_bill = QRBill(\n account='CH5800791123000889012',\n creditor={\n 'name': 'Jane', 'pcode': '1000', 'city': 'Lausanne', 'country': 'CH',\n },\n amount='22.45',\n )\n >>> with tempfile.TemporaryFile(encoding='utf-8', mode='r+') as temp:\n >>> my_bill.as_svg(temp)\n >>> temp.seek(0)\n >>> drawing = svg2rlg(temp)\n >>> renderPDF.drawToFile(drawing, \"file.pdf\")\n\nor to produce a bitmap image output::\n\n >>> from reportlab.graphics import renderPM\n >>> dpi = 300\n >>> drawing.scale(dpi/72, dpi/72)\n >>> renderPM.drawToFile(drawing, \"file.png\", fmt='PNG', dpi=dpi)\n\nRunning tests\n=============\n\nYou can run tests either by executing::\n\n $ python tests/test_qrbill.py\n\nor::\n\n $ python setup.py test\n\n\nSponsors\n========\n\n.. image:: https://seantis.ch/static/img/logo.svg\n :width: 150\n :target: https://seantis.ch/\n\n.. -*- mode: rst -*-\n\nChangeLog\n=========\n\n0.8.1 (2022-05-10)\n------------------\n- Fixed a regression where the currency was not visible in the payment part\n (#81).\n\n0.8.0 (2022-04-13)\n------------------\n- Replaced ``##`` with ``//`` as separator in additional informations (#75).\n- Print scissors symbol on horizontal separation line when not in full page.\n WARNING: the resulting bill is 1 millimiter higher to be able to show the\n entire symbol (#65).\n- Renamed ``--extra-infos`` command line parameter to ``--additional-information``\n and renamed ``extra_infos`` and ``ref_number`` ``QRBill.__init__`` arguments\n to ``additional_information`` and ``reference_number``, respectively.\n The old arguments are still accepted but raise a deprecation warning (#68).\n\n0.7.1 (2022-03-07)\n------------------\n- Fixed bad position of amount rect on receipt part (#74).\n- Increased title font size and section spacing on payment part.\n\n0.7.0 (2021-12-18)\n------------------\n- License changed from GPL to MIT (#72).\n- Prevented separation line filled on some browsers.\n- Scissors symbol is now an SVG path (#46).\n\n0.6.1 (2021-05-01)\n------------------\n- Added ``--version`` command-line option.\n- QR-code size is now more in line with the specs, including the embedded Swiss\n cross (#58, #59).\n- Widen space at the right of the QR-code (#57).\n- A new ``--font-factor`` command-line option allows to scale the font if the\n actual size does not fit your needs (#55).\n\n0.6.0 (2021-02-11)\n------------------\n- Added the possibility to include newline sequences in name, street, line1, or\n line2 part of addresses to improve printed line wrapping of long lines.\n- Moved QR-code and amount section to better comply with the style guide (#52).\n- Dropped support for EOL Python 3.5 and confirmed support for Python 3.9.\n\n0.5.3 (2021-01-25)\n------------------\n- Enforced black as swiss cross background color.\n- Allowed output with extension other than .svg (warning instead of error).\n- Split long address lines to fit in available space (#48).\n\n0.5.2 (2020-11-17)\n------------------\n\n- Final creditor is only for future use, it was removed from command line\n parameters.\n- Capitalized Helvetica font name in code (#43).\n- The top line was printed a bit lower to be more visible (#42).\n\n0.5.1 (2020-08-19)\n------------------\n\n- Fix for missing country field in QR code when using CombinedAddress (#31).\n- Added support for printing bill to full A4 format, using the ``full_page``\n parameter of ``QRBill.as_svg()`` or the CLI argument ``--full-page``.\n- The vertical separation line between receipt and main part can be omitted\n through the ``--no-payment-line`` CLI argument.\n- A new ``--text`` command line parameter allows for a raw text output.\n- Support for Alternate procedures lines was added (``--alt-procs`` argument,\n #40).\n\n0.5 (2020-06-24)\n----------------\n\n- ``QRBill.as_svg()`` accepts now file-like objects.\n- Added support for combined address format.\n- A top separation line is now printed by default. It can be deactivated\n through the ``top_line`` boolean parameter of ``QRBill.__init__()``.\n- The error correction level of the QR code conforms now to the spec (M).\n\n0.4 (2020-02-24)\n----------------\n\nChanges were not logged until version 0.4. Development stage was still alpha.", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/claudep/swiss-qr-bill/", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "qrbill", "package_url": "https://pypi.org/project/qrbill/", "platform": null, "project_url": "https://pypi.org/project/qrbill/", "project_urls": { "Homepage": "https://github.com/claudep/swiss-qr-bill/" }, "release_url": "https://pypi.org/project/qrbill/0.8.1/", "requires_dist": null, "requires_python": "", "summary": "A library to generate Swiss QR-bill payment slips", "version": "0.8.1", "yanked": false, "yanked_reason": null }, "last_serial": 13769772, "releases": { "0.3": [ { "comment_text": "", "digests": { "md5": "da8d1c03776839018bedb708e3e85b78", "sha256": "c0db484bee0fcdfb1f532c046f74a98442c76edbf5d253eeebbe5cbb6e455627" }, "downloads": -1, "filename": "qrbill-0.3.tar.gz", "has_sig": true, "md5_digest": "da8d1c03776839018bedb708e3e85b78", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7271, "upload_time": "2019-10-29T17:20:32", "upload_time_iso_8601": "2019-10-29T17:20:32.777796Z", "url": "https://files.pythonhosted.org/packages/7a/d8/c5246dc8b6e4c025a593edd1482578937d2cfa64099db41be26663072ad3/qrbill-0.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.4": [ { "comment_text": "", "digests": { "md5": "841c2c7f327fd75d52d2bc2836d903b2", "sha256": "7d1ed89cdb60d844b7edfe58c3a714e7f1b7884c2161eaf38b323ae26eecd15b" }, "downloads": -1, "filename": "qrbill-0.4.tar.gz", "has_sig": true, "md5_digest": "841c2c7f327fd75d52d2bc2836d903b2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11520, "upload_time": "2020-02-24T17:51:00", "upload_time_iso_8601": "2020-02-24T17:51:00.312351Z", "url": "https://files.pythonhosted.org/packages/34/6d/9595caee9529a4841d521fa4701912c2eac87f6824ab03fb262677363362/qrbill-0.4.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5": [ { "comment_text": "", "digests": { "md5": "69365da8889164c7a65c28801bdb3fa2", "sha256": "9ac3a68ed6eca567d4aead631451ab35e6590b667e9f81ab74e929adf4bc02af" }, "downloads": -1, "filename": "qrbill-0.5.tar.gz", "has_sig": true, "md5_digest": "69365da8889164c7a65c28801bdb3fa2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 13281, "upload_time": "2020-06-24T15:32:15", "upload_time_iso_8601": "2020-06-24T15:32:15.862049Z", "url": "https://files.pythonhosted.org/packages/d6/54/8997ebb7425cdbab592d93600f4e2b3f7bad6a64a932658abf8495e065ba/qrbill-0.5.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "264d4cb62b57652a8a8f9ecd5c49b93f", "sha256": "61cc7ef48e3d443d8ab44bcf17068b2043d16c016e26531b8603e801ba345ca1" }, "downloads": -1, "filename": "qrbill-0.5.1.tar.gz", "has_sig": true, "md5_digest": "264d4cb62b57652a8a8f9ecd5c49b93f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16069, "upload_time": "2020-08-19T14:37:18", "upload_time_iso_8601": "2020-08-19T14:37:18.276742Z", "url": "https://files.pythonhosted.org/packages/bb/1d/59ac722a87539146a3a12536f765c90a75ac0c24884d3d5a673287ebb16d/qrbill-0.5.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "2bc33ce1d5cd2b47a19ae687c368650e", "sha256": "7d94e9763336f39f25610f2e23ded79f5a3f743ebc7337d80e0e6e3c4ba6a210" }, "downloads": -1, "filename": "qrbill-0.5.2.tar.gz", "has_sig": true, "md5_digest": "2bc33ce1d5cd2b47a19ae687c368650e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16652, "upload_time": "2020-11-17T19:37:08", "upload_time_iso_8601": "2020-11-17T19:37:08.530053Z", "url": "https://files.pythonhosted.org/packages/a3/fb/207b419e9127e5ed74061f4a7baa0ec24f645db030f7c1df5e3ecb77a41f/qrbill-0.5.2.tar.gz", "yanked": false, "yanked_reason": null } ], "0.5.3": [ { "comment_text": "", "digests": { "md5": "eaa327d18ad6170edbb959cdad2ec660", "sha256": "c39a89d283e7c2ff19952d8f34084ae8b9bfa8fa36a4125497ba167cda814556" }, "downloads": -1, "filename": "qrbill-0.5.3.tar.gz", "has_sig": true, "md5_digest": "eaa327d18ad6170edbb959cdad2ec660", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17355, "upload_time": "2021-01-25T12:29:50", "upload_time_iso_8601": "2021-01-25T12:29:50.882458Z", "url": "https://files.pythonhosted.org/packages/9c/fe/a45e1fac7d0f5ca48f086925e232c4ab6cd93c7dc033292514e85586f73b/qrbill-0.5.3.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "4e3bed006399bc9efe9514a07499d56d", "sha256": "4269ed177a349f4343d7caa45177d151c383e1ac9e8e52827f3bef6a0c3a0a59" }, "downloads": -1, "filename": "qrbill-0.6.0.tar.gz", "has_sig": true, "md5_digest": "4e3bed006399bc9efe9514a07499d56d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18644, "upload_time": "2021-02-12T07:54:17", "upload_time_iso_8601": "2021-02-12T07:54:17.053125Z", "url": "https://files.pythonhosted.org/packages/46/f8/f3c451037dc61d271da1ea94caec7d124e1765efb3c6eaccd341c9d5740f/qrbill-0.6.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.6.1": [ { "comment_text": "", "digests": { "md5": "d4c1d46c70a2587e47e7aeabf3b6ddd3", "sha256": "674bd85df81dc26f3c2fb711b11906b1879b97f8392dec3d86d0904daaf45e34" }, "downloads": -1, "filename": "qrbill-0.6.1.tar.gz", "has_sig": true, "md5_digest": "d4c1d46c70a2587e47e7aeabf3b6ddd3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 19857, "upload_time": "2021-05-01T07:56:04", "upload_time_iso_8601": "2021-05-01T07:56:04.314672Z", "url": "https://files.pythonhosted.org/packages/99/33/072034ad26d783710e961a9168475a38d4d74c8d321b9f0708332423e2c2/qrbill-0.6.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "36a8a5638e25afcd66bc787cdd25337d", "sha256": "2629bbb382d5195c2e1b524c616212205d9a332f3296facfa8cf1caed307726a" }, "downloads": -1, "filename": "qrbill-0.7.0.tar.gz", "has_sig": true, "md5_digest": "36a8a5638e25afcd66bc787cdd25337d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21137, "upload_time": "2021-12-18T15:00:57", "upload_time_iso_8601": "2021-12-18T15:00:57.041518Z", "url": "https://files.pythonhosted.org/packages/44/a6/e604319e082cc1fba3b9552e0250537c2070895961b0dfd443fe7cc54f76/qrbill-0.7.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.7.1": [ { "comment_text": "", "digests": { "md5": "7a31dba3f3fbcad40635e768810b6c2c", "sha256": "2dad0e8c126e90b966ff5a6c397fa6e981dd49493ee5877592a3168e07c303c3" }, "downloads": -1, "filename": "qrbill-0.7.1.tar.gz", "has_sig": true, "md5_digest": "7a31dba3f3fbcad40635e768810b6c2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21490, "upload_time": "2022-03-07T11:13:53", "upload_time_iso_8601": "2022-03-07T11:13:53.925381Z", "url": "https://files.pythonhosted.org/packages/b5/a6/4ff790e739b4d4f7274e25ab8f472e47bcc5a012d8524204029ffe9c60a4/qrbill-0.7.1.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "39851c38629924b9126264605e612dc0", "sha256": "8564749982bef7b22ae885bd8aeb233d1f52568df8b2192812b6d736f01e0826" }, "downloads": -1, "filename": "qrbill-0.8.0.tar.gz", "has_sig": true, "md5_digest": "39851c38629924b9126264605e612dc0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22225, "upload_time": "2022-04-13T17:01:25", "upload_time_iso_8601": "2022-04-13T17:01:25.628752Z", "url": "https://files.pythonhosted.org/packages/13/20/a4be4d34dff4a98e87506937e58dd8626da618b511031416ce0a32f2514b/qrbill-0.8.0.tar.gz", "yanked": false, "yanked_reason": null } ], "0.8.1": [ { "comment_text": "", "digests": { "md5": "e8bb1fd16c773ed746fa215f56d4fa64", "sha256": "0ce82b732e22734cbd381546edf309e21f3e09aeaa44094845ac27dccad1b29e" }, "downloads": -1, "filename": "qrbill-0.8.1.tar.gz", "has_sig": true, "md5_digest": "e8bb1fd16c773ed746fa215f56d4fa64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22322, "upload_time": "2022-05-10T10:44:18", "upload_time_iso_8601": "2022-05-10T10:44:18.036889Z", "url": "https://files.pythonhosted.org/packages/df/7a/76c1b4aa1ad774aadea9cd08facb52d9baae402c5ae6e972f4151649b5eb/qrbill-0.8.1.tar.gz", "yanked": false, "yanked_reason": null } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "e8bb1fd16c773ed746fa215f56d4fa64", "sha256": "0ce82b732e22734cbd381546edf309e21f3e09aeaa44094845ac27dccad1b29e" }, "downloads": -1, "filename": "qrbill-0.8.1.tar.gz", "has_sig": true, "md5_digest": "e8bb1fd16c773ed746fa215f56d4fa64", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22322, "upload_time": "2022-05-10T10:44:18", "upload_time_iso_8601": "2022-05-10T10:44:18.036889Z", "url": "https://files.pythonhosted.org/packages/df/7a/76c1b4aa1ad774aadea9cd08facb52d9baae402c5ae6e972f4151649b5eb/qrbill-0.8.1.tar.gz", "yanked": false, "yanked_reason": null } ], "vulnerabilities": [] }