gpt4 book ai didi

python - Reportlab 的 Code128 条码作为 HTML 图像标签,使用 Python 中的数据 URI 方案

转载 作者:太空狗 更新时间:2023-10-29 20:39:54 26 4
gpt4 key购买 nike

我需要使用 Python/Django 创建一个 Code128 条形码,它必须嵌入到 HTML 文档中。

我不想在磁盘上创建任何临时(或缓存)文件。这就是为什么我想将它们嵌入为数据 URI 方案。

结果必须是这样的:

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUA
AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot">

你能给我推荐一个简单的方法吗?

现在我使用 ReportLab 创建这样的条形码并将它们嵌入到 PDF 文件中,但我不知道如何将它们导出为数据 URI 方案。如果这是执行此操作的推荐方法。

最佳答案

这是我自己的解决方案:

from base64 import b64encode
from reportlab.lib import units
from reportlab.graphics import renderPM
from reportlab.graphics.barcode import createBarcodeDrawing
from reportlab.graphics.shapes import Drawing

def get_barcode(value, width, barWidth = 0.05 * units.inch, fontSize = 30, humanReadable = True):

barcode = createBarcodeDrawing('Code128', value = value, barWidth = barWidth, fontSize = fontSize, humanReadable = humanReadable)

drawing_width = width
barcode_scale = drawing_width / barcode.width
drawing_height = barcode.height * barcode_scale

drawing = Drawing(drawing_width, drawing_height)
drawing.scale(barcode_scale, barcode_scale)
drawing.add(barcode, name='barcode')

return drawing

def get_image():

barcode = get_barcode(value = '01234567890', width = 600)
data = b64encode(renderPM.drawToString(barcode, fmt = 'PNG'))
print '<img src="data:image/png;base64,{0}">'.format(data)

你还可以将条形码旋转 90°:

def get_barcode_rotated(value, width, barWidth = 0.05 * units.inch, fontSize = 30, humanReadable = True):

barcode = createBarcodeDrawing('Code128', value = value, barWidth = barWidth, fontSize = fontSize, humanReadable = humanReadable)

drawing_width = width
barcode_scale = drawing_width / barcode.width
drawing_height = barcode.height * barcode_scale

drawing = Drawing(drawing_width, drawing_height)
drawing.scale(barcode_scale, barcode_scale)
drawing.add(barcode, name='barcode')

drawing_rotated = Drawing(drawing_height, drawing_width)
drawing_rotated.rotate(90)
drawing_rotated.translate(0, -drawing_height)
drawing_rotated.add(drawing, name='drawing')

return drawing_rotated

这是一个示例结果:

http://pastehtml.com/view/ci7qei4k1.html

关于python - Reportlab 的 Code128 条码作为 HTML 图像标签,使用 Python 中的数据 URI 方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13345284/

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