docxtpl, точнее с объектом InlineImage
есть функция, которая принимает base64, и возвращает объект типа InlineImage
def b64_to_inlineimage(context, value):
b64str = value.split(',', 1)[1]
decoded = base64.b64decode(b64str)
tmp_f = NamedTemporaryFile(mode='wb', dir=context['tmpdir'], delete=False)
tmp_f.write(decoded)
tmp_f.seek(0)
return InlineImage(context['tpl'], tmp_f.name, width=Mm(40))
основная функция, которая принимает данные:
def format_document(request_context, temp_name):
tpl = docxtpl.DocxTemplate(f'/home/tester/PycharmProjects/doc/dock_templates/{temp_name}.docx')
context = request_context
photo = b64_to_inlineimage(context, "photo")
context["photo"] = photo
tpl.render(context)
tpl.save(f"/home/tester/PycharmProjects/doc/result_files/{request_context['file_name']}.docx")
получается context это словрь со значениями, одно из которых photo
что нужно здесь закидывать в качестве value?
день добрый! чет не пойму, а зачем здесь: photo = b64_to_inlineimage(context, "photo") вторым аргументом передается текст? по смыслу там должен быть закодированный в base64 набор байт, который затем раскодируется в b64_to_inlineimage в изображение
Обсуждают сегодня