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

Python pikepdf用docinfo.items()提取元数据筛选作者标题无输出

问题原因

无输出的核心原因是匹配逻辑完全没命中目标键:
pikepdf中pdf.docinfo的元数据键是内置的Name类型对象,转为普通字符串后会保留PDF规范要求的/前缀,也就是作者字段对应键为/Author、标题字段对应键为/Title,字符串首字符是斜杠,你写的str(key).startswith("A")、str(key).startswith("Ti")判断永远不会成立,if分支从未执行,自然没有任何输出。
另外你用的前缀模糊匹配逻辑鲁棒性很差,很容易误命中其他同首字母的非目标元数据字段,不推荐使用。

正确实现方法

最稳妥的方式是直接按PDF标准定义的键名取值,不需要遍历全量字段,同时做好缺省兼容:

import pikepdf

# 替换为实际PDF文件路径
file_path = "target.pdf"
with pikepdf.open(file_path) as pdf:
    # 字段不存在时返回None,避免抛出KeyError
    author = pdf.docinfo.get("/Author", None)
    title = pdf.docinfo.get("/Title", None)

print(f"作者:{author}")
print(f"标题:{title}")

如果必须通过docinfo.items()遍历筛选,要注意对键名做精确匹配,不要用前缀模糊判断:

import pikepdf

file_path = "target.pdf"
with pikepdf.open(file_path) as pdf:
    # 定义需要提取的目标键集合
    target_keys = {"/Author", "/Title"}
    for key, value in pdf.docinfo.items():
        key_str = str(key)
        if key_str in target_keys:
            # 去掉键名开头的斜杠优化输出格式
            print(f"{key_str.lstrip('/')}: {value}")

注意:部分PDF文件本身没有写入作者、标题元数据,这种情况下提取结果为None属于正常情况,和代码逻辑无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:51:25