如何将matplotlib PdfPages生成的PDF直接转为字节数组
直接获取Matplotlib生成PDF的字节数组
可以通过Python的io.BytesIO内存缓冲区实现需求,无需将PDF写入本地文件再读取,直接在内存中生成并获取字节数组。修改后的代码如下:
from matplotlib.backends.backend_pdf import PdfPages import numpy as np import matplotlib.pyplot as plt from io import BytesIO x1 = np.arange(10) y1 = x1**2 x2 = np.arange(20) y2 = x2**2 # 用BytesIO作为PDF的内存缓冲区,替代本地文件路径 buffer = BytesIO() pp = PdfPages(buffer) def function_plot(X,Y): plt.figure() plt.clf() plt.plot(X,Y) plt.title('y vs x') plt.xlabel('x axis', fontsize = 13) plt.ylabel('y axis', fontsize = 13) pp.savefig() function_plot(x1,y1) function_plot(x2,y2) # 关闭PdfPages,确保所有图表内容写入缓冲区 pp.close() # 获取PDF的字节数组,可直接用于返回、存储等场景 pdf_bytes = buffer.getvalue()
关键细节:
BytesIO是内存字节流对象,让PdfPages将PDF内容写入内存而非本地文件- 执行
pp.close()后,所有图表的渲染内容会被完整写入缓冲区 - 通过
buffer.getvalue()直接提取PDF字节数组,全程无本地文件IO操作
内容的提问来源于stack exchange,提问作者Don
相关产品推荐
相关产品推荐

