使用Python簡單實(shí)現(xiàn)比較PDF文件差異
在處理合同、法律文書或技術(shù)文檔時(shí),常常會遇到多個(gè)版本的同一 PDF。人工逐頁對比既耗時(shí)又容易遺漏細(xì)節(jié)。借助 Spire.PDF for Python,你可以用很少的代碼自動(dòng)檢測并高亮顯示兩個(gè) PDF 之間的差異,從而大幅提升比對效率和準(zhǔn)確性。
本文將逐步演示如何配置環(huán)境并使用示例代碼進(jìn)行比較,還會介紹一些可選的高級設(shè)置以滿足不同需求。
安裝依賴
首先從 PyPI 安裝所需包:
pip install spire.pdf
安裝完成后即可開始對 PDF 文檔進(jìn)行比對。
基本示例:比較兩個(gè) PDF 并輸出結(jié)果
下面示例將原始文檔與修訂文檔進(jìn)行比較,并生成一個(gè)可視化的比較結(jié)果文件:
from spire.pdf.common import *
from spire.pdf import *
# 加載原始 PDF
original = PdfDocument("original.pdf")
# 加載修訂后的 PDF
revised = PdfDocument("revised.pdf")
# 初始化比較器
comparer = PdfComparer(original, revised)
# 生成比較結(jié)果
comparer.Compare("output/CompareResult.pdf")
# 釋放資源
original.Dispose()
revised.Dispose()在 PDF 查看器(例如 Adobe Acrobat)中打開生成的 CompareResult.pdf,你會看到并排對比的頁面:原文中被刪除的內(nèi)容以紅色高亮,修訂文檔中新增的內(nèi)容以黃色標(biāo)注,清晰直觀。
可選的高級設(shè)置
你可以在調(diào)用 Compare 前通過調(diào)整比較選項(xiàng)來滿足更精細(xì)的需求。
1.僅比較文本
如果希望忽略排版或圖形差異,只檢測文本變化,可以啟用文本比對模式:
comparer.PdfCompareOptions.OnlyCompareText = True
2.限定頁范圍比較
對于篇幅較長的文檔,僅比較特定頁區(qū)通常更高效??梢栽O(shè)置頁范圍:
comparer.PdfCompareOptions.SetPageRanges(1, 3, 1, 3) # 參數(shù)順序:(oldStartIndex, oldEndIndex, newStartIndex, newEndIndex)
這會僅比較指定的頁面區(qū)間,而非整份文檔。
方法補(bǔ)充
Python實(shí)現(xiàn)比對兩個(gè)PDF文件內(nèi)容并輸出不同的地方
思路步驟:
- 安裝PyPDF2庫,并導(dǎo)入
- 打開需要進(jìn)行比對的兩個(gè)PDF文件
- 創(chuàng)建PDF文件讀取對象
- 獲取PDF文件的頁數(shù)
- 創(chuàng)建PDF文件寫入對象
- 逐頁比較兩個(gè)PDF文件
- 將比較結(jié)果寫入新的PDF文件
- 關(guān)閉PDF文件
實(shí)現(xiàn)代碼:
import PyPDF2
# 打開原始PDF文件
pdf1 = open('1.pdf', 'rb')
pdf2 = open('2.pdf', 'rb')
# 創(chuàng)建PDF文件讀取對象
pdf1_reader = PyPDF2.PdfReader(pdf1)
pdf2_reader = PyPDF2.PdfReader(pdf2)
# 使用len(reader.pages) 獲取PDF文件的頁數(shù)
pdf1_pages = len(pdf1_reader.pages)
pdf2_pages = len(pdf2_reader.pages)
# 創(chuàng)建PDF文件寫入對象
pdf_writer = PyPDF2.PdfWriter()
# 使用reader.pages[page_number],逐頁比較兩個(gè)PDF文件
for page_number in range(min(pdf1_pages, pdf2_pages)):
page1 = pdf1_reader.pages[page_number]
page2 = pdf2_reader.pages[page_number]
if page1.extract_text() != page2.extract_text():
pdf_writer.add_page(page1)
pdf_writer.add_page(page2)
# 將比較結(jié)果寫入新的PDF文件
pdf_output = open('output.pdf', 'wb')
pdf_writer.write(pdf_output)
# 關(guān)閉文件
pdf1.close()
pdf2.close()
pdf_output.close()使用建議與場景
- 合同評審:快速定位條款變更,減少人工疏漏。
- 法律文檔:便于逐條核對修訂內(nèi)容并生成證據(jù)鏈。
- 技術(shù)文檔與手冊:確認(rèn)版本迭代中說明或示意圖的改動(dòng)。
小結(jié)
手動(dòng)比對 PDF 版本既低效又容易出錯(cuò)。使用 Spire.PDF for Python,可以快速生成可視化的差異報(bào)告,顯著提升審閱速度與準(zhǔn)確性。通過調(diào)整選項(xiàng)(如僅文本比對或指定頁范圍),還可根據(jù)實(shí)際需求靈活控制比較范圍與精度,是合同審閱、文檔校對和版本管理的實(shí)用工具。
到此這篇關(guān)于使用Python簡單實(shí)現(xiàn)比較PDF文件差異的文章就介紹到這了,更多相關(guān)Python比較PDF文件差異內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
pycharm下查看python的變量類型和變量內(nèi)容的方法
Python實(shí)現(xiàn)不規(guī)則圖形填充的思路
Python3使用QT編寫基礎(chǔ)的對話框程序的詳細(xì)流程
Python桌面端應(yīng)用最小化托盤開發(fā)實(shí)踐指南
Python正則表達(dá)式中g(shù)roup與groups的用法詳解

