zoukankan      html  css  js  c++  java
  • 用python合并pdf文件,基于tkinter+PyPDF。

     1 from tkinter import *
     2 from pathlib import Path
     3 from tkinter.messagebox import *
     4 from PyPDF2 import PdfFileMerger, PdfFileReader, PdfFileWriter
     5 
     6 
     7 # 对文件夹名为:src_floder 文件合并
     8 def mergePdf(src_folder: str, des_file: str) -> str:
     9     """
    10     :param src_folder: 需要合并pdf的文件见      str
    11     :param des_file: 合并后的文件地址文件名.pdf  str
    12     :return:
    13     """
    14     file_list = list(Path(src_folder).glob('*.pdf'))
    15     merger = PdfFileMerger()
    16     # print(file_list)
    17     outputPages = 0
    18     for pdf in file_list:
    19         inputfile = PdfFileReader(str(pdf))
    20         merger.append(inputfile)
    21         pagecounts = inputfile.getNumPages()
    22         print(f'{pdf.name}页数:{pagecounts}')
    23         outputPages += pagecounts
    24     merger.write(des_file)
    25     merger.close()
    26     print(f'合并后页数为{outputPages}')
    27     return des_file
    28 
    29 
    30 # 合并事件
    31 def merge():
    32     content = entry1.get()
    33     print(content)
    34     path = Path(content)
    35     if not path.is_dir():
    36         showerror('错误提醒', '输入文件路径错误,请重新输入')
    37     else:
    38         files = path.glob('*.pdf')
    39         files_path = [i.name for i in files if not i.name.startswith("~$")]
    40         back = askokcancel('确认信息',
    41                            f'合并文件夹目录为:{path} 
     文件包括:
    {files_path}')
    42         if back:
    43             if len(files_path) < 2:
    44                 showinfo('提醒', '文件数目少于两个无需合并')
    45             else:
    46                 file_path = mergePdf(str(path), str(path / 'merge.pdf'))
    47                 showinfo('finish', f'完成
    文件目录:{file_path}')
    48 
    49     ...
    50 
    51 
    52 win = Tk()
    53 win.title('合并pdf文件')
    54 win.geometry('300x185+500+300')
    55 Label(win, text='请输入需要合并pdf文件目录:', font=10).pack(pady=10, padx=10, anchor='nw')
    56 entry1 = Entry(win)
    57 entry1.pack(pady=10, padx=10, fill='x')
    58 # 输入合并后pdf文件名
    59 # Label(win, text='合并后文件名:', font=10).pack(pady=10, padx=10, anchor='nw')
    60 # entry2 = Entry(win)
    61 # entry2.pack(pady=10, padx=10, fill='x')
    62 Button(win, text='确定', command=merge, font=10).pack(pady=10, anchor='s')
    63 
    64 win.mainloop()

    可以打包直接使用

  • 相关阅读:
    gitlab 简介
    gitlab安装配置(Ubuntu18和CentOS7)
    CentOS7 安装 vsftpd 服务
    CentOS7.5 系统最小化安装与初始化配置
    ubuntu1604系统初始化
    关于CGI和FastCGI的理解
    CentOS7安装OpenStack(Rocky版)-09.安装Cinder存储服务组件(控制节点)
    CentOS7安装OpenStack(Rocky版)-08.启动一个虚拟机实例
    CentOS7安装OpenStack(Rocky版)-07.安装horizon服务组件(控制节点dashboard)
    CentOS7安装OpenStack(Rocky版)-06.安装Neutron网络服务(控制节点)
  • 原文地址:https://www.cnblogs.com/ZaneEli/p/15122309.html
Copyright © 2011-2022 走看看