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

如何使用Python设置PDF的title、author元数据以生成ADA合规PDF

解决方案:Word批量生成PDF时设置Title/Author及生成后修改方案

方案1:生成PDF前直接修改Word内置属性(优先推荐)

该方案直接在Word导出PDF前修改内置元数据,导出的PDF原生携带正确的Title、Author,不会破坏ADA规范要求的文档结构、标签属性,从根源解决校验不通过问题。

import comtypes.client
import os

# 配置参数
WORD_DIR = "你的Word文件所在文件夹路径"
PDF_OUTPUT_DIR = "生成PDF的输出路径"
TARGET_AUTHOR = "你的机构名称"

def word_to_pdf_with_correct_meta(word_path, pdf_path, target_title, target_author):
    word = comtypes.client.CreateObject("Word.Application")
    word.Visible = False
    try:
        doc = word.Documents.Open(word_path)
        # 修改Word内置属性
        doc.BuiltInDocumentProperties("Title").Value = target_title
        doc.BuiltInDocumentProperties("Author").Value = target_author
        # 导出为带标签的PDF(符合ADA规范的必要参数)
        doc.ExportAsFixedFormat(
            OutputFileName=pdf_path,
            ExportFormat=17, # 17对应PDF格式
            OpenAfterExport=False,
            OptimizeFor=0,
            IncludeDocProps=True, # 必须开启,才会把属性写入PDF
            UseISO19005_1=True # 可选,生成PDF/A格式更符合规范要求
        )
        doc.Close()
    except Exception as e:
        print(f"处理文件{word_path}出错:{e}")
    finally:
        word.Quit()

# 批量处理示例
for filename in os.listdir(WORD_DIR):
    if filename.endswith(".docx") or filename.endswith(".doc"):
        word_path = os.path.join(WORD_DIR, filename)
        # 此处可自定义Title规则,示例使用去掉后缀的文件名作为Title
        title = os.path.splitext(filename)[0]
        pdf_path = os.path.join(PDF_OUTPUT_DIR, f"{title}.pdf")
        word_to_pdf_with_correct_meta(word_path, pdf_path, title, TARGET_AUTHOR)

方案2:已生成PDF批量修改元数据(使用pikepdf)

该方案解决PyPDF2无法修改标准元数据的问题,pikepdf基于成熟的qpdf库开发,支持同时修改PDF标准文档信息和XMP元数据,完全满足ADA可访问性校验要求。
首先安装依赖:
pip install pikepdf

批量处理代码示例:

import os
import pikepdf
from pikepdf import models

PDF_DIR = "待处理PDF所在路径"
OUTPUT_DIR = "修改后PDF输出路径"
TARGET_AUTHOR = "你的机构名称"

def modify_pdf_meta(pdf_path, output_path, target_title, target_author):
    with pikepdf.open(pdf_path, allow_overwriting_input=False) as pdf:
        # 修改标准文档信息字典
        pdf.docinfo.Title = target_title
        pdf.docinfo.Author = target_author
        # 同步修改XMP元数据(ADA可访问性检查会读取该部分)
        xmp = pdf.open_metadata()
        xmp["dc:title"] = target_title
        xmp["dc:creator"] = [target_author]
        pdf.save(output_path)

# 批量处理示例
for filename in os.listdir(PDF_DIR):
    if filename.endswith(".pdf"):
        pdf_path = os.path.join(PDF_DIR, filename)
        # 此处可自定义Title规则,示例使用去掉后缀的文件名作为Title
        title = os.path.splitext(filename)[0]
        output_path = os.path.join(OUTPUT_DIR, filename)
        modify_pdf_meta(pdf_path, output_path, title, TARGET_AUTHOR)

注意事项

  • 优先使用方案1:Word原生导出带标签的PDF是符合ADA规范的最优路径,后期修改PDF存在小概率破坏文档结构标签的风险
  • 若使用方案2,修改时需同步更新文档信息字典与XMP元数据,避免部分可访问性检查工具仅读取XMP字段导致校验不通过
  • 批量处理前请先备份原始Word/PDF文件,避免操作失误丢失数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:48:03