跳转到主要内容

生成瑞士QR-bill付款单据的库

项目描述

https://travis-ci.cn/claudep/swiss-qr-bill.svg?branch=master https://img.shields.io/pypi/v/qrbill.svg

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

赞助商

https://seantis.ch/static/img/logo.svg

变更日志

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_infosref_number QRBill.__init__参数分别重命名为additional_informationreference_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 (23.0 kB 查看哈希值)

上传时间 源代码

支持者

AWSAWS 云计算和安全赞助商DatadogDatadog 监控FastlyFastly CDNGoogleGoogle 下载分析MicrosoftMicrosoft PSF赞助商PingdomPingdom 监控SentrySentry 错误日志StatusPageStatusPage 状态页面