使用Python的requests
模块已向服务器发送了一个请求:
requests.get('myserver/pdf', headers)
它返回了status-200响应,所有响应都包含response.content
中的PDF二进制数据
如何从response.content
创建PDF文件?
答案 0 :(得分:2)
您可以创建一个空的pdf文件,然后将写入该pdf文件的二进制文件保存如下:
from reportlab.pdfgen import canvas
from reportlab.lib.units import inch, cm
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,您可以将wb(写二进制文件)打开pdf文件,并将pdf内容从请求写入文件中,然后关闭文件。
使用路径时-确保名称不是任何现有文件的名称,以确保您不会覆盖任何现有文件。如注释所示,如果此名称是任何其他文件的名称,则可能会覆盖数据。例如,如果要循环执行此操作,则需要在每次迭代时使用新名称指定路径,以确保每次都有新的pdf。但是,如果这是一次性的事情,那么只要它不是另一个文件的名称,就不要冒险。