gpt4 book ai didi

python - 将 QrCodeWidget(或 PlotArea)与鸭嘴兽一起使用

转载 作者:太空宇宙 更新时间:2023-11-04 09:07:37 25 4
gpt4 key购买 nike

我的 django 应用程序正在使用多帧 reportlab pdf 报告,我想添加一些条形码/二维码。

我遇到的问题是我添加到布局中的每个对象都必须是 Flowable。所以问题是将 PlotArea(QrCodeWidget 的母类)转换为 Flowable。

如果我们在这里有答案,如果我们将 QrCodeWidget 添加为

,我们可以获得错误消息
AttributeError: QrCodeWidget instance has no attribute 'getKeepWithNext'

最佳答案

好吧,我自己做了一个Flowable,比我教的还简单。

使用这个 API 就像在 Canvas 上做一样简单。

from reportlab.platypus import Flowable
from reportlab.graphics.barcode import qr
from reportlab.graphics import renderPDF
from reportlab.graphics.shapes import Drawing

class QRFlowable(Flowable):
# usage :
# story.append(QRFlowable("http://google.fr"))
def __init__(self, qr_value):
# init and store rendering value
Flowable.__init__(self)
self.qr_value = qr_value

def wrap(self, availWidth, availHeight):
# optionnal, here I ask for the biggest square available
self.width = self.height = min(availWidth, availHeight)
return self.width, self.height

def draw(self):
# here standard and documented QrCodeWidget usage on
# Flowable canva
qr_code = qr.QrCodeWidget(self.qr_value)
bounds = qr_code.getBounds()
qr_width = bounds[2] - bounds[0]
qr_height = bounds[3] - bounds[1]
w = float(self.width)
d = Drawing(w, w, transform=[w/qr_width, 0, 0, w/qr_height, 0, 0])
d.add(qr_code)
renderPDF.draw(d, self.canv, 0, 0)

关于python - 将 QrCodeWidget(或 PlotArea)与鸭嘴兽一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18569682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com