PDF 有很多版本。 单就PDF 1.7 的规范就有 978 页。

这个长度使得很多pdf文件很难把一切都做好。因此,很多 PDF 文件并没有严格遵循规范。

如果 PDF 文件不符合规范,则无法始终确定预期效果。将以下损坏的 Python 代码视为示例:

# Broken
function (foo, bar):

# Potentially intended:
def function(foo, bar):
    ...

# Also possible:
function = (foo, bar)

编写一个解析器你可以走两条路:要么尝试宽容并尝试弄清楚用户的意图,要么你严格并告诉用户他们应该修复他们的东西。

PyPDF2 为您提供了严格或不严格的选项。

PyPDF2 有三个核心对象,它们都有一个​strict​的参数:

  • PdfReader

  • PdfWriter

  • PdfMerger

选择 ​strict=True​ 意味着如果 PDF 不符合规范,PyPDF2 将引发异常。

选择 ​strict=False​ 意味着 PyPDF2 将尝试宽容并做一些合理的事情,但它会记录一条警告消息。这是一种尽力而为的方法。