练手代码之使用Python实现合并PDF文件

如果你有合并PDF的需要,你会怎么办

我们无所不能的程序员会选择写一个Python代码来实现(谁会这么无聊?是我),如果真的有PDF操作需要,我推荐你使用PDF Expert这个软件哈~

话不多说直接上代码:

import os
import PyPDF2
from tkinter import Tk
from tkinter.filedialog import askopenfilenamesdef combine_pdfs(input_files, output_file):pdf_merger = PyPDF2.PdfMerger()try:for file_path in input_files:if not os.path.exists(file_path):raise FileNotFoundError(f"The file {file_path} does not exist.")with open(file_path, 'rb') as f:pdf_merger.append(f)output_dir = os.path.dirname(output_file)if output_dir and not os.path.exists(output_dir):os.makedirs(output_dir)with open(output_file, 'wb') as f:pdf_merger.write(f)print("合并成功")except Exception as e:print("合并PDF时出现错误:", str(e))raisedef get_file_paths():Tk().withdraw() # 不显示Tkinter的根窗口file_paths = askopenfilenames(filetypes=[("PDF files", "*.pdf")])return file_pathsinput_files = get_file_paths()if len(input_files) < 2:print("请选择至少两个PDF文件进行合并。")
else:# 组合文件命名output_file = "combined_pdfs.pdf"try:combine_pdfs(input_files, output_file)except FileNotFoundError as e:print(e)

运行之后弹窗选择两个PDF文件即可,会自动输出在根目录 

 

结束

By the way,我的博客:https://wcowin.work/ 

欢迎来撩~

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

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

相关文章

Linux操作系统学习:day05

内容来自&#xff1a;Linux介绍 视频推荐&#xff1a;[Linux基础入门教程-linux命令-vim-gcc/g -动态库/静态库 -makefile-gdb调试]( 目录 day0530、删除用户31、添加和删除用户组创建用户组删除用户组 32、修改密码33、使用tar工具进行压缩和解压缩压缩解压缩 34、使用zip u…

增强大型语言模型(LLM)可访问性:深入探究在单块AMD GPU上通过QLoRA微调Llama 2的过程

Enhancing LLM Accessibility: A Deep Dive into QLoRA Through Fine-tuning Llama 2 on a single AMD GPU — ROCm Blogs 基于之前的博客《使用LoRA微调Llama 2》的内容&#xff0c;我们深入研究了一种称为量化低秩调整&#xff08;QLoRA&#xff09;的参数高效微调&#xff0…

单片机第五季-第八课:STM32CubeMx和FreeRTOS

1&#xff0c;FreeRTOS背景介绍 RTOS简介&#xff1a; 实时操作系统&#xff0c;本用于追求实时性的嵌入式系统&#xff0c;典型&#xff1a;ucos/uclinux/vxworks&#xff1b; 特点&#xff1a;中断响应快、一般可嵌套中断、使用实地址、多任务&#xff1b; &#xff08;实…

Qt6视频播放器项目框架代码

视频播放的关键代码如下: 使用Qt6的QMediaPlayer,QVideoWidget实现 void FunnyWidget::initVideo() {player = new QMediaPlayer(this);videoWidget = new QVideoWidget(this);playButton = new QPushButton("Play", this);pauseButton = new QPushButton("…

项目的打包

一:打包到微信小程序 1)vscode打包 2)在微信小程序开发工具中打开路径,上传. 疑问:为什么pnpm bulid:mp-weixin用于打包,pnpm dev:mp-weixin也可生成对应路径下的文件?? 打包的是没有热重载,且打包体积更小. 二:条件编译 vscode可以打包成能在不同平台上运行的代码.但是有…

404、左叶子之和

题解&#xff1a;可以采用后序递归遍历的方式&#xff0c;先将左右子树的左叶子节点值计算出来&#xff0c;最后相加。 当遍历到左叶子节点的父节点时就开始处理&#xff0c;将左叶子节点的值记录下来。 代码如下&#xff1a; class Solution { public:int sumOfLeftLeaves(…

算法金 | 再见!!!梯度下降(多图)

大侠幸会&#xff0c;在下全网同名「算法金」 0 基础转 AI 上岸&#xff0c;多个算法赛 Top 「日更万日&#xff0c;让更多人享受智能乐趣」 接前天 李沐&#xff1a;用随机梯度下降来优化人生&#xff01; 今天把达叔 6 脉神剑给佩奇了&#xff0c;上 吴恩达&#xff1a;机器…

利用 Qwen-VL 进行私有化部署第一个 AI 多模态大模型

