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

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

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

话不多说直接上代码:

import os
import PyPDF2
from tkinter import Tk
from tkinter.filedialog import askopenfilenames

def 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))
        raise

def get_file_paths():
    Tk().withdraw() # 不显示Tkinter的根窗口
    file_paths = askopenfilenames(filetypes=[("PDF files", "*.pdf")])
    return file_paths

input_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/ 

欢迎来撩~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高通安卓12-OTA 升级

1.OTA介绍 OTA 英文全称是 Over-the-Air Technology&#xff0c;即空间下载技术的意思。 OTA 升级是 Android 系统提供的标准软件升级方式。它功能强大&#xff0c;可以无损失升级系统&#xff0c;主 要通过网络[例如 WIFI、3G]自动下载 OTA 升级包、自动升级&#xff0c;但…

NeRF从入门到放弃6:两种OpenCV去畸变模型

针孔相机和鱼眼相机的去畸变模型是不一样的。 针孔相机的畸变参数有12个&#xff0c;k1~k6是径向畸变参数&#xff0c;p1 p2是切向畸变&#xff0c;s1s4&#xff1b;而鱼眼相机是等距模型&#xff0c;畸变参数只有4个k1k4。 针孔相机 畸变分为径向畸变和切向畸变。 把相机平…

高中数学:数列-an和Sn混合的题型处理

一、核心思想 题目一般会给我们一个或几个等式作为条件&#xff0c;其中&#xff0c;含有an和Sn关联的式子 那么&#xff0c;如果&#xff0c;题目需要我们求an&#xff0c;我们就想办法用其他条件消除Sn即可。 反之&#xff0c;求Sn&#xff0c;则用其他条件消除an即可。 二…

k8s volcano + deepspeed多机训练 + RDMA ROCE+ 用户权限安全方案【建议收藏】

目录 一、k8s环境配置 1.安装gpu-operator 2. 安装 rdma-shared-plugin 3. 安装volcano调度器 4. 创建research rbac认证 二、宿主机环境配置 1. 安装docker 客户端 2. 创建系统用户 3. 修改docker /etc/docker/daemon.json 文件如下 4. 修改系统 /etc/subuid 三、制…

APP终极瘦身方案

具体可参见 github.com/shwenzhang/… 优化META-INF MANIFEST.MF&#xff1a;是摘要文件&#xff0c;程序会遍历apk包中所有的文件&#xff0c;对非文件夹、非签名文件的文件&#xff0c;逐个编码生成摘要信息&#xff0c;并记录于此。如果逆向修改了任何文件&#xff0c;那么…

异地数据中心的数据实时同步,该怎样智能化实现?

为了提高系统的可用性和容错性&#xff0c;越来越多的企业和机构采用两地三中心方案等来进行异地数据中心的建设。数据中心建立后&#xff0c;数据需要同步至总部或其他数据中心及系统&#xff0c;以确保数据的冗余性、可用性、可靠性和一致性。在分布式系统、云计算、容灾备份…

游戏工厂:AI(AIGC/ChatGPT)与流程式游戏开发

游戏工厂&#xff1a;AI&#xff08;AIGC/ChatGPT&#xff09;与流程式游戏开发 码客 卢益贵 ygluu 关键词&#xff1a;AI&#xff08;AIGC、ChatGPT、文心一言&#xff09;、流程式管理、好莱坞电影流程、电影工厂、游戏工厂、游戏开发流程、游戏架构、模块化开发 一、前言…

3D开发工具HOOPS为BIM应用提供支持:复杂大模型实现Web端轻量化!

在数字化转型的浪潮中&#xff0c;Tech Soft 3D以其HOOPS SDK工具包&#xff0c;为软件开发人员提供了强大的支持。这一工具包不仅支持Windows、Linux、OSX和移动平台等多样化的操作系统&#xff0c;还使得开发人员能够构建出庞大而复杂的建筑和BIM应用程序。HOOPS SDK的多格式…

RIP动态路由配置

1、搭建网络 搭建拓扑、规划IP地址、划分网段、设置端口 2、配置交换机&#xff0c;路由器 三层交换机配置 Switch>enable Switch#conf t Enter configuration commands, one per line. End with CNTL/Z. Switch(config)#hostname S3560S3560(config)#vlan 10 S3560(con…

fot循环语句

