You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:55:19