Hi~&#xff01;这里是奋斗的小羊&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f4a5;&#x1f4a5;个人主页&#xff1a;奋斗的小羊 &#x1f4a5;&#x1f4a5;所属专栏&#xff1a;C语言 &#x1f680;本系列文章为个人学习…

【profinet】从站开发要点

目录 0、常见缩写及关键字注释 1、profinet简介 2、profinet协议栈 3、profinet数据帧 4、profinet网络解决方案示例 5、Application areas 注&#xff1a;本文主要简述profinet从站开发涉及到的知识点。【不足之处后续慢慢补充】。 0、常见缩写及关键字注释 MRP: Media…

Spring中IOC容器

IoC IOC容器 IoC是一种设计思想&#xff0c;面向对象编程 Spring通过IoC管理所有Java对象的实例化和初始化&#xff0c;控制对象之间依赖关系 将IoC容器管理的Java对象称为Spring Bean&#xff0c;与new创建的对象没有区别 控制反转&#xff08;IoC Inversion of Controle&a…

宏观必读:数智化、气候能源、多极化趋势并存,如何获得转型性增长?

关键词速读&#xff1a; 双转型——创新主导的 “新质生产力”正加速推动中国产业的数字化和绿色低碳“双转型”。 双引擎——企业借助“技术创新”和“生态创新”两大引擎&#xff0c;乘势而上&#xff0c;赢得未来机遇。 生成式 AI 与大模型爆发式发展正在引发计算、开发、交…

《Linux运维总结:prometheus+altermanager+webhook-dingtalk配置文件详解》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、prometheus配置文件 Prometheus的配置文件是prometheus.yml&#xff0c;在启动时指定相关的…

对于补码的个人理解

1. 十进制的取模计算 现在我想要使另一个数加上2后用8取模后也等于1&#xff0c;这个数可以是哪些&#xff1f; 这个问题比较简单&#xff0c;只需要-1加上8的倍数即可 例如&#xff1a; 如果我们想要得到距离-1这个负数最近的一个正数7&#xff0c;直接使用-18即可。反过来想…

【LeetCode刷题】面试题 17.19. 消失的两个数字

1. 题目链接2. 题目描述3. 解题方法4. 代码 1. 题目链接 面试题 17.19. 消失的两个数字 2. 题目描述 3. 解题方法 例子假设&#xff1a; 数组A元素为 &#xff1a;1 &#xff0c;4&#xff0c;5 缺少的元素为&#xff1a;2&#xff0c; 3 那么所有整数就为1 ~ 5&#xff…

天然之选:炯炯侠石斛棒助力儿童视力健康

如今&#xff0c;育儿已成为许多年轻父母心头的一大忧虑。随着小生命的到来&#xff0c;他们不得不调整自己的生活节奏。然而&#xff0c;孩子的成长之路并非一帆风顺。特别是随着科技的进步&#xff0c;电子产品已深入生活的方方面面&#xff0c;如何平衡孩子的学习与娱乐&…

洛谷 P1008 [NOIP1998 普及组] 三连击

题目背景 本题为提交答案题&#xff0c;您可以写程序或手算在本机上算出答案后&#xff0c;直接提交答案文本&#xff0c;也可提交答案生成程序。 题目描述 将 1,2,…,9 共 9 个数分成 3 组&#xff0c;分别组成 3 个三位数&#xff0c;且使这 3 个三位数构成 1:2:3 的比例&…

Google 广告VS Facebook广告:哪个更适合我?2024全维度区别详解

在 Google Ads 和 Facebook Ads 之间进行选择可能是一个艰难的决定。决定哪种方法适合您的业务取决于多种因素&#xff0c;从您愿意为转化支付的费用到管理广告系列所需的时间和人员。在这篇文章中&#xff0c;将解释 Google Ads 和 Facebook Ads 之间的差异&#xff0c;以便您…

移动硬盘接入mac无法复制文件进去怎么办,mac里的文件如何存进移动硬盘

如果要传输的文件数据量比较大&#xff0c;相比于使用U盘&#xff0c;移动硬盘是更多的选择。移动硬盘可存储量大、传输速度快&#xff0c;是实用性比较强的储存设备。不仅是Windows设备&#xff0c;Mac电脑也经常使用到移动硬盘。但有时候&#xff0c;移动硬盘在Mac上不能传文…

MATLAB直方图有关函数的关系

histogram Histogram plot画直方图 histcounts 直方图 bin 计数 histcounts是histogram的主要计算函数。 discretize 将数据划分为 bin 或类别 histogram2 画二元直方图 histcounts2 二元直方图 bin 计数 hist和histc过时了。替换不建议使用的 hist 和 histc 实例 hist → \r…