稳健性与 strict=False
¶
PDF 文件有多个版本规范。
PDF 2.0 的规范文档有 1003 页,这样的篇幅使得完全遵循规范变得困难。因此,许多 PDF 文件并不严格遵守规范。
如果 PDF 文件不符合规范,往往无法确定其预期的效果。例如以下错误的 Python 代码:
# 错误代码
function (foo, bar):
# 可能的意图:
def function(foo, bar):
...
# 也可能是:
function = (foo, bar)
在编写解析器时,可以选择两种策略:一种是尽量宽容,尝试推测用户的意图;另一种是严格遵循规范,告诉用户他们的文件需要修复。
pypdf 为您提供了是否严格的选择。
pypdf 的两个核心对象为:
只有 PdfReader
有 strict
参数,因为假定您不希望生成一个不合规的 PDF 文件。
如果选择
strict=True
,pypdf 会在 PDF 文件不符合规范时抛出异常。如果选择
strict=False
,pypdf 会尝试宽容处理,并尽可能完成合理的操作,但会记录一条警告信息。这是一种尽力而为的方式。