当前位置: 首页 > 后端技术 > Python

办公自动化:PDF文件合并,合并多个PDF文件...

时间:2023-03-26 11:56:25 Python

操作说明:选中多个PDF文件,合并完成后,会生成一个新的PDF文件,这个新的PDF文件包含该PDF的所有来源页面文件。【阅读全文】将相关三方模块导入代码块...fromPyQt5.QtWidgetsimport*fromPyQt5.QtGuiimport*fromPyQt5.QtCoreimport*importsysimportosimportPyPDF2#PDF操作库QThread是一个子PyQt5的线程应用,以前用过很多次。一般使用时,创建一个类来处理线程相关的逻辑。注意QThread是继承自这个类的,创建后里面的函数应用范式基本不会改变。一个__init__函数用于初始化,另一个del函数控制线程的销毁,一个run函数用于编写线程中的业务逻辑。这里定义了一个信号量finishedfinished=pyqtSignal(bool)。该变量主要用于在子线程执行完成后将变量值传递给主线程。这样主线程就知道了子线程的执行状态。类WorkThread(QThread):finished=pyqtSignal(bool)def__init__(self,parent=None):super(WorkThread,self).__init__(parent)self.parent=parentself.working=Truedef__del__(self):self.working=Falseself.wait()defrun(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()forfile_list中的文件:merge.append(PyPDF2.PdfFileReader(file))merge.write(pdf_tar_dir+'/Summary.pdf')self.finished.emit(True)write在UI界面上,界面上的UI组件比较少。源文件按钮用于选择要合并的PDF文件(支持多选,选择文件时按住Ctrl键可以选择多个文件)。目标路径是选择存放生成的合并文件的路径。选中后点击开始按钮调用子线程进行PDF文件合并操作。classPDFMerge(QWidget):def__init__(self):super(PDFMerge,self).__init__()self.init_ui()definit_ui(self):self.setWindowTitle('PDF文件合并公众号:【Python集中营】')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('sourcefile')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()。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(网格)defpdf_files_btn_click(self):files=QFileDialog.getOpenFileNames(self,os.getcwd(),'打开文件','PDF文件(*.pdf)')file_list=files[0]self.pdf_files_path.setText(','.join(file_list))defpdf_tar_btn_click(self):dir=QFileDialog.getExistingDirectory(self,os.getcwd(),'打开文件夹')self.pdf_tar_dir.setText(dir)defstart_btn_click(self):self.start_btn.setEnabled(False)self.thread_.start()deffinished(self,finished):iffinishedisTrue:self.start_btn.setEnabled(True)通过main函数启动应用...if__name__=='__main__':app=Q申请(sys.argv)main=PDFMerge()main.show()sys.exit(app.exec_())将以上代码块全部复制到一个.pypython文件中,启动后直接运行即可。如有任何疑问,欢迎大家留言。博主必须无所不知、无所不言!【优秀往期】GUI猜数游戏,直接玩...手把手教你制作数据图表生成器(附源码)...动态指针时钟:使用pyqt5制作指针时钟显示实时hashlib。md5()函数用来过滤掉系统中的重复文件,并删除它们。。。python日志里最亮的小子是我喜欢的花里胡哨的。。。hasa,英雄联盟全皮下载器来了。。。手-画图生成器:易雪以融融为例,一键生成...PyQt5敏感词检测工具制作,运营者的福音...刚刚出炉的冬奥会吉祥物:冰盾盾,附源码...最美表单视图插件:Tabulate手绘图生成器:以雪蓉蓉为例一键生成...大年初二,做了一个windows通知管理器!