[reportlab-users] Performance Issue generating multiple QR codes

Andy Robinson andy at reportlab.com
Thu Sep 18 02:27:25 EDT 2014


That's interesting.  We will try to do a little profiling at some
point, although not sure we will have time this week, and take a look
at how the other package does it.

- Andy


On 17 September 2014 20:18, Thomas Kremmel <thomasspin at gmail.com> wrote:
> ah yes - and the bottleneck was not the qr code data generation, but
> reportlab printing the qr code. it seems as it is quite a challenge for
> reportlab to render the qr code when using QrCodeWidget. But rending .pngs
> is super fast! Thus I would recommend rendering QR code images.
>
> Best regards,
> Thomas
>
> 2014-09-17 21:15 GMT+02:00 Thomas Kremmel <thomasspin at gmail.com>:
>>
>> > Seriously?  You have a QR block that covers 40 square inches?  Will QR
>> > scanners read that?
>>
>> Yeah, they can read it quite easily.
>>
>>
>> For the record. I switched to generating the QR data as a .png and
>> rendering the resulting .png into the .pdf. Brings down the 20 seconds to 2.
>> :)
>>
>> Here is the code, using https://pypi.python.org/pypi/qrcode instead of the
>> reportlab QrCodeWidget .
>>
>> qr = qrcode.QRCode(
>>             version=1,
>>             error_correction=qrcode.constants.ERROR_CORRECT_L,
>>             box_size=10,
>>             border=4,
>>         )
>>         qr.add_data(qr_code_data)
>>         qr.make(fit=True)
>>         qr_img = qr.make_image()
>>
>>         # create a byte stream
>>         output = io.BytesIO()
>>         # put image data into byte stream
>>         qr_img.save(output)
>>         # set byte stream to first read position
>>         output.seek(0)
>>         # create reportlab image with byte stream
>>         rl_img = Image(output, width=10*cm, height=10*cm)
>>
>>         self.pdf.img(rl_img)
>>
>> 2014-09-17 19:43 GMT+02:00 Tim Roberts <timr at probo.com>:
>>>
>>> Thomas Kremmel wrote:
>>> > Hello,
>>> >
>>> > I'm using Reportlab to generate a pdf with 10 pages. I print on each
>>> > page a QR code, which is about half the size of the A4 page.
>>>
>>> Seriously?  You have a QR block that covers 40 square inches?  Will QR
>>> scanners read that?
>>>
>>>
>>> > The generation of the .pdf takes me about 20 seconds.
>>> > When I generate the .pdf without the QR codes the .pdf is generated
>>> > immediately. Thus it is obvious that the pdf generation of the QR
>>> > codes consumes the most time.
>>> >
>>> > Any idea what I could do here to bring this down to an user acceptable
>>> > time - say 2 seconds.
>>>
>>> Generating a QR code is computationally expensive.  There's no two ways
>>> about it.  It's a recursive algorithm with lots of mathematics.  If this
>>> is a problem for you, you could try to rewrite part of the algorithm in
>>> C++, but it would be tricky to integrate that with the Python code.
>>>
>>> --
>>> Tim Roberts, timr at probo.com
>>> Providenza & Boekelheide, Inc.
>>>
>>> _______________________________________________
>>> reportlab-users mailing list
>>> reportlab-users at lists2.reportlab.com
>>> https://pairlist2.pair.net/mailman/listinfo/reportlab-users
>>
>>
>
>
> _______________________________________________
> reportlab-users mailing list
> reportlab-users at lists2.reportlab.com
> https://pairlist2.pair.net/mailman/listinfo/reportlab-users
>



-- 
Andy Robinson
Managing Director
ReportLab Europe Ltd.
Thornton House, Thornton Road, Wimbledon, London SW19 4NG, UK
Tel +44-20-8405-6420


More information about the reportlab-users mailing list