用Python实现比对两个PDF文件内容并输出不同的地方

思路步骤:
1,安装PyPDF2库,并导入
2,打开需要进行比对的两个PDF文件
3,创建PDF文件读取对象
4,获取PDF文件的页数
5,创建PDF文件写入对象
6,逐页比较两个PDF文件
7,将比较结果写入新的PDF文件
8,关闭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()
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以给你提供一个Python窗口程序,用于批量提取PDF文档中的信息并保存为TXT格式的文件。这个程序使用了PyQt5库来创建GUI窗口,并使用了PyPDF2库来读取PDF文件内容。 代码如下: ```python import sys import os import PyPDF2 from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QPushButton, QFileDialog, QTextEdit, QGridLayout class PdfToTxt(QWidget): def __init__(self): super().__init__() self.title = 'PDF批量转TXT' self.left = 50 self.top = 50 self.width = 500 self.height = 400 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) self.input_label = QLabel('选择要转换的PDF文件夹:', self) self.input_label.move(20, 20) self.input_text = QTextEdit(self) self.input_text.setReadOnly(True) self.input_text.setGeometry(20, 50, 200, 30) self.input_btn = QPushButton('选择文件夹', self) self.input_btn.setGeometry(230, 50, 80, 30) self.input_btn.clicked.connect(self.select_folder) self.output_label = QLabel('选择保存TXT文件夹:', self) self.output_label.move(20, 100) self.output_text = QTextEdit(self) self.output_text.setReadOnly(True) self.output_text.setGeometry(20, 130, 200, 30) self.output_btn = QPushButton('选择文件夹', self) self.output_btn.setGeometry(230, 130, 80, 30) self.output_btn.clicked.connect(self.select_folder) self.run_btn = QPushButton('开始转换', self) self.run_btn.setGeometry(20, 200, 100, 30) self.run_btn.clicked.connect(self.convert) self.result_label = QLabel('', self) self.result_label.setGeometry(20, 240, 300, 30) self.grid = QGridLayout() self.setLayout(self.grid) self.show() def select_folder(self): folder = str(QFileDialog.getExistingDirectory(self, "选择文件夹")) sender = self.sender() if sender == self.input_btn: self.input_text.setText(folder) elif sender == self.output_btn: self.output_text.setText(folder) def convert(self): input_folder = self.input_text.toPlainText() output_folder = self.output_text.toPlainText() if not os.path.exists(input_folder): self.result_label.setText('PDF文件夹不存在!') return if not os.path.exists(output_folder): os.makedirs(output_folder) for file_name in os.listdir(input_folder): if file_name.endswith('.pdf'): input_file = os.path.join(input_folder, file_name) output_file = os.path.join(output_folder, os.path.splitext(file_name)[0] + '.txt') try: with open(output_file, 'w') as f: pdf_file = open(input_file, 'rb') pdf_reader = PyPDF2.PdfFileReader(pdf_file) num_pages = pdf_reader.getNumPages() for i in range(num_pages): page_obj = pdf_reader.getPage(i) f.write(page_obj.extractText()) pdf_file.close() self.result_label.setText(f'{file_name} 转换成功!') except: self.result_label.setText(f'{file_name} 转换失败!') if __name__ == '__main__': app = QApplication(sys.argv) ex = PdfToTxt() sys.exit(app.exec_()) ``` 这个程序的界面比较简单,有两个文本框和两个按钮。第一个文本框用于选择要转换的PDF文件夹,第二个文本框用于选择要保存TXT文件文件夹。两个按钮分别对应选择文件夹的操作。还有一个“开始转换”按钮,用于开始转换PDF文件。 当用户点击“开始转换”按钮时,程序会遍历PDF文件夹中的所有PDF文件,并将它们转换为TXT文件保存到指定的TXT文件夹中。每个TXT文件文件名与对应的PDF文件名相同,只是扩展名不同。 程序还会在界面上显示转换结果,如果某个PDF文件转换成功,会显示“文件名 转换成功!”;如果转换失败,会显示“文件名 转换失败!”。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值