稳健性与 strict=False

PDF 文件有多个版本规范
PDF 2.0 的规范文档有 1003 页,这样的篇幅使得完全遵循规范变得困难。因此,许多 PDF 文件并不严格遵守规范。

如果 PDF 文件不符合规范,往往无法确定其预期的效果。例如以下错误的 Python 代码:

# 错误代码
function (foo, bar):  

# 可能的意图:
def function(foo, bar):  
    ...  

# 也可能是:
function = (foo, bar)  

在编写解析器时,可以选择两种策略:一种是尽量宽容,尝试推测用户的意图;另一种是严格遵循规范,告诉用户他们的文件需要修复。

pypdf 为您提供了是否严格的选择。

pypdf 的两个核心对象为:

只有 PdfReaderstrict 参数,因为假定您不希望生成一个不合规的 PDF 文件。

  • 如果选择 strict=True,pypdf 会在 PDF 文件不符合规范时抛出异常。

  • 如果选择 strict=False,pypdf 会尝试宽容处理,并尽可能完成合理的操作,但会记录一条警告信息。这是一种尽力而为的方式。