当前位置: 首页 > news >正文

python源码:执行pdf合并/分页/图片管理功能

前言

        不知道从何时开始,一些主流软件竟然对pdf合并/分页/图片管理等功能都开启了收费模式,属实是讨人烦了。

        这里给出python代码,实现如标题所述功能。

合并pdf

import PyPDF2def merge_pdfs(input_paths, output_path):# 创建一个 PdfMerger 对象merger = PyPDF2.PdfMerger()# 遍历输入的 PDF 文件路径列表for path in input_paths:# 将每个 PDF 文件添加到合并器中merger.append(path)# 将合并后的 PDF 保存到指定的输出路径merger.write(output_path)# 关闭合并器merger.close()# 定义要合并的 PDF 文件路径列表
input_pdfs = [r'A.pdf', r'B.pdf', r'C.pdf']
# 定义合并后输出的 PDF 文件路径
output_pdf = 'output_folder/output.pdf'# 调用合并函数
merge_pdfs(input_pdfs, output_pdf)

pdf分页 

import PyPDF2def split_pdf(input_pdf_path, output_pdf_path, start_page, end_page):# 打开输入的 PDF 文件with open(input_pdf_path, 'rb') as input_file:# 创建一个 PDF 阅读器对象pdf_reader = PyPDF2.PdfReader(input_file)# 创建一个 PDF 写入器对象pdf_writer = PyPDF2.PdfWriter()# 检查起始页和结束页是否在有效范围内if start_page < 0 or end_page >= len(pdf_reader.pages) or start_page > end_page:print("输入的页码范围无效。")return# 遍历指定的页码范围for page_num in range(start_page, end_page + 1):# 获取当前页page = pdf_reader.pages[page_num]# 将当前页添加到 PDF 写入器中pdf_writer.add_page(page)# 打开输出的 PDF 文件with open(output_pdf_path, 'wb') as output_file:# 将 PDF 写入器中的内容写入到输出文件中pdf_writer.write(output_file)print(f"已成功将第 {start_page + 1} 页到第 {end_page + 1} 页拆分为新的 PDF 文件:{output_pdf_path}")# 示例用法
input_pdf = r'A.pdf'  # 输入的 PDF 文件路径
output_pdf = r'output.pdf'  # 输出的 PDF 文件路径
start_page = 15  # 起始页码
end_page = 20  # 结束页码split_pdf(input_pdf, output_pdf, start_page - 1, end_page - 1)

图片管理

        图片转pdf 

from fpdf import FPDFdef png_to_pdf(png_path, pdf_path):# 创建一个新的PDF文档pdf = FPDF()# 添加一页pdf.add_page()# 将图像添加到PDF中pdf.image(png_path, x=10, y=10, w=180)# 保存PDF文件pdf.output(pdf_path, "F")# 使用示例
png_to_pdf('fecd8073b2f9aefb47d9c3e4aaba2e2.jpg', 'output.pdf')

        pdf图片拆出 

from pdf2image import convert_from_path# 请注意,pdf2image依赖poppler
# 需要在git上拉取(windows):https://github.com/oschwartz10612/poppler-windows/releases/latest
def convert_pdf_to_images(pdf_path, output_folder):images = convert_from_path(pdf_path)for i, image in enumerate(images):image.save(f"{output_folder}/page_{i + 1}.png", "PNG")# 使用示例
convert_pdf_to_images(r"output.pdf", r"save_path")
http://www.lryc.cn/news/573558.html

相关文章:

  • 计算机网络课程设计--基于TCP协议的文件传输系统
  • 案例练习二
  • rom定制系列------红米note11 5G版 MTK芯片强解bl锁修复bug 官方系统 面具root批量线刷版
  • 魂斗罗ost 游戏全合集8GB
  • 微服务网关/nacos/feign总结
  • Mybatis-Plus支持多种数据库
  • 使用模板创建uniapp提示未关联uniCloud问题
  • LeapMotion-PhysicalHandsManager 类详解
  • 【后端】负载均衡
  • 怎么让二级域名绑定到wordpesss指定的页面
  • Linux系统基本操作指令
  • C++指针(二)
  • 【算法】【优选算法】优先级队列
  • 跨个体预训练与轻量化Transformer在手势识别中的应用:Bioformer
  • 告别线程爆炸:我如何用 Spring WebFlux 构建一个端到端响应式应用
  • 编程基础:调用访问
  • CSP-S 模拟赛一总结(T1、T2)
  • Odoo 17 Many2one字段内联编辑完整实现方案
  • 2025最新Python 100个常用函数在线体验项目
  • 微处理器原理与应用篇---计算机系统的性能测试
  • python中学物理实验模拟:凸透镜成像和凹透镜成像
  • Spring-MyBatis基本操作
  • 软件工程期末试卷简答题版带答案(共21道)
  • Typora文档另存与图片迁移的一种思路
  • JAVA锁机制:对象锁与类锁
  • 【好用但慎用】Windows 系统中将所有 WSL 发行版从 C 盘迁移到 非系统 盘的完整笔记(附 异常处理)
  • 百度萝卜快跑携4颗禾赛激光雷达进军迪拜,千辆L4无人车开启全球化战略
  • IEC61850 通信协议测试验证方法详解
  • 人工智能学习51-ResNet训练
  • Spring AOP全面详讲