python批量处理修改pdf内容

 

  1. 将PDF转换为Word:

    • 使用pdf2docx库中的Converter类来进行PDF转换。
    • convert_pdf_to_docx函数接受PDF文件路径和输出的Word文档路径作为参数。
    • 通过调用Converter对象的convert方法将PDF转换为Docx格式。
    • 最后调用close方法关闭Converter对象并保存转换后的文档。
  2. 将Word转换为Excel:

    • 使用docx库打开Word文档。
    • 创建一个新的Excel文件。
    • 遍历Word文档中的表格,逐行读取表格内容,并将其写入Excel文件。
    • 使用openpyxl库保存Excel文件。
  3. 替换Excel中的数据:

    • 使用openpyxl库加载输入的Excel文件。
    • 获取原始数据,并复制一份用于替换。
    • 遍历替换数据的范围,更新特定位置的数据。
    • 创建新的Excel文件,更新数据并保存。
  4. 将Excel转换为Word:

    • 遍历输入文件夹下的所有Excel文件。
    • 为每个Excel文件创建一个新的Word文档。
    • 打开Excel文件并获取活动工作表。
    • 在Word文档中创建一个表格,并将Excel单元格数据写入表格。
    • 调整表格样式和单元格样式,并保存Word文档。
  5. 将Word转换为PDF:

    • 使用docx2pdf库的convert函数将Word文档转换为PDF。
    • 遍历输入文件夹下的所有Word文件,并将其转换为PDF格式。
  6. 流程步骤

 ①初始pdf

 ②变成word

③变成excel

④批量处理更换

⑤转成word

⑥转成pdf

#pdf 转 word
from pdf2docx import Converterdef convert_pdf_to_docx(pdf_path, docx_path):cv = Converter(pdf_path)cv.convert(docx_path, start=0, end=None)cv.close()if __name__ == '__main__':pdf_path = 'C:/Users/wangkejun/Desktop/1/结果1.pdf'  # 输入的 PDF 文件路径docx_path = 'C:/Users/wangkejun/Desktop/1/结果2.docx' # 输出的 Word 文档路径convert_pdf_to_docx(pdf_path, docx_path)print('转换完成!')# word 转 excel
import docx
from openpyxl import Workbook# 打开 Word 文档
doc = docx.Document(r'C:/Users/wangkejun/Desktop/1/结果2.docx')# 创建一个新的 Excel 文件
workbook = Workbook()
sheet = workbook.active# 遍历 Word 文档中的表格
for table in doc.tables:for row in table.rows:# 按行遍历表格并将内容写入 Excel 文件data = []for cell in row.cells:data.append(cell.text)sheet.append(data)# 保存 Excel 文件
workbook.save(r'C:/Users/wangkejun/Desktop/1/结果3.xlsx')import os
from openpyxl import load_workbookdef replace_data_in_excel(input_file, output_folder):# 加载输入的 Excel 表wb = load_workbook(input_file)sheet = wb.active# 获取原始数据data = []for row in sheet.iter_rows(values_only=True):data.append(list(row))# 替换数据for i in range(1, 39):# 复制原始数据new_data = [row[:] for row in data]# 替换特定位置的数据new_data[1][1] = f"{i}/38"# 创建新的 Excel 表new_wb = load_workbook(input_file)new_sheet = new_wb.active# 更新新的 Excel 表的数据new_sheet.delete_rows(1, new_sheet.max_row)for row in new_data:new_sheet.append(row)# 保存新的 Excel 表output_file = os.path.join(output_folder, f"{i}.xlsx")new_wb.save(output_file)print("生成完成!")if __name__ == '__main__':input_file = r'C:/Users/wangkejun/Desktop/1/结果3.xlsx'  # 输入的 Excel 表路径output_folder = r'C:/Users/wangkejun/Desktop/1'  # 输出的文件夹路径replace_data_in_excel(input_file, output_folder)#excel 转 word
import os
import openpyxl
from docx import Document
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT, WD_ALIGN_VERTICALdef convert_excel_to_word(input_folder, output_folder):# 遍历输入文件夹下的所有 Excel 文件for file_name in os.listdir(input_folder):if file_name.endswith('.xlsx') or file_name.endswith('.xls'):# 构造输出文件路径output_file = os.path.join(output_folder, f"{file_name.split('.')[0]}.docx")# 创建一个新的 Word 文档doc = Document()# 打开 Excel 文件file_path = os.path.join(input_folder, file_name)workbook = openpyxl.load_workbook(file_path)sheet = workbook.active# 在 Word 文档中创建一个表格table = doc.add_table(rows=1, cols=sheet.max_column)table.autofit = False# 设置表格样式table.style = 'Table Grid'# 将 Excel 单元格数据写入 Word 表格for row in sheet.iter_rows(values_only=True):new_row = table.add_row().cellsfor i, cell_value in enumerate(row):new_row[i].text = str(cell_value)# 调整单元格样式for row in table.rows:for cell in row.cells:cell.vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTERcell.paragraphs[0].paragraph_format.alignment = WD_ALIGN_VERTICAL.CENTER# 保存 Word 文档doc.save(output_file)print("转换完成!")if __name__ == '__main__':input_folder = r'C:/Users/wangkejun/Desktop/1/excel'  # 输入的文件夹路径output_folder = r'C:/Users/wangkejun/Desktop/1/word'  # 输出的 Word 文件夹路径convert_excel_to_word(input_folder, output_folder)# #word 转 pdf
from docx2pdf import convert
import osdef batch_word_to_pdf(input_folder, output_folder):# 遍历输入文件夹下的所有 Word 文件for file_name in os.listdir(input_folder):if file_name.endswith('.docx'):# 构造输出文件路径output_file = os.path.join(output_folder, f"{file_name.split('.')[0]}.pdf")# 调用 docx2pdf 库的 convert 函数将 Word 文档转换为 PDFconvert(os.path.join(input_folder, file_name), output_file)print("转换完成!")if __name__ == '__main__':input_folder = r'C:/Users/wangkejun/Desktop/1/word'  # 输入的文件夹路径output_folder = r'C:/Users/wangkejun/Desktop/1/pdf'  # 输出的 PDF 文件夹路径batch_word_to_pdf(input_folder, output_folder)

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

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

