如何从二进制字符串创建 PDF?
How to create a PDF from a binary string?
已使用 Python 的 requests
模块向服务器发出请求:
requests.get('myserver/pdf', headers)
它返回了一个 status-200 响应,其中都包含 response.content
中的 PDF 二进制数据
问题
如何从 response.content
创建 PDF 文件?
您可以创建一个空的 pdf,然后像这样以二进制形式保存写入该 pdf:
from reportlab.pdfgen import canvas
import requests
# Example of path. This file has not been created yet but we
# will use this as the location and name of the pdf in question
path_to_create_pdf_with_name_of_pdf = r'C:/User/Oleg/MyDownloadablePdf.pdf'
# Anything you used before making the request. Since you did not
# provide code I did not know what you used
.....
request = requests.get('myserver/pdf', headers)
#Actually creates the empty pdf that we will use to write the binary data to
pdf_file = canvas.Canvas(path_to_create_pdf_with_name_of_pdf)
#Open the empty pdf that we created above and write the binary data to.
with open(path_to_create_pdf_with_name_of_pdf, 'wb') as f:
f.write(request.content)
f.close()
reportlab.pdfgen 允许您通过使用 canvas.Canvas 方法指定要保存 pdf 的路径以及 pdf 的名称来制作新的 pdf。如我的回答所述,您需要提供执行此操作的路径。
一旦你有一个空的 pdf,你可以打开 pdf 文件作为 wb(写入二进制)并将 pdf 的内容从请求写入文件并关闭文件。
使用路径时 - 确保名称不是任何现有文件的名称,以确保您不会覆盖任何现有文件。如评论所示,如果此名称是任何其他文件的名称,那么您将面临覆盖数据的风险。例如,如果您在循环中执行此操作,则需要在每次迭代时使用新名称指定路径,以确保每次都有一个新的 pdf。但是,如果它是一次性的,那么只要它不是另一个文件的名称,您就不会 运行 冒这个风险。
已使用 Python 的 requests
模块向服务器发出请求:
requests.get('myserver/pdf', headers)
它返回了一个 status-200 响应,其中都包含 response.content
问题
如何从 response.content
创建 PDF 文件?
您可以创建一个空的 pdf,然后像这样以二进制形式保存写入该 pdf:
from reportlab.pdfgen import canvas
import requests
# Example of path. This file has not been created yet but we
# will use this as the location and name of the pdf in question
path_to_create_pdf_with_name_of_pdf = r'C:/User/Oleg/MyDownloadablePdf.pdf'
# Anything you used before making the request. Since you did not
# provide code I did not know what you used
.....
request = requests.get('myserver/pdf', headers)
#Actually creates the empty pdf that we will use to write the binary data to
pdf_file = canvas.Canvas(path_to_create_pdf_with_name_of_pdf)
#Open the empty pdf that we created above and write the binary data to.
with open(path_to_create_pdf_with_name_of_pdf, 'wb') as f:
f.write(request.content)
f.close()
reportlab.pdfgen 允许您通过使用 canvas.Canvas 方法指定要保存 pdf 的路径以及 pdf 的名称来制作新的 pdf。如我的回答所述,您需要提供执行此操作的路径。
一旦你有一个空的 pdf,你可以打开 pdf 文件作为 wb(写入二进制)并将 pdf 的内容从请求写入文件并关闭文件。
使用路径时 - 确保名称不是任何现有文件的名称,以确保您不会覆盖任何现有文件。如评论所示,如果此名称是任何其他文件的名称,那么您将面临覆盖数据的风险。例如,如果您在循环中执行此操作,则需要在每次迭代时使用新名称指定路径,以确保每次都有一个新的 pdf。但是,如果它是一次性的,那么只要它不是另一个文件的名称,您就不会 运行 冒这个风险。