【发布时间】:2021-04-26 19:48:53
【问题描述】:
我创建了一组 pdf 文件并希望将它们添加到 zip 存档中。一切似乎都很好,但是当我下载我的 zip 文件时它无法打开。
所以我用create_pdf函数创建了pdf
def create_pdf(child):
buffer = io.BytesIO()
canvas = Canvas(buffer, pagesize=A4)
p = staticfiles_storage.path('TNR.ttf')
pdfmetrics.registerFont(TTFont('TNR', p))
canvas.setFont('TNR', 14)
t = canvas.beginText(-1 * cm, 29.7 * cm - 1 * cm)
t.textLines(create_text(child), trim=0)
canvas.drawText(t)
canvas.save()
pdf = buffer.getvalue()
return pdf
然后我创建 zip 文件并将其打包以响应
def create_zip(pdfs):
mem_zip = io.BytesIO()
i = 0
with zipfile.ZipFile(mem_zip, mode='w', compression=zipfile.ZIP_DEFLATED)\
as zf:
for f in pdfs:
i += 1
zf.writestr(f'{str(i)}.pdf', f)
return mem_zip.getvalue()
def get_files(request, children):
pdfs = []
for child in children:
pdfs.append(create_pdf(child))
zip = create_zip(pdfs)
response = FileResponse(zip,
content_type='application/zip',
filename='zayavleniya.zip')
response['Content-Disposition'] = 'attachment; filename=files.zip'
return response
请帮忙找出我错在哪里。
【问题讨论】: