欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

辦公自動(dòng)化:PDF文件合并器,將多個(gè)PDF文件進(jìn)行合并...

操作說(shuō)明:選擇多個(gè)PDF文件,執(zhí)行完合并后會(huì)生成一個(gè)新的PDF文件,這個(gè)新的PDF文件包含所有源PDF文件的頁(yè)面。

創(chuàng)新互聯(lián)建站是一家朝氣蓬勃的網(wǎng)站建設(shè)公司。公司專注于為企業(yè)提供信息化建設(shè)解決方案。從事網(wǎng)站開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站設(shè)計(jì),網(wǎng)站模板,微信公眾號(hào)開(kāi)發(fā),軟件開(kāi)發(fā),小程序開(kāi)發(fā),十多年建站對(duì)宴會(huì)酒店設(shè)計(jì)等多個(gè)方面,擁有多年的網(wǎng)站運(yùn)維經(jīng)驗(yàn)。

【閱讀全文】

將相關(guān)的三方模塊導(dǎo)入到代碼塊中...

from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import sys
import os
import PyPDF2  # PDF操作庫(kù)

QThread是PyQt5的子線程應(yīng)用,之前已經(jīng)使用過(guò)比較多的次數(shù)了。一般使用時(shí)通過(guò)創(chuàng)建一個(gè)類專門處理線程相關(guān)的邏輯。注意在這個(gè)類上面繼承 QThread,創(chuàng)建好之后里面的函數(shù)應(yīng)用范式基本都是不會(huì)改變的。一個(gè)__ init__ 函數(shù)用來(lái)初始化、另一個(gè) del 函數(shù)控制線程的銷毀,還有一個(gè)run函數(shù)用來(lái)編寫線程里面的業(yè)務(wù)邏輯。

這里面定義了一個(gè)信號(hào)量finished

finished = pyqtSignal(bool)

這個(gè)變量主要是為了在子線程執(zhí)行完成時(shí)向主線程傳送變量值。這樣,主線程就知道子線程的執(zhí)行狀態(tài)。

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文件(支持多選,選擇文件時(shí)按住Ctrl鍵就可以選擇多個(gè)文件)。目標(biāo)路徑是為了選擇存儲(chǔ)生成的后的合并文件的路徑的。選擇好之后點(diǎn)擊開(kāi)始按鈕就可以調(diào)用子線程去執(zhí)行PDF文件合并操作了。

class PDFMerge(QWidget):
    def __init__(self):
        super(PDFMerge, self).__init__()
        self.init_ui()

    def init_ui(self):
        self.setWindowTitle('PDF文件合并器  公眾號(hào):[Python 集中營(yíng)]')
        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('目標(biāo)路徑')
        self.pdf_tar_btn.clicked.connect(self.pdf_tar_btn_click)

        self.start_btn = QPushButton()
        self.start_btn.setText('開(kāi)始合并吧')
        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(), '打開(kāi)文件', '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(), '打開(kāi)文件夾')
        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)

通過(guò)main函數(shù)啟動(dòng)應(yīng)用...

if __name__ == '__main__':
    app = QApplication(sys.argv)
    main = PDFMerge()
    main.show()
    sys.exit(app.exec_())

將上述所有代碼塊copy到一個(gè).py的python文件中,直接啟動(dòng)即可運(yùn)行。

有任何問(wèn)題,歡迎大家留言。博主必當(dāng)知無(wú)不言、言無(wú)不盡!

【往期精彩】

GUI猜數(shù)字游戲,直接開(kāi)玩...

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

動(dòng)態(tài)指針時(shí)鐘:利用pyqt5制作指針鐘表顯示實(shí)時(shí)時(shí)間

hashlib.md5()函數(shù)來(lái)篩選出系統(tǒng)重復(fù)文件并移除...

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

哈撒給,英雄聯(lián)盟全皮膚下載器來(lái)了...

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

PyQt5的敏感詞檢測(cè)工具制作,運(yùn)營(yíng)者的福音...

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

最優(yōu)美的表格查看插件:tabulate

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

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

分享名稱:辦公自動(dòng)化:PDF文件合并器,將多個(gè)PDF文件進(jìn)行合并...
本文網(wǎng)址:http://chinadenli.net/article32/dsojosc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)品牌網(wǎng)站制作、微信公眾號(hào)、品牌網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站建設(shè)