办公自动化:PDF文件合并器,将多个PDF文件进行合并...
2022/3/4 3:14:59
本文主要是介绍办公自动化:PDF文件合并器,将多个PDF文件进行合并...,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
操作说明:选择多个PDF文件,执行完合并后会生成一个新的PDF文件,这个新的PDF文件包含所有源PDF文件的页面。
将相关的三方模块导入到代码块中…
from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * import sys import os import PyPDF2 # PDF操作库
QThread是PyQt5的子线程应用,之前已经使用过比较多的次数了。一般使用时通过创建一个类专门处理线程相关的逻辑。注意在这个类上面继承 QThread,创建好之后里面的函数应用范式基本都是不会改变的。一个__ init__ 函数用来初始化、另一个 del 函数控制线程的销毁,还有一个run函数用来编写线程里面的业务逻辑。
这里面定义了一个信号量finished
finished = pyqtSignal(bool)
这个变量主要是为了在子线程执行完成时向主线程传送变量值。这样,主线程就知道子线程的执行状态。
class WorkThread(QThread): finished = pyqtSignal(bool) def __init__(self, parent=None): super(WorkThread, self).__init__(parent) self.parent = parent self.working = True def __del__(self): self.working = False self.wait() def run(self): pdf_files_path = self.parent.pdf_files_path.text().strip() pdf_tar_dir = self.parent.pdf_tar_dir.text().strip() file_list = pdf_files_path.split(',') merge = PyPDF2.PdfFileMerger() for file in file_list: merge.append(PyPDF2.PdfFileReader(file)) merge.write(pdf_tar_dir + '/汇总.pdf') self.finished.emit(True)
编写UI界面,界面上的UI组件比较少,源文件按钮是为了选择需要合并的PDF文件(支持多选,选择文件时按住Ctrl键就可以选择多个文件)。目标路径是为了选择存储生成的后的合并文件的路径的。选择好之后点击开始按钮就可以调用子线程去执行PDF文件合并操作了。
class PDFMerge(QWidget): def __init__(self): super(PDFMerge, self).__init__() self.init_ui() def init_ui(self): self.setWindowTitle('PDF文件合并器') self.setWindowIcon(QIcon('pdf.ico')) self.setFixedWidth(500) self.setFixedHeight(120) grid = QGridLayout() self.pdf_files_path = QLineEdit() self.pdf_files_path.setReadOnly(True) self.pdf_files_btn = QPushButton() self.pdf_files_btn.setText('源文件') self.pdf_files_btn.clicked.connect(self.pdf_files_btn_click) self.pdf_tar_dir = QLineEdit() self.pdf_tar_dir.setReadOnly(True) self.pdf_tar_btn = QPushButton() self.pdf_tar_btn.setText('目标路径') self.pdf_tar_btn.clicked.connect(self.pdf_tar_btn_click) self.start_btn = QPushButton() self.start_btn.setText('开始合并吧') self.start_btn.clicked.connect(self.start_btn_click) grid.addWidget(self.pdf_files_path, 0, 0, 1, 1) grid.addWidget(self.pdf_files_btn, 0, 1, 1, 1) grid.addWidget(self.pdf_tar_dir, 1, 0, 1, 1) grid.addWidget(self.pdf_tar_btn, 1, 1, 1, 1) grid.addWidget(self.start_btn, 2, 0, 1, 2) self.thread_ = WorkThread(self) self.thread_.finished.connect(self.finished) self.setLayout(grid) def pdf_files_btn_click(self): files = QFileDialog.getOpenFileNames(self, os.getcwd(), '打开文件', 'PDF Files(*.pdf)') file_list = files[0] self.pdf_files_path.setText(','.join(file_list)) def pdf_tar_btn_click(self): dir = QFileDialog.getExistingDirectory(self, os.getcwd(), '打开文件夹') self.pdf_tar_dir.setText(dir) def start_btn_click(self): self.start_btn.setEnabled(False) self.thread_.start() def finished(self, finished): if finished is True: self.start_btn.setEnabled(True)
通过main函数启动应用…
if __name__ == '__main__': app = QApplication(sys.argv) main = PDFMerge() main.show() sys.exit(app.exec_())
将上述所有代码块copy到一个.py的python文件中,直接启动即可运行。
这篇关于办公自动化:PDF文件合并器,将多个PDF文件进行合并...的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22初创企业的效率秘诀!实用的看板式任务管理工具推荐
- 2024-12-22新能源汽车销售难题如何破?看板工具助力门店管理升级
- 2024-12-218 款现代无代码工具,轻松提升开发者工作效率 ???????
- 2024-12-21从线索跟踪到业绩提升:销售任务管理系统推荐
- 2024-12-21刚刚发布RobinReach:多渠道社交媒体管理工具 ??
- 2024-12-21跨地域协作无压力!推荐几款必备的可视化协同工具
- 2024-12-21初学者指南:轻松掌握文章编辑器
- 2024-12-21Excel数据导出教程:让数据迁移变得简单
- 2024-12-21Excel数据导入入门教程
- 2024-12-215分钟速览:优化项目管理必备的5款高效工具