Python调用pikepdf模块解密、合并PDF文件(使用tkinter模块绘制GUI)

安装模块

pip install pikepdf

代码

#!/usr/bin/pythonimport os
import pikepdf
from pikepdf import Pdf
from tkinter import *
import tkinter.filedialogdef windows():global rootglobal textroot = Tk()screen_width = root.winfo_screenwidth()  # 计算机屏幕水平分辨率screen_height = root.winfo_screenheight()  # 计算机屏幕垂直分辨率root.geometry('{}x{}+0+0'.format(screen_width, screen_height))root.title('PDF编辑大师')root.state("zoomed") # 窗口最大化frame1 = Frame(root)frame1.pack(fill=BOTH, expand=YES, padx=10, pady=10)btn = Button(frame1, text='解密PDF文件', font=("楷体", 14, "bold"), bg="#AACCCC",width=30, height=2, relief=RAISED, command=askfiles)btn.grid(row=0, column=0, sticky=W, padx=10)btn = Button(frame1, text='解密文件夹', font=("楷体", 14, "bold"), bg='#AACCCC',width=30, height=2, relief=RAISED, command=askdirectory)btn.grid(row=0, column=1, sticky=W, padx=10)btn = Button(frame1, text='合并文件', font=("楷体", 14, "bold"), bg='#AACCCC',width=30, height=2, relief=RAISED, command=askcombinefiles)btn.grid(row=0, column=2, sticky=W, padx=10)btn = Button(frame1, text='清除屏幕信息', font=("楷体", 14, "bold"), bg='#AACCCC',width=30, height=2, relief=RAISED, command=cls)btn.grid(row=0, column=3, sticky=W, padx=10)frame2 = Frame(root)frame2.pack(fill=BOTH, expand=YES, padx=10, pady=10)lb = Label(frame2, font=("楷体", 14), fg="#FF0000", height=1,text="解密PDF文件或文件夹中的所有PDF文件,可以解密许可口令,不能解密文档打开密码。""源文件将被直接覆盖,请在解密前备份PDF文件。")separator = Frame(root, height=2, bd=1, relief="sunken")lb.pack(side=LEFT)separator.pack(fill="x", padx=0, pady=0)frame3 = Frame(root)frame3.pack(fill=BOTH, expand=YES, padx=10, pady=10)text = Text(frame3, font=("仿宋", 14), width=200, height=500,spacing1=5, spacing2=5, undo=True, autoseparators=True)text.tag_config('red', foreground='red', font=("仿宋", 14, 'bold'))text.tag_config('green', foreground='green', font=("仿宋", 14, 'bold'))text.pack(fill=BOTH, expand=NO, padx=0, pady=0)root.mainloop()def askfiles():names = tkinter.filedialog.askopenfilenames(filetypes=[("PDF files", ".pdf")])if names == "":returnfor name in names:unlock_file(name)text_output("解密完毕!\n\n")def askdirectory():name = tkinter.filedialog.askdirectory()if name == "":returnunlock_directory(name)text_output("解密完毕!\n\n")def askcombinefiles():names = tkinter.filedialog.askopenfilenames(filetypes=[("PDF files", ".pdf")])if names == "":returndst = tkinter.filedialog.asksaveasfilename(filetypes=[("PDF files", ".pdf")])if dst == "":returncombine_pdf_files(names, dst)text_output("合并完毕!\n\n")def text_output(string, tag='default'):text.insert(END, string, tag)text.focus_force()text.see(END)text.update()def unlock_file(name):try:pdf = pikepdf.open(name, allow_overwriting_input=True)text_output("解密文件:【{}】:".format(name))pdf.save(name)text_output("{:,}字节。\n".format(os.path.getsize(name)))except:text_output("打开文件:{}时出错...\n".format(name), 'red')def unlock_directory(name = os.path.curdir):text_output("\n解密文件夹: 【{}】的文件...\n".format(name), 'green')itemlist = os.listdir(name)for item in itemlist:item = os.path.join(name, item)if os.path.isdir(item) :unlock_directory(item)if os.path.isfile(item):filename = os.path.splitext(item)if filename[1] == '.pdf':unlock_file(item)def combine_pdf_files(sources, dst):pdf = Pdf.new()for name in sources:try:src = Pdf.open(name)text_output("合并文件:【{}】:{:,}字节...\n".format(name, os.path.getsize(name)))pdf.pages.extend(src.pages)except:text_output("打开文件:{}时出错...\n".format(name), 'red')if os.path.splitext(dst)[1] == "":dst += ".pdf"pdf.save(dst)text_output("完成文件合并,写入{}:{:,}字节。\n".format(dst, os.path.getsize(dst)))def cls():text.delete("1.0", "end")if __name__ == '__main__':windows()

使用说明


解密PDF文件:选择一个或多个PDF文件,“许可口令”将被删除。
解密文件夹:选择一个文件夹,其中的所有PDF文件(包括子文件夹下的所有PDF文件)的“许可口令”都将被删除。
合并文件:可以将一个或多个文件合并到目标PDF文件。