相关文章

一文读懂RabbitMQ核心概念及架构

1. RabbitMQ简介 RabbitMQ是一个开源的消息代理软件,实现了高级消息队列协议(AMQP)。它是一个应用程序对应用程序的通信方法,基于消费-生产者模型。在RabbitMQ中,消息的生产者将消息发布到队列中,而消息的…

【zlm】针对单个设备的码率的设置

目录 代码修改 实验数据一 实验数据二 同时拉一路视频后 修改记录 使用方法 各库实操 代码修改 要被子类引用 ,所以放在protected 不能放private 下面的结论,可以在下面的实验数据里引用。“同时拉一路视频后” 实验数据一 https://10.60.3.45:1…

共话 AI for Science | 北京大学王超名:BrainPy,迈向数字化大脑的计算基础设施

导读: 2023 和鲸社区年度科研闭门会以“对话 AI for Science 先行者,如何抓住科研范式新机遇”为主题,邀请了多个领域的专家学者共同探讨人工智能在各自领域的发展现状与未来趋势。 在脑科学领域,数字化大脑通过数学模型和计算机…

Matplotlib Mastery: 从基础到高级的数据可视化指南【第30篇—python:数据可视化】

文章目录 Matplotlib: 强大的数据可视化工具1. 基础1.1 安装Matplotlib1.2 创建第一个简单的图表1.3 图表的基本组件:标题、轴标签、图例 2. 常见图表类型2.1 折线图2.2 散点图2.3 条形图2.4 直方图 3. 图表样式与定制3.1 颜色、线型、标记的定制3.2 背景样式与颜色…

【JavaEE进阶】 MyBatis使用XML实现增删改查

文章目录 🎍前言🍀配置连接字符串和MyBatis🍃写持久层代码🚩添加mapper接⼝🚩添加UserInfoXMLMapper.xml🚩单元测试 🌴增(Insert)🚩返回⾃增id 🎋删(Delete)&…

JAVA_LinkedList添加元素源码分析(jdk17)

目录 先看一些重要的源码: 开始分析: 底层数据结构是双链表,查询慢,首尾操作是极快的,所以多了很多首尾操作的特有 Api: addlast 和 add 一样元素默认添加到末尾,了解即可。 先看一些重要的源…

vue3源码(二)reactiveeffect

一.reactive与effect功能 reactive方法会将对象变成proxy对象&#xff0c; effect中使用reactive对象时会进行依赖收集&#xff0c;稍后属性变化时会重新执行effect函数。 <div id"app"></div><script type"module">import {reactive,…

web开发学习笔记(14.mybatis基于xml配置)

1.基本介绍 2.基本使用 在mapper中定义 在xml中定义&#xff0c;id为方法名&#xff0c;resultType为实体类的路径 在测试类中写 3. 动态sql&#xff0c;if和where关键字 动态sql添加<where>关键字可以自动产生where和过滤and或者or关键字 where关键字可以动态生成whe…

C++面试:跳表

