我有pdf文件,用base64编码。 我创建了简单的脚本,将其保存为pdf文件:
import base64
with open('pdf.b64', mode='r') as fpdf:
with open('output.pdf', mode='wb') as output:
base64.decode(fpdf, output)
output.close()
fpdf.close()
脚本运行后,我按预期编写了pdf文件,但它已损坏。 我决定将任何正确的pdf文件与我得到的文件进行比较,并注意到正确的pdf文件中的每一行都以“^ M”结尾,例如:
更正pdf文件标题: %PDF-1.7 ^ M
我的pdf文件标题: %PDF-1.4
那么,我在这里做错了什么?
答案 0 :(得分:2)
我有类似的问题。我使用以下函数从Django中的base64编码字符串生成并返回PDF文件。 (仅使用Python 3.5测试)
def b64_to_pdf(b64content):
import io as BytesIO
import base64
from django.http import HttpResponse
buffer = BytesIO.BytesIO()
content = base64.b64decode(b64content)
buffer.write(content)
response = HttpResponse(
buffer.getvalue(),
content_type="application/pdf",
)
response['Content-Disposition'] = 'inline;filename=some_file.pdf'
return response
如果您不使用Django,那么您只需要弄清楚如何在视图中返回PDF文件或类似的东西。我使用HttpResponse
来处理响应的各种事情。
我也可以将此函数用于任何类型的b64编码字符串,因此它可以在整个项目中重复使用。