生成瑞士QR-bill付款单据的库
项目描述
Python库,用于生成瑞士QR-bill
从2020年开始,瑞士支付单据将逐步转换为QR-bill格式。规范可以在https://www.paymentstandards.ch/找到
该库旨在生成正确格式的QR-bill作为SVG文件,可以从命令行输入或使用QRBill类。
安装
您可以使用以下命令轻松安装此库
$ pip install qrbill
命令行使用示例
最小化
$ qrbill --account "CH5800791123000889012" --creditor-name "John Doe" --creditor-postalcode 2501 --creditor-city "Biel"
更完整
$ qrbill --account "CH44 3199 9123 0008 8901 2" --reference-number "210000000003139471430009017" --creditor-name "Robert Schneider AG" --creditor-street "Rue du Lac 1268" --creditor-postalcode "2501" --creditor-city "Biel" --additional-information "Bill No. 3139 for garden work and disposal of cuttings." --debtor-name "Pia Rutschmann" --debtor-street "Marktgasse 28" --debtor-postalcode "9400" --debtor-city "Rorschach" --language "de"
使用方法
$ qrbill -h
如果未指定–output SVG文件路径,SVG文件将使用账户名称和当前日期/时间命名,并写入当前目录。
请注意,如果您不喜欢某些地址的读数部分自动换行,您可以在债权人或债务人的名称、行1、行2或街道中用换行序列替换空格,以强制在打印的地址中换行。(例如:–creditor-street “Rue des Quatorze Contours du Cheminndu Creux du Van”)二维码账单中编码的数据不会包含换行字符。它将被常规空格替换。
Python使用示例
>>> from qrbill import QRBill >>> my_bill = QRBill( account='CH5800791123000889012', creditor={ 'name': 'Jane', 'pcode': '1000', 'city': 'Lausanne', 'country': 'CH', }, amount='22.45', ) >>> my_bill.as_svg('/tmp/my_bill.svg')
输出PDF或位图
如果您想生成结果的账单的PDF版本,我们建议使用svglib <https://pypi.ac.cn/project/svglib/>库。它可以用svg2pdf脚本在命令行上使用,或直接从Python使用
>>> import tempfile >>> from qrbill import QRBill >>> from svglib.svglib import svg2rlg >>> from reportlab.graphics import renderPDF >>> my_bill = QRBill( account='CH5800791123000889012', creditor={ 'name': 'Jane', 'pcode': '1000', 'city': 'Lausanne', 'country': 'CH', }, amount='22.45', ) >>> with tempfile.TemporaryFile(encoding='utf-8', mode='r+') as temp: >>> my_bill.as_svg(temp) >>> temp.seek(0) >>> drawing = svg2rlg(temp) >>> renderPDF.drawToFile(drawing, "file.pdf")
或生成位图图像输出
>>> from reportlab.graphics import renderPM >>> dpi = 300 >>> drawing.scale(dpi/72, dpi/72) >>> renderPM.drawToFile(drawing, "file.png", fmt='PNG', dpi=dpi)
运行测试
您可以通过以下方式运行测试
$ python tests/test_qrbill.py
或
$ python setup.py test
赞助商
变更日志
1.1.0 (2023-12-16)
除了Helvetica外,还添加Arial字体名称,以在某些系统上更好地进行字体回退。
停止支持Python < 3.8,并添加对Python 3.11和3.12的测试。
1.0.0 (2022-09-21)
紧急更新:删除了due-date命令行参数和due_date QRBill初始化关键字参数,因为这个字段已不在最新的规范中(#84)。
处理附加信息中的行中断,使其在打印版本中显示,但从中移除QR数据(#86)。
通过在svgwrite中禁用调试模式提高了性能(#82)。
0.8.1 (2022-05-10)
修复了一个回归,其中货币在支付部分不可见(#81)。
0.8.0 (2022-04-13)
在附加信息中将##替换为//作为分隔符(#75)。
当不是满页时,在水平分隔线上打印剪刀符号。警告:生成的账单高1毫米,以便能够显示整个符号(#65)。
将--extra-infos命令行参数重命名为--additional-information,并将extra_infos和ref_number QRBill.__init__参数分别重命名为additional_information和reference_number。旧参数仍然被接受,但会引发弃用警告(#68)。
0.7.1 (2022-03-07)
修复了收据部分金额矩形的位置错误(#74)。
提高了支付部分的标题字体大小和部分间距。
0.7.0 (2021-12-18)
许可证已从GPL更改为MIT(#72)。
阻止了某些浏览器上分隔线的填充。
剪刀符号现在是SVG路径(#46)。
0.6.1 (2021-05-01)
添加了--version命令行选项。
QR码的大小现在更符合规范,包括嵌入式瑞士十字(#58, #59)。
拓宽QR码右侧的空间(#57)。
新的--font-factor命令行选项允许根据实际大小缩放字体(#55)。
0.6.0 (2021-02-11)
在地址的名称、街道、行1或行2部分添加了包括换行序列的可能性,以改进长行的打印换行。
将QR码和金额部分移至更符合样式指南的位置(#52)。
取消了对EOL Python 3.5的支持,并确认了对Python 3.9的支持。
0.5.3 (2021-01-25)
强制将黑色作为瑞士十字的背景颜色。
允许输出扩展名不是.svg的文件(警告而不是错误)。
将长地址行分割以适应可用空间(#48)。
0.5.2 (2020-11-17)
最终债权人仅用于将来使用,已从命令行参数中删除。
在代码中将Helvetica字体名称改为大写(#43)。
为了更明显,第一行打印得略低(#42)。
0.5.1 (2020-08-19)
修复了在使用CombinedAddress时QR码中缺少国家字段的问题(#31)。
添加了打印全A4格式的账单的支持,使用QRBill.as_svg()的full_page参数或CLI参数--full-page。
可以通过--no-payment-line CLI参数省略收据和主要部分之间的垂直分隔线。
新的--text命令行参数允许原始文本输出。
添加了对交替程序行的支持(--alt-procs参数,#40)。
0.5 (2020-06-24)
QRBill.as_svg()现在接受文件对象。
添加了对组合地址格式的支持。
现在默认打印顶部分隔线。可以通过QRBill.__init__()的top_line布尔参数禁用。
QR码的错误纠正级别现在符合规范(M)。
0.4 (2020-02-24)
版本0.4之前没有记录变更。开发阶段仍处于alpha阶段。
项目详情
qrbill-1.1.0.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ea2b09f48c1f1f8144358a67b1e5c60d91a7f7c50f5446005fd2d34e6c1a48ce |
|
MD5 | d33114445bd177d962a91f39e9916e83 |
|
BLAKE2b-256 | 53de0d67f7d93331fd28429b5dfa22b129b05383e6e33427108c1bbe75ece733 |