本文为博主原创文章,未经博主允许不得转载。
本文链接:https://blog.csdn.net/weixin_41103006/article/details/128011011
————————————————
版权声明:本文为CSDN博主「太行一粟」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_41103006/article/details/128011011

Python调用pikepdf模块解密PDF文件(使用tkinter模块绘制GUI)相关推荐

  1. Python编程--使用PyPDF解析PDF文件中的元数据

    Python编程–使用PyPDF解析PDF文件中的元数据 元数据 作为一种文件里非常明显可见的对象,元数据可以存在于文档.电子表格.图片.音频和视频文件中.创建这些文件的应用程序可能会把文档的作者.创 ...

  2. 使用Python合并任意多个PDF文件

    封面图片:<Python可以这样学>,ISBN:9787302456469,董付国,清华大学出版社 图书详情(京东): 用书老师可以联系董老师获取配套PPT.源码. =========== ...

  3. Google Chrome 调用FoxitReader预览pdf文件

    Google chrome 默认使用内置的pdf viwer 预览pdf文件. Google Chrome 调用FoxitReader预览pdf文件的设置方法: 将foxitReader安装目录下pl ...

  4. 运用PyPDF2模块,解密PDF文件

    PyPDF2模块介绍-link 写这篇文章的目的: 因为最近需要上传一个解码后的PDF,但该PDF含有过多的个人信息,从私密性考虑,不想用网上免费的解码网站,所以就打算自己写个小程序,完成解码.这里所 ...

  5. python批量解密PDF文件

    用解密PDF pdf_reader.decrypy(密码)总会报错. NotImplementedError: only algorithm code 1 and 2 are supported 原因 ...

  6. python下载网页中的pdf文件_【Python】Python的urllib模块、urllib2模块批量进行网页下载文件...

    由于需要从某个网页上下载一些PDF文件,但是需要下载的PDF文件有几百个,所以不可能用人工点击来下载.正好Python有相关的模块,所以写了个程序来进行PDF文件的下载,顺便熟悉了Python的url ...

  7. Python 解密 pdf 文件

    一,利用pypdf库 批量 解除pdf 的文件的密码.这里选择pypdf4,其它pypdf2,pypdf3等,亦可参考,代码如下: import os from PyPDF4 import PdfFi ...

  8. Python 办公自动化,一键给PDF文件加密,超方便

    作者 | 欣一 来源 | Python爱好者集中营 今天给大家做一个给PDF文件加密的GUI界面(图形用户界面),方便现在的一些上班族白领们使用,尤其是需要给一些比较重要的PDF文件加密的时候,下面我 ...

  9. Python利用PyPDF2库获取PDF文件总页码

    Python中可以利用PyPDF2库来获取该pdf文件的总页码,可以根据下面的方法一步步进行下去: 1.首先,要安装PyPDF2库,利用以下命令即可: pip install PyPDF2 2.接着, ...

最新文章

  1. (未完)httpd进程数查询,prefork模式修改apache最大连接数
  2. 关于一个tomcat里面放2个项目启动报listener错误
  3. 我们为什么必须会git和maven
  4. 了解CMS(Concurrent Mark-Sweep)垃圾回收器
  5. Google Earth 8.0
  6. Shell程序设计 | 基本语法 :变量、I/O、算术运算、条件判断、流程控制、函数
  7. 3、面向对象-继承-多态
  8. 7-5 素数判断 (10 分)
  9. 【机器学习】集成学习(Ensemble Learning)介绍
  10. Unitest框架的使用(三)TestSkip和TestSuite方法
  11. 【编程珠玑】第十二章 取样问题
  12. 计算机网络概述上海电力,上海电力大学2021考研复试计算机网络考试大纲
  13. 《看清你的思维图谱》读书笔记
  14. 微服务+异步工作流+Serverless,Netflix 决定弃用稳定运行7年的旧平台
  15. CDP科普:客户数据中台(CDP)是什么?
  16. python中text格式_python读取各种格式的文本
  17. 【应用层】DNS协议
  18. 使用IKAnalyzer进行中文分词
  19. 高斯混合模型的matlab实现
  20. 必记的13个不定积分公式(详细推导)

热门文章

  1. 深度学习之多层感知器及激活函数
  2. 下载错误:资料无法输出
  3. 2021年度电脑CPU电梯图
  4. 3D游戏建模师到底做什么工作?使用哪些软件?就业前景如何?该选择什么方式学习游戏建模?
  5. 三菱a系列motion软体_宣城三菱MR-J4-11KB4
  6. 微处理器系统结构与嵌入式系统设计笔记(一)
  7. stm32zet6自制简易示波器
  8. 动态规划---例题6.多边形游戏
  9. 语音交互在车载场景中的应用
  10. 高铁动车入库 铁警携犬巡逻检查