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

如何用Python的PyPDF2模块合并远程PDF且不存储到本地目录

用PyPDF2合并远程PDF(无需本地存储)

要实现不落地本地直接合并远程PDF,核心思路是在内存中处理PDF字节流,借助PyPDF2的合并能力,配合requests拉取远程文件、io.BytesIO实现内存文件操作。

实现步骤与代码示例

  1. 安装依赖(未安装时执行):
pip install PyPDF2 requests
  1. 核心代码:
from PyPDF2 import PdfMerger
import requests
from io import BytesIO

def merge_remote_pdfs(pdf_urls):
    merger = PdfMerger()
    
    for url in pdf_urls:
        try:
            # 拉取远程PDF字节流
            response = requests.get(url, timeout=10)
            response.raise_for_status()  # 校验请求是否成功
            
            # 将字节流转为PyPDF2可读取的类文件对象
            pdf_file = BytesIO(response.content)
            merger.append(pdf_file)
        except Exception as e:
            print(f"处理URL {url} 时出错: {str(e)}")
            continue
    
    # 将合并结果写入内存对象,不落地本地
    merged_pdf = BytesIO()
    merger.write(merged_pdf)
    merger.close()
    
    # 可对merged_pdf做后续操作:如上传远程、返回前端等
    # 若需保存到本地(可选,按需启用)
    # with open("merged.pdf", "wb") as f:
    #     f.write(merged_pdf.getvalue())
    
    return merged_pdf

# 使用示例
pdf_url_list = [
    "https://example.com/pdf1.pdf",
    "https://example.com/pdf2.pdf"
]
result = merge_remote_pdfs(pdf_url_list)

关键细节说明

  • 纯内存操作:用BytesIO封装远程字节流与合并结果,全程不写入本地目录,完全在内存中完成处理。
  • 容错处理:加入超时与请求状态校验,单个PDF拉取失败不会中断整个合并流程。
  • 灵活拓展:合并后的merged_pdf是BytesIO对象,可直接用于上传云存储、生成HTTP响应等场景,无需落地本地。

内容的提问来源于stack exchange,提问作者Prathmesh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:05:32