目录 跳表介绍 跳表的特点&#xff1a; 跳表的应用场景&#xff1a; C 代码示例&#xff1a; 跳表的特性 跳表示例 总结 跳表&#xff08;Skip List&#xff09;是一种支持快速搜索、插入和删除的数据结构&#xff0c;具有相对简单的实现和较高的查询性能。下面是跳表…

常用芯片学习——HC244芯片

HC573 三态输出八路缓冲器|线路驱动器 使用说明 SNx4HC244 八路缓冲器和线路驱动器专门设计用于提高三态存储器地址驱动器、时钟驱动器以及总线导向接收器和发送器的性能和密度。SNx4HC244 器件配备两个具有独立输出使能 (OE) 输入的 4 位缓冲器和驱动器。当 OE 为低电平时&a…

【AI视野·今日NLP 自然语言处理论文速览 第七十五期】Thu, 11 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Thu, 11 Jan 2024 Totally 36 papers &#x1f449;上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Leveraging Print Debugging to Improve Code Generation in Large Language Models Authors Xueyu Hu, Kun K…

php基础学习之代码框架

一&#xff0c;标记 脚本标记&#xff08;已弃用&#xff09;&#xff1a;<script language"php"> php代码 </script> 标准标记&#xff1a;<?php php代码 ?> 二&#xff0c;基础输出语句 不是函数&#xff0c;…

行业分析|中国人工智能发展的优势与差距

​人工智能&#xff0c;被誉为第四次工业革命的催化剂&#xff0c;吸引着发达国家和众多科技公司大举投入研发。我国积极构筑人工智能发展的先发优势&#xff0c;党的二十大报告提出推动战略性新兴产业集群&#xff0c;构建一系列新的增长引擎&#xff0c;包括信息技术、人工智…

QT发送request请求

时间记录&#xff1a;2024/1/23 一、使用步骤 &#xff08;1&#xff09;pro文件中添加network模块 &#xff08;2&#xff09;创建QNetworkAccessManager网络管理类对象 &#xff08;3&#xff09;创建QNetworkRequest网络请求对象&#xff0c;使用setUrl方法设置请求url&am…

MySQL 8.3 发布, 它带来哪些新变化?

1月16号 MySQL 官方发布 8.3 创新版 和 8.0.36 长期支持版本 (该版本 没有新增功能&#xff0c;更多是修复bug )&#xff0c;本文基于 官方文档 说一下 8.3 版本带来的变化。 一 增加的特性 1.1 GTID_NEXT 支持增加 TAG 选项。 之前的版本中 GTID_NEXTUUID:number &#xff…

scrapy框架核心知识Spider,Middleware,Item Pipeline,scrapy项目创建与启动,Scrapy-redis与分布式

scrapy项目创建与启动 创建项目 在你的工作目录下直接使用命令: scrapy startproject scrapytutorial运行后创建了一个名为scrapytutorial的爬虫工程 创建spider 在爬虫工程文件内&#xff0c;运行以下命令&#xff1a; scrapy genspider quotes创建了名为quotes的爬虫 …

超融合系统疑难故障定位与解决实践 3 例(含信创技术栈)

当 IT 系统出现故障&#xff0c;问题定位往往是运维人员最头疼的环节。尤其是超融合系统&#xff0c;由于整体涉及的技术栈比较复杂&#xff0c;且有越来越多的用户基于信创环境进行部署&#xff0c;非常考验厂商和技术人员的专业能力&#xff1a;厂商研发和售后工程师不仅应能…

【C/C++】C/C++编程——C++ 开发环境搭建

C的开发环境种类繁多&#xff0c;以下是一些常见的C 集成开发环境&#xff1a; AppCode &#xff1a;构建与JetBrains’ IntelliJ IDEA 平台上的用于Objective-C&#xff0c;C,C&#xff0c;Java和Java开发的集成开发环境CLion&#xff1a;来自JetBrains的跨平台的C/C的集成开…

天津大数据培训班推荐,数据分析过程的常见错误

大数据”是近年来IT行业的热词&#xff0c;目前已经广泛应用在各个行业。大数据&#xff0c;又称海量信息&#xff0c;特点是数据量大、种类多、实时性强、数据蕴藏的价值大。大数据是对大量、动态、能持续的数据&#xff0c;通过运用分析、挖掘和整理&#xff0c;实现数据信息…

keil5 查看stm32 寄存器的值

1 查看芯片内部寄存器的值&#xff0c;首先是在仿真状态下&#xff0c;首先仿真&#xff0c;程序运行。 2 点击菜单栏的 View -> System viewer &#xff0c;右侧便会出现芯片的所有寄存器(如果没有&#xff0c;需要添加)&#xff0c;点击要查看的寄存器&#xff0c;便会出…