0人参与 • 2026-03-19 • Python
在处理合同、法律文书或技术文档时,常常会遇到多个版本的同一 pdf。人工逐页对比既耗时又容易遗漏细节。借助 spire.pdf for python,你可以用很少的代码自动检测并高亮显示两个 pdf 之间的差异,从而大幅提升比对效率和准确性。
本文将逐步演示如何配置环境并使用示例代码进行比较,还会介绍一些可选的高级设置以满足不同需求。
首先从 pypi 安装所需包:
pip install spire.pdf
安装完成后即可开始对 pdf 文档进行比对。
下面示例将原始文档与修订文档进行比较,并生成一个可视化的比较结果文件:
from spire.pdf.common import *
from spire.pdf import *
# 加载原始 pdf
original = pdfdocument("original.pdf")
# 加载修订后的 pdf
revised = pdfdocument("revised.pdf")
# 初始化比较器
comparer = pdfcomparer(original, revised)
# 生成比较结果
comparer.compare("output/compareresult.pdf")
# 释放资源
original.dispose()
revised.dispose()在 pdf 查看器(例如 adobe acrobat)中打开生成的 compareresult.pdf,你会看到并排对比的页面:原文中被删除的内容以红色高亮,修订文档中新增的内容以黄色标注,清晰直观。
你可以在调用 compare 前通过调整比较选项来满足更精细的需求。
1.仅比较文本
如果希望忽略排版或图形差异,只检测文本变化,可以启用文本比对模式:
comparer.pdfcompareoptions.onlycomparetext = true
2.限定页范围比较
对于篇幅较长的文档,仅比较特定页区通常更高效。可以设置页范围:
comparer.pdfcompareoptions.setpageranges(1, 3, 1, 3) # 参数顺序:(oldstartindex, oldendindex, newstartindex, newendindex)
这会仅比较指定的页面区间,而非整份文档。
python实现比对两个pdf文件内容并输出不同的地方
思路步骤:
实现代码:
import pypdf2
# 打开原始pdf文件
pdf1 = open('1.pdf', 'rb')
pdf2 = open('2.pdf', 'rb')
# 创建pdf文件读取对象
pdf1_reader = pypdf2.pdfreader(pdf1)
pdf2_reader = pypdf2.pdfreader(pdf2)
# 使用len(reader.pages) 获取pdf文件的页数
pdf1_pages = len(pdf1_reader.pages)
pdf2_pages = len(pdf2_reader.pages)
# 创建pdf文件写入对象
pdf_writer = pypdf2.pdfwriter()
# 使用reader.pages[page_number],逐页比较两个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)
# 将比较结果写入新的pdf文件
pdf_output = open('output.pdf', 'wb')
pdf_writer.write(pdf_output)
# 关闭文件
pdf1.close()
pdf2.close()
pdf_output.close()手动比对 pdf 版本既低效又容易出错。使用 spire.pdf for python,可以快速生成可视化的差异报告,显著提升审阅速度与准确性。通过调整选项(如仅文本比对或指定页范围),还可根据实际需求灵活控制比较范围与精度,是合同审阅、文档校对和版本管理的实用工具。
到此这篇关于使用python简单实现比较pdf文件差异的文章就介绍到这了,更多相关python比较pdf文件差异内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论