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

如何从p7m文件中提取内容?Python提取方法咨询

提取p7m文件中的PDF内容

p7m是PKCS#7格式的数字签名容器,里面打包了原始PDF文件——你用PyPDF2处理报错很正常,因为它根本不是加密PDF,是签名封装格式。给你两个实用的提取方案:

方案一:用PyCryptodome库纯Python解析

先装依赖:

pip install pycryptodome

直接用下面的代码提取:

from Crypto.PKCS7 import PKCS7

def extract_pdf_from_p7m(p7m_path, output_pdf_path):
    with open(p7m_path, 'rb') as f:
        p7_data = f.read()
    
    # 解析PKCS#7容器,跳过签名验证直接提取内容
    pk7 = PKCS7()
    pk7.decrypt(p7_data, None)
    raw_pdf = pk7.get_content()
    
    with open(output_pdf_path, 'wb') as f:
        f.write(raw_pdf)

调用时传入p7m文件路径和输出PDF路径即可,全程Python处理,不需要额外工具。

方案二:调用openssl命令行(更简单)

Windows、Linux、Mac基本都自带openssl,用subprocess调用命令就行,代码更简洁:

import subprocess

def extract_pdf_from_p7m(p7m_path, output_pdf_path):
    subprocess.run([
        'openssl', 'pkcs7',
        '-in', p7m_path,
        '-inform', 'DER',  # 大部分p7m是DER格式,若为PEM则改为PEM
        '-out', output_pdf_path,
        '-outform', 'DER',
        '-verify',
        '-noverify'  # 跳过签名验证,直接提取内容
    ], check=True)

两种方法都能直接导出原始PDF,之后你就可以用PyPDF2或其他PDF库处理了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 12:40:32