Python脚本:用py处理PDF的五大功能

一、代码

【第三方库】3个

【Py版本】3.9

【使用前提】关闭所有的word文档

import os
from datetime import datetime
from docx2pdf import convert
from pdf2docx import parse
from PyPDF2 import PdfMerger
from PyPDF2 import PdfReader,PdfWriter#将文件夹中的所有Word文档批量转换为PDF
def wordtopdf(url):if not os.path.exists(url):return Falseresult=convert(url)#若满足条件"result==None"则表明转换成功return result==None#将文件夹中的所有PDF批量转换为Word文档
def pdftoword(url):if not os.path.exists(url):return Falseall_files_successful = True  # 假设所有文件都成功转换for root, dirs, files in os.walk(url):for file in files:if file.endswith(".pdf"):pdf_file_path = os.path.join(root, file)result = parse(pdf_file_path)if result is not None:  # 转换失败all_files_successful = Falsebreak  # 如果有一个文件转换失败,就跳出内层循环return all_files_successful#合并指定路径的pdf文档(顺序:01 02 03开头文件名依次排序)
def mergepdf(url):if not os.path.exists(url):return Falsemerger = PdfMerger()output_path=url+f"\\合并pdf_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf"#输出路径# 遍历文件夹下的所有PDF文件并合并for root, dirs, files in os.walk(url):for file in files:if file.endswith(".pdf"):pdf_file_path = os.path.join(root, file)merger.append(pdf_file_path)# 将合并后的PDF保存到指定输出路径merger.write(output_path)merger.close()return True#提取pdf的图像
def pdfimages(pdfurl):if not os.path.exists(pdfurl):return Falsereader = PdfReader(pdfurl)all = len(reader.pages) #返回pdf有多少页count = 0for i in range(0,all):page = reader.pages[i]for image_file_object in page.images:with open(f"{os.path.dirname(pdfurl)}/图{count+1}_{datetime.now().strftime('%Y%m%d%H%M%S')}.png", "wb") as fp:fp.write(image_file_object.data)count += 1return True# 在PDF文件中加水印函数
def pdfcreatewater(pdfurl, pdf_watermark):if not os.path.exists(pdfurl) or not os.path.exists(pdf_watermark):return False# 把水印的文件读入watermark = PdfReader(pdf_watermark)# 取出水印文件的第1页waterpage = watermark.pages[0]# 读入要加入水印的PDF文件vreader = PdfReader(pdfurl)# 取得要加入水印的文件的页数n = len(vreader.pages)# print(n)# 生成一个PDF文件写对象vwriter = PdfWriter()# 通过循环给第一页加上水印for i in range(n):# 取得PDF文件的一页onepage = vreader.pages[i]# 通过mergePage将水印加到该页面onepage.merge_page(waterpage)# 在写对象中加入一页vwriter.add_page(onepage)# 打开最终形成的包含水印的文件with open(f"{os.path.dirname(pdfurl)}/合成水印_{datetime.now().strftime('%Y%m%d%H%M%S')}.pdf", 'wb') as f:# 通过写对象写到文件中vwriter.write(f)return True

二、附录:如何为PDF添加水印

第一步,打开word,按以下步骤添加水印

 二、若水印不够多,则双击页眉,可以拖拽水印

【注意】水印背景是透明的不准出现白色,若有覆盖情况请检查水印文件

【效果】 

 三、附录:如何设置合并顺序

按顺序命名即可,例如"01xxx","02xxx","03xxxx"…………

四、打包为GUI程序(Pyinstaller PyQt5)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/282266.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++语言学习(二)—— C++语言的基本知识

目录 一、面向对象的三个核心概念 二、C语言中的I/O口 三、C语言中的数据类型​​​​​​​ 3.1 逻辑类型 3.2 引用类型 3.2.1 引用作为函数参数 3.2.2 引用作为函数返回值 3.2.3 引用作为类成员 3.3 类类型 四、 C语言中的内联函数 五、 函数重载 六、 带默认形参…

四、分布式锁之自定义分布式锁

1、基本原理和实现方式对比 分布式锁:满足分布式系统或集群模式下多个进程可见并且互斥的锁。分布式锁的核心思想就是多线程都使用同一把锁,实现程序串行执行。 分布式锁需要具备的条件: 特性含义可见性多个线程都能感知到变化互斥性分布…

数据库系统概论-第16章 数据仓库与联机分析处理技术

概念性的介绍,一略而过,不重要。 16.1 数据仓库技术 16.2 联机分析处理技术 16.3 数据挖掘技术 16.4 大数据时代的新型数据仓库 16.5 小结

G - Find a way

题目分析 1.双重bfs,遍历两个起点求最短路再计算总和即可 2.唯一的坑点在于对于一个KFC&#xff0c;两人中可能有一个到不了&#xff0c;所以还要对到不了的点距离做处理 #include <bits/stdc.h> using namespace std; using ll long long; const int N 220;struct pos…

Linux/Ubuntu/Debian从控制台启动程序隐藏终端窗口

如果你想从终端运行应用程序但隐藏终端窗口. 你可以这样做&#xff1a; 在后台运行&#xff1a; 你只需在命令末尾添加一个与号 (&) 即可在后台运行它。 例如&#xff1a; your_command &将 your_command 替换为你要运行的命令。 这将在后台启动该命令&#xff0c…

Three.js基础入门介绍——【毕业季】Three.js动态相册