概念&#xff1a; 循环是一种重复执行一段代码的结构&#xff0c;只要满足循环的条件&#xff0c;会一种执行这个代码。 循环条件&#xff1a;在一定范围内&#xff0c;按照指定的次数来执行循环 循环体&#xff1a;在指定的次数内&#xff0c;执行的命令序列。只要条件满足…

GD32F4xx 移植agile_modbus软件包与电能表通信

目录 1. agile_modbus1.1 简介1.2 下载2. agile_modbus使用2.1 源码目录2.2 移植3. 通信调试3.1 代码3.3 通信测试1. agile_modbus 1.1 简介 agile_modbus是一个轻量级的Modbus协议栈,主要特点: 支持RTU和TCP协议,采用纯C语言开发,不涉及任何硬件接口,可直接在任何形式的…

2024年【N1叉车司机】考试及N1叉车司机考试题库

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 N1叉车司机考试是安全生产模拟考试一点通总题库中生成的一套N1叉车司机考试题库&#xff0c;安全生产模拟考试一点通上N1叉车司机作业手机同步练习。2024年【N1叉车司机】考试及N1叉车司机考试题库 1、【多选题】《中…

一站式实时数仓Hologres整体能力介绍

讲师&#xff1a;阿里云Hologres PD丁烨 一、产品定位 随着技术的进步&#xff0c;大数据正从规模化转向实时化处理。用户对传统的T1分析已不满足&#xff0c;期望获得更高时效性的计算和分析能力。例如实时大屏&#xff0c;城市大脑的交通监控、风控和实时的个性化推荐&…

计算机专业:昔日万金油,明日科技潮头的弄潮儿

高考后的十字路口&#xff1a;计算机专业&#xff0c;依旧闪耀吗&#xff1f; 随着2024年高考的尘埃落定&#xff0c;数百万青春洋溢的脸庞再次凝视着未来的迷雾&#xff0c;试图在繁星点点的专业宇宙中找到那颗最亮的星——计算机科学与技术。长久以来&#xff0c;计算机专业…

如何在Windows 11和10上清除更新缓存?这里提供了几种方法

​Windows 11和Windows 10都可以非常轻松地清除Windows更新缓存。可以使用图形方法或命令行选项删除保存的更新文件。我们将向你展示你的可用选项。 为什么要清除Windows更新缓存 你可能希望清除Windows更新缓存的原因有很多。 你可能在查找或安装更新时遇到问题,清除缓存通…

ansible 模块进阶及变量

yum 模块进阶 - name: install pkgs hosts: webservers tasks: - name: install web pkgs # 此任务通过yum安装三个包 yum: name: httpd,php,php-mysqlnd state: present # 根据功能等&#xff0c;可以将一系列软件放到一个组中&#xff0c;安装软件包组&#xff0c;将会把很…

IK分词器---Elasticsearch(standard、ik_smart、ik_max_word、拓展词典---ik_max_word)

IK分词器 Elasticsearch的关键就是倒排索引&#xff0c;而倒排索引依赖于对文档内容的分词&#xff0c;而分词则需要高效、精准的分词算法&#xff0c;IK分词器就是这样一个中文分词算法。 1.4.1.安装IK分词器 方案一&#xff1a;在线安装 运行一个命令即可&#xff1a; do…

稳态与敏态业务阶段

稳态业务就是比如你登录学校的图书馆教务处这些业务系统 用户数量和数据基本上不会发生太大的变化 业务系统的更新也不是很频繁&#xff0c;比较方便资源的采购 敏态业务就是比如我开发一个应用上线了&#xff0c;我不知道有多少用户和数量&#xff0c;无法预估 这就没办法…

ru俄罗斯域名如何申请SSL证书?

我们日常看到的都是com这种国际域名比较普遍&#xff0c;尤其是主流网站&#xff0c;主要原因考虑的其通用性&#xff0c;那么对于地方性的域名大家很少看到&#xff0c;比如俄罗斯国家域名.ru大家还是有些陌生的&#xff0c;但要说中国.CN域名那你就很熟悉了。 有用户在申请过…

python子类调用其他.py文件的父类

main.py需要使用os.py中的构造类。 os.py中定义了一个Ui_MainWindow类 在main.py中定义了一个MyMainWindow子类&#xff0c;传入两个父类的变量名 super(Ui_MainWindow, self).__init__()super() super() 是一个内置函数&#xff0c;用于返回一个代表父类的对象&#xff0c;…