From f7845b9112e13fcbba8261c62e74d56d0535c64b Mon Sep 17 00:00:00 2001 From: Lucas Cimon <925560+Lucas-C@users.noreply.github.com> Date: Fri, 23 May 2025 14:51:31 +0200 Subject: [PATCH] Adding doc on embedding rMQR codes --- CHANGELOG.md | 1 + docs/Barcodes.md | 21 +++++++++++++-------- docs/rmqrcode.png | Bin 0 -> 718 bytes tutorial/qrcode_demo.py | 8 ++++++++ tutorial/rmqrcode_demo.py | 10 ++++++++++ 5 files changed, 32 insertions(+), 8 deletions(-) create mode 100644 docs/rmqrcode.png create mode 100644 tutorial/qrcode_demo.py create mode 100644 tutorial/rmqrcode_demo.py diff --git a/CHANGELOG.md b/CHANGELOG.md index dac7debbe..de98ff372 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ This can also be enabled programmatically with `warnings.simplefilter('default', ## [2.8.4] - Not released yet ### Added * documentation on [internal linking with variable page numbers](https://py-pdf.github.io/fpdf2/Links.html#internal-links) +* documentation on [generating rMQR Codes](https://py-pdf.github.io/fpdf2/Barcodes.html#rmqr-code) ### Fixed * an `IndexError` was raised in some cases when rendering HTML with nested lists - _cf._ [issue #1358](https://github.com/py-pdf/fpdf2/issues/1358) * an `IndexError` was raised in some cases when using [text_columns()](https://py-pdf.github.io/fpdf2/TextColumns.html) with [text shaping enabled](https://py-pdf.github.io/fpdf2/TextShaping.html) - _cf._ [issue #1439](https://github.com/py-pdf/fpdf2/issues/1439) diff --git a/docs/Barcodes.md b/docs/Barcodes.md index 92ad4ed46..6f6396301 100644 --- a/docs/Barcodes.md +++ b/docs/Barcodes.md @@ -62,19 +62,24 @@ Here is an example on how to generate a [QR Code](https://en.wikipedia.org/wiki/ using the [`python-qrcode`](https://github.com/lincolnloop/python-qrcode) lib: ```python -from fpdf import FPDF -import qrcode +{% include "../tutorial/qrcode_demo.py" %} +``` -pdf = FPDF() -pdf.add_page() -img = qrcode.make("fpdf2") -pdf.image(img.get_image(), x=50, y=50) -pdf.output("qrcode.pdf") +Output preview: + +![QCode embedded with fpdf2](qrcode.png) + + +## rMQR Code ## +rMQR Codes, aka Rectangular Micro QR Codes, can be inserted in PDF documents using `fpdf2` and the [`rmqrcode`](https://github.com/OUDON/rmqrcode-python) library: + +```python +{% include "../tutorial/rmqrcode_demo.py" %} ``` Output preview: -![](qrcode.png) +![rMQR code embedded with fpdf2](rmqrcode.png) ## DataMatrix ## diff --git a/docs/rmqrcode.png b/docs/rmqrcode.png new file mode 100644 index 0000000000000000000000000000000000000000..a89785bae6cc75d91db96883bbfaf3a64c0f21a8 GIT binary patch literal 718 zcmeAS@N?(olHy`uVBq!ia0y~yU_H&iz{tnQ3>3*RxZ4P%*aCb)T!Hle|NocXoPU>r zfvMTk#WAGf*4x{LlO8$num%LO@L4wXAG-J;L#9<(Kq#O>b!(#9-K6O^m&U2D==r#( zug>#b=hOPw=ML@^fd2-+bdSx_-~IaAzQ{)fv(87}+thO--7<8i%=hO%jqYyyuI2w( zbXyKaDe2t{OgD+T)#cN&0f>UgdJ}y^EV-mt}u>R-{_H z)BWP~j{+q?@MZpz``XTaZ+*|6m=~d}x%2X*)a)YZ*KU*NO$<4)OIdEUl4eqK9|-&t z+S_Ds+UN3_n^UFyR3IF*|^KQ>iPpdumg-={!C9Uj&HA6 zeDL(?-aW@Feyw|6vvc8_-^U)T(|fOHyXLi+!TiAU)(aMczl7{C?QiS; z?V^_~a+5P^@rf6E-oEI~&!2a1+OiiQAn*FWY|p|=UoJlQ`t|T*nZu7iEeLOkn{Ryl zx%0QH4@yfRAzhz%)n()P%cbA1rR(-RHoalxYO_Aw{Mek2QX9=GT;B_q8}9#_!e#{o zztS&O$5gzTEGgR}I=i?$fAQ+wYu@kv#q%(^crp7LW@*ud$*+1$&fjQfeiJxea}U-g%Mfo%_;($DT4z=X-*>FVdQ&MBb@0HkMZUH||9 literal 0 HcmV?d00001 diff --git a/tutorial/qrcode_demo.py b/tutorial/qrcode_demo.py new file mode 100644 index 000000000..d81c26869 --- /dev/null +++ b/tutorial/qrcode_demo.py @@ -0,0 +1,8 @@ +from fpdf import FPDF +import qrcode + +pdf = FPDF() +pdf.add_page() +img = qrcode.make("fpdf2") +pdf.image(img.get_image(), x=50, y=50) +pdf.output("qrcode.pdf") diff --git a/tutorial/rmqrcode_demo.py b/tutorial/rmqrcode_demo.py new file mode 100644 index 000000000..9649dad9e --- /dev/null +++ b/tutorial/rmqrcode_demo.py @@ -0,0 +1,10 @@ +from fpdf import FPDF +from rmqrcode import QRImage, rMQR + +qr = rMQR.fit("https://py-pdf.github.io/fpdf2/") +qrimg = QRImage(qr, module_size=1) + +pdf = FPDF() +pdf.add_page() +pdf.image(qrimg._img, w=100, x="CENTER") +pdf.output("rmqrcode.pdf")