python-pdf的合并与拆分

server/2024/10/21 7:40:56/

目录

  • 1. 安装PyPDF2
  • 2. pdf合并
  • 3. pdf拆分

1. 安装PyPDF2

python">pip install PyPDF2

pdf_5">2. pdf合并

python">import os
from PyPDF2 import PdfMerger
from datetime import datetime"""
介绍:将 merge_input_folder 文件夹下的所有pdf文件合并成为一个pdf文件使用方法:1.首先在本目录下新建一个 merge_input_folder 文件夹2.将需要合并的pdf文件放入到其中(注意顺序)3.修改 output_file_name 变量的值4.运行代码结果:合并后的文件在 merge_output_folder 目录下
"""cur_path = os.path.dirname(__file__)def merge_pdfs(input_folder, output_pdf_path):merger = PdfMerger()# 遍历输入文件夹中的所有PDF文件,并逐个添加到合并器中for root, _, files in os.walk(input_folder):for filename in files:if filename.endswith(".pdf"):file_path = os.path.join(root, filename)merger.append(file_path)# 将合并后的PDF文件保存到指定路径with open(output_pdf_path, "wb") as output_file:merger.write(output_file)print(f"Merged PDF saved at {output_pdf_path}")def get_output_file_name(output_file_name):formatted_time  = datetime.now().strftime("%Y_%m_%d_%H_%M_%S_")dir_path = cur_path + "/merge_output_folder/"if not os.path.exists(dir_path):os.makedirs(dir_path)return  dir_path + formatted_time + output_file_name + ".pdf"if __name__ == "__main__":# 只写输出文件名即可 ============= 需要修改的地方output_file_name = "name"input_folder = cur_path + "/merge_input_folder"output_pdf_path = get_output_file_name(output_file_name)merge_pdfs(input_folder, output_pdf_path)

pdf_59">3. pdf拆分

python">import os
from PyPDF2 import PdfReader, PdfWriter"""
介绍:将指定路径下的pdf文件, 按照 split_num 的大小进行拆分, 并将拆分后的文件放到指定文件夹使用方法:1.修改 input_file 变量值为待拆分pdf文件的文件位置 (注意斜线的方向的问题)2.运行代码结果:拆分后的文件在 split_output_folder 目录下
"""cur_path = os.path.dirname(__file__)def split_pdf(input_pdf_path, output_pdfs_folder, split_num):# 读取输入的PDF文件input_pdf = PdfReader(input_pdf_path)# 获取输入PDF文件的基本文件名base_name = os.path.splitext(os.path.basename(input_pdf_path))[0]# 分割PDF文件for i in range(0, len(input_pdf.pages), split_num):output_pdf = PdfWriter()end_page = min(i + split_num, len(input_pdf.pages))# 添加页面到输出PDF文件for page_num in range(i, end_page):output_pdf.add_page(input_pdf.pages[page_num])# 写入分割后的PDF文件output_pdf_path = f"{output_pdfs_folder}{base_name}_part_{i + 1}-{end_page}.pdf"with open(output_pdf_path, "wb") as output_file:output_pdf.write(output_file)print(f"Created {output_pdf_path}")def get_output_folder():dir_path = cur_path + "/split_output_folder/"if not os.path.exists(dir_path):os.makedirs(dir_path)return dir_pathif __name__ == "__main__":# 文件名全路径名 ============= 需要修改的地方input_file = """E:/data/2024_04_16_20_10_56_name.pdf"""split_num = 30  # 每多少页进行分隔一次split_pdf(input_file, get_output_folder(), split_num)

http://www.ppmy.cn/server/6154.html

相关文章

redmibook 14 2020 安装 ubuntu

1. 参考博客 # Ubuntu20.10系统安装 -- 小米redmibook pro14 https://zhuanlan.zhihu.com/p/616543561# ubuntu18.04 wifi 问题 https://blog.csdn.net/u012748494/article/details/105421656/# 笔记本电脑安装了Ubuntu系统设置关盖/合盖不挂起/不睡眠 https://blog.csdn.net/…

什么是三高架构

三高架构是指在软件系统设计与开发中,注重解决高并发性、高可用性和高性能的架构设计模式。 高并发性:指系统能够处理大量并发请求的能力。在高并发场景下,系统需要具备有效的并发处理机制,以保证系统能够快速、准确地响应大量并…

【树莓派学习】hello,world!

系统安装及环境配置详见【树莓派学习】系统烧录及VNC连接、文件传输-CSDN博客 树莓派内置python3,可以直接利用python输出。

SQLite作为应用程序文件格式(二十八)

返回:SQLite—系列文章目录 上一篇:SQLite数据库中JSON 函数和运算符(二十七) 下一篇:SQLite—系列文章目录 摘要 具有定义架构的 SQLite 数据库文件 通常是一种出色的应用程序文件格式。 以下是十几个原因: 简化的应用程序开发单文…

基于工程车辆/物流车辆/消防车辆远程通信的车队管理解决方案

交通运输对全球经济至关重要,特别是长途卡车在现今的供应链中发挥着重要作用。目前,货运物流面临许多挑战,包括不断上升的燃料价格和排放污染等问题。由于重型卡车的尺寸和载重量大,这意味着它们产生更多的二氧化碳排放足迹。在国…

03-JAVA设计模式-迭代器模式

迭代器模式 什么是迭代器模式 迭代器模式(demo1.Iterator Pattern)是Java中一种常用的设计模式,它提供了一种顺序访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示的方法。迭代器模式将遍历逻辑从聚合对象中分离出来…

[ LeetCode ] 题刷刷(Python)-第58题:最后一个单词的长度

题目描述 给你一个字符串 s,由若干单词组成,单词前后用一些空格字符隔开。返回字符串中 最后一个 单词的长度。 单词 是指仅由字母组成、不包含任何空格字符的最大子字符串。 示例 示例 1: 输入:s "Hello World" 输出&…

开源博客项目Blog .NET Core源码学习(16:App.Hosting项目结构分析-4)

本文学习并分析App.Hosting项目中前台页面的文章专栏页面和文章详情页面。< 文章专栏页面 文章专栏页面总体上为左右布局&#xff0c;左侧显示文章列表&#xff0c;右侧从上向下为关键词搜索、分类导航、热门文章等内容。整个页面使用了layui中的面包屑导航、表单、模版、流…