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

這個(gè)長(zhǎng)度使得很多pdf文件很難把一切都做好。因此,很多 PDF 文件并沒(méi)有嚴(yán)格遵循規(guī)范。

如果 PDF 文件不符合規(guī)范,則無(wú)法始終確定預(yù)期效果。將以下?lián)p壞的 Python 代碼視為示例:

# Broken
function (foo, bar):

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

# Also possible:
function = (foo, bar)

編寫一個(gè)解析器你可以走兩條路:要么嘗試寬容并嘗試弄清楚用戶的意圖,要么你嚴(yán)格并告訴用戶他們應(yīng)該修復(fù)他們的東西。

PyPDF2 為您提供了嚴(yán)格或不嚴(yán)格的選項(xiàng)。

PyPDF2 有三個(gè)核心對(duì)象,它們都有一個(gè)?strict?的參數(shù):

  • ?PdfReader?

  • ?PdfWriter?

  • ?PdfMerger?

選擇 ?strict=True? 意味著如果 PDF 不符合規(guī)范,PyPDF2 將引發(fā)異常。

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