辦公自動化: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文件合并器  公眾號:[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('源文件')
        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文件中,直接啟動即可運行。

有任何問題,歡迎大家留言。博主必當知無不言、言無不盡!

【往期精彩】

GUI猜數字游戲,直接開玩...

手把手教你做一個數據圖表生成器(附源碼)...

動態指針時鐘:利用pyqt5制作指針鐘表顯示實時時間

hashlib.md5()函數來篩選出系統重復文件并移除...

python 日志中最亮的仔,是喜歡的花里胡哨吖...

哈撒給,英雄聯盟全皮膚下載器來了...

手繪圖片生成器:以雪容融為例一鍵生成...

PyQt5的敏感詞檢測工具制作,運營者的福音...

剛剛出爐的冬奧會吉祥物:冰墩墩,附源碼...

最優美的表格查看插件:tabulate

手繪圖片生成器:以雪容融為例一鍵生成...

大年初二、做了一個windows通知管理器!

分享名稱:辦公自動化:PDF文件合并器,將多個PDF文件進行合并...
本文網址:http://m.kartarina.com/article32/dsojosc.html

成都網站建設公司_創新互聯,為您提供品牌網站設計品牌網站制作微信公眾號品牌網站建設網站建設建站公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

外貿網站建設
主站蜘蛛池模板: 日韩av无码国产精品| 午夜爽喷水无码成人18禁三级| 国产精品无码无片在线观看3D| 国产精品无码素人福利| 国产色无码专区在线观看| 久久无码专区国产精品| 日韩加勒比一本无码精品| 日韩乱码人妻无码中文字幕久久| 无码丰满熟妇浪潮一区二区AV| 成人无码AV一区二区| 毛片一区二区三区无码| 亚洲毛片无码专区亚洲乱| 国产亚洲精久久久久久无码AV| 国产莉萝无码AV在线播放| 无码人妻AV一二区二区三区| 亚洲av无码天堂一区二区三区| 久久无码人妻一区二区三区| 成人无码a级毛片免费| 无码日韩人妻AV一区免费l| 无码少妇一区二区浪潮免费| 日韩精品无码熟人妻视频| 中出人妻中文字幕无码| 国模吧无码一区二区三区| 国产成人无码a区在线观看视频免费| 亚洲成a人片在线观看无码| 中文字幕无码第1页| 亚洲精品无码高潮喷水在线| 人妻丰满熟妇AV无码区HD| 国产精品xxxx国产喷水亚洲国产精品无码久久一区 | 天天看高清无码一区二区三区| 精品无码国产一区二区三区AV | 国产精品无码永久免费888| 亚洲AV无码男人的天堂| 亚洲人成人伊人成综合网无码| 日韩av无码中文字幕| 精品无码无人网站免费视频| 日韩精品无码一区二区三区免费 | 久久亚洲国产成人精品无码区| 一区二区三区无码高清视频| 亚洲精品无码你懂的网站| 国产亚洲美日韩AV中文字幕无码成人|