gpt4 book ai didi

python - Django - pdf 响应编码错误 - reportlab

转载 作者:行者123 更新时间:2023-12-05 07:08:23 28 4
gpt4 key购买 nike

我正在 Django 后端开发 PDF 生成器。我使用 reportlab。它似乎有效,但编码不正确。当我使用变音符号时,它得到了错误的字符/符号。

这个问题非常类似于: Django - pdf response has wrong encoding - xhtml2pdf

但我使用reportlab,它允许添加字体。我在reportlab中注册了支持波兰语变音符号的字体:“Aleo”。

pdfmetrics.registerFont(TTFont('Aleo', './resources/fonts/Aleo/Aleo-Light.ttf'))
pdfmetrics.registerFont(TTFont('AleoBd', './resources/fonts/Aleo/Aleo-Bold.ttf'))
pdfmetrics.registerFont(TTFont('AleoIt', './resources/fonts/Aleo/Aleo-Italic.ttf'))
pdfmetrics.registerFont(TTFont('AleoBI', './resources/fonts/Aleo/Aleo-BoldItalic.ttf'))
registerFontFamily('Aleo', normal='Aleo', bold='AleoBd', italic='AleoIt', boldItalic='AleoBI')

在 djagno 中输出 pdf 的示例:

file_response = Album.pdf_generator(request.user, request.data.get('album_id'))

# Make copy to save local pdf file and send via django
binary_copy = deepcopy(file_response)
with open('test.pdf', 'wb') as f:
f.write(binary_copy.read())

content_type = {'pdf': 'application/pdf'}

response = HttpResponse(file_response, content_type=content_type)
response['Content-Disposition'] = 'attachment; filename=moja_nazwa.pdf'
# response = FileResponse(file_response, as_attachment=True, filename='hello.pdf')
return response

示例两个文件从相同的 bytesIO 生成:

一个。本地文件 B. 共享 FileResponse 或 HttpResponse 文件: enter image description here

奇怪的是,如果我在 swagger 中单击“下载”链接后使用“打开方式”选项,然后选择其他程序,例如“wps pdf”我将在生成的 pdf 中获取其他字符..

使用 wps pdfswagger 的链接直接打开 pdf: enter image description here

最佳答案

分析问题,终于找到了生成pdf编码错误的原因。问题不在于 reportlab,而在于 Swagger,他在共享文件时将其内容视为文本数据而不是二进制数据。

关于python - Django - pdf 响应编码错误 - reportlab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61886271/

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