PDF 有很多版本。 單就PDF 1.7 的規(guī)范就有 978 頁。

這個長度使得很多pdf文件很難把一切都做好。因此,很多 PDF 文件并沒有嚴格遵循規(guī)范。

如果 PDF 文件不符合規(guī)范,則無法始終確定預期效果。將以下損壞的 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 不符合規(guī)范,PyPDF2 將引發(fā)異常。

選擇 ?strict=False? 意味著 PyPDF2 將嘗試寬容并做一些合理的事情,但它會記錄一條警告消息。這是一種盡力而為的方法。