前言 岁月匆匆&#xff0c;又是一年毕业季&#xff0c;这次做个动态相册展示图片&#xff0c;放些有意思的内容&#xff0c;一起回忆下校园生活吧。 预期效果 相册展示和点选切换&#xff0c;利用相机旋转和移动来实现一个点击切图平滑过渡的效果。 实现流程 基本流程 1、搭…

【python】python汽车效能数据集—回归建模(源码+数据集)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

【学习】软件测试行业未来的发展趋势预测

近年来&#xff0c;随着中国数字经济的蓬勃发展&#xff0c;软件测试行业也迎来了新的春天。从早期的手工测试到自动化测试&#xff0c;再到持续集成和持续交付&#xff0c;中国的软件测试行业经历了快速的发展和变革。各行各业均对软件测试提出了更高的要求&#xff0c;尤其在…

将数据转换成xml格式的文档并下载

现在有一个实体类对象的集合&#xff0c;需要将它们转换为xml文档&#xff0c;xml文档就是标签集合的嵌套&#xff0c;例如一个学生类&#xff0c;有姓名、年龄等&#xff0c;需要转换成一下效果&#xff1a; <student><age>14</age><name>张三</na…

【Java】Oracle发布Java22最新版本

甲骨文&#xff08;ORACLE&#xff09;已经于2023年3月19日正式发布了最新版本的JDK&#xff0c;版本号&#xff1a;22 根据官方声明&#xff0c;Java 22 (Oracle JDK 22) 在性能、稳定性和安全性方面进行了数千种改进&#xff0c;包括对Java 语言、其API 和性能&#xff0c;以…

docker 哲学 - 网络桥接器、容器网络接口 、容器间的通信方式

1、解释 docker0 veth eth 2、vethXX 和 ethXX 是肯定一一对应吗 比如 eth1 对应 veth1 3、如果 A容器使用 默认创建方式 。定义他内部网络为 eth0&#xff0c;容器B使用 --network 连上 已创建的网络 172.89.2.1 。此时假设 B的 ip是 172.89.2.2 &#xff0c;容器网络接口是 e…

Godot 学习笔记(4):一切以场景为中心

文章目录 前言场景搭建新建子场景最简单的按钮事件 手动控制场景手动加载场景添加多个场景对象更快速的获取脚本对象 删除多个场景对象脚本命名的问题 总结 前言 Godot的场景是C#与Godot最后的中间连接。我们解决了场景的加载&#xff0c;我们基本可以保证C#和godot之间的彻底…

C++初阶:vector相关练习

目录 1. 只出现一次的数2. 杨辉三角3. 删除有序数组中的重复项4. 只出现一次的数II5. 只出现一次的数III6. 数组中出现次数超过一半的数7. 电话号码的字母组合&#xff08;多叉树遍历&#xff09; 1. 只出现一次的数 题目信息&#xff1a; 题目链接&#xff1a; 只出现一次的数…

工程信号的去噪和(分类、回归和时序)预测

&#x1f680;【信号去噪及预测论文代码指导】&#x1f680; 还为小论文没有思路烦恼么&#xff1f;本人专注于最前沿的信号处理与预测技术——基于信号模态分解的去噪算法和深度学习的信号&#xff08;回归、时序和分类&#xff09;预测算法&#xff0c;致力于为您提供最精确、…

ruoyi-nbcio-plus基于vue3的flowable增加开始节点的表单绑定修改

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码&#xff1a; https://gitee.com/nbacheng/ruoyi-nbcio 演示地址&#xff1a;RuoYi-Nbcio后台管理系统 http://122.227.135.243:9666/ 更多nbcio-boot功能请看演示系统 gitee源代码地址 后端代码&#xff1a…

java.lang.String final

关于String不可变的问题&#xff1a;从毕业面试到现在&#xff0c;一个群里讨论的东西&#xff0c;反正码农面试啥都有&#xff0c;这也是我不咋喜欢面试代码&#xff0c;因为对于我而言&#xff0c;我并不喜欢这些面试。知道或不知道基本没啥含氧量&#xff0c;就是看看源代码…

蓝桥杯刷题(十三)

1.煤球数目 代码 cnt ans 0 start 1 a [] while cnt<100:ansstartstart 1t ansstartcnt1a.append(ans) print(sum(a))2.奖券数目 代码 def f(x)->bool:while x:if x%104:return Falsex//10return True ans 0 for i in range(10000,100000):if f(i):ans1 print(a…

二叉搜索树(二叉排序树)(含力扣相关题及题解)

文章目录 二叉搜索树&#xff08;二叉排序树&#xff09;1、二叉搜索树概念2、二叉搜索树的操作2.1、二叉搜索树的查找2.2、二叉搜索树的插入2.2、二叉树的删除 3、二叉搜索树的实现&#xff08;含递归版本&#xff09;4、二叉搜索树的应用4.1、K模型4.2、KV模型 5、二叉搜索树…

C语言例:设 int x; 则表达式 (x=4*5,x*5),x+25 的值

代码如下&#xff1a; #include<stdio.h> int main(void) {int x,m;m ((x4*5,x*5),x25);printf("(x4*5,x*5),x25 %d\n",m);//x4*520//x*5100//x2545return 0; } 结果如下&#xff1a;

拌合楼管理系统开发(十) 不谈技术只谈管理之大宗物资虚假贸易

前言:不谈技术只谈管理 大宗物资往往都是虚假贸易的重灾区,多年前规模就是面子的口号下,一大批国央企挖空心思做大规模,开展了一大批虚假贸易,同时为了面上的合规性,往往会有三方甚至更多方进入到整个链条中,钱货在这个链条中流转,甚至有些就是钱在流转,如果整个链条有一个环节…