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

4.1-python操作wrod/pdf 文件

1.读取word文件

首先安装软件包  pip3 install python-docx 

from docx import Documentimport os path = os.path.join(os.getcwd(),'你的文档名字.docx')# 加载文档
doc = Document(path)# 遍历数据
for p in doc.paragraphs:print(p.text)# 遍历文档中所有表格
for t in doc.tables:for row in t.rows:_row_str = ' 'for cell in row.cells:  # 遍历每一行的每一个格子_row_str = _row_str + cell.text + '|'print(_row_str)

2. 简历筛选的例子

class ReadDoc(object):def __init__(self,path):self.doc = Document(path)self.p_text = ''self.table_text = ''def get_patra(self):for para in self.doc.paragraphs:self.p_text += para.text + '\n'return self.p_textdef get_table(self):for table in self.doc.tables:for row in table.rows:for cell in row.cells:self.table_text += cell.text +'/'return self.table_textdef search_word(path,targets):# 获得所有文件路径result = glob.glob(path)# 定义结果列表final_result = []# 遍历所有文件for file in result:# 定义是否存在于targets中的标记is_use = True# 如果是文件if os.path.isfile(file):# 如果是docx文件if file.endswith('docx'):# 实例化ReadDoc类 获得段落和表格文本doc = ReadDoc(file)p_text = doc.get_patra()# print(p_text)t_text = doc.get_table()# print(t_text)all_text = p_text + t_text# 循环遍历每一个要查找的关键字for target in targets:# 如果目标词不在文件中if target not in all_text:# 标记为不合适文件is_use = False# 跳出循环breakif not is_use:# 不合适文件跳过本次循环continue# 合适文件加入结果列表final_result.append(file)return final_result # 返回结果列表if __name__ == '__main__':path = os.path.join(os.getcwd(),'*')targets = ['python','golang']res = search_word(path,targets)print(res) # 输出结果列表

3. 生成word文件

from docx import Document
from docx.shared import Inchesdoc = Document()# 添加标题
# 参数1 标题内容
# 参数2:标题级别0-9 default=1 字号递减 
title = doc.add_heading("My Title",0)# 追加标题
title.add_run("123")# 添加段落
# 参数1 段落内容
p = doc.add_paragraph("嘿嘿嘿")
p.add_run('fjdsaklfjalkfjakls')# 添加图片
# 参数1 图片路径
# 参数2 宽度doc.add_picture("1.jpg",width=Inches(2))# 添加表格
# 创建列表存放表头
table_title = ["name","age","sex"]
table = doc.add_table(rows=1,clos=3) # 初始化表格 一行三列
table.style = "Light List Accent 1" # 表格样式# 给表格添加表头
for i in range(len(table_title)):table.cell(0,i).text = table_title[i]# 构建表体数据
data = [("方杰","76","man"),("哥斯拉","1000",'master'),("金刚","900",'master')
]# 将标题数据赋值给表格
for d in data:row_cells = table_add_row().cells # 添加行并且获得行中的单元格for i in range(len(d))row_cells[i].text= d[i]  # 给单元格赋值
# 添加分页
doc.add_page_break()
title1 = doc.add_heading("My Title2",0)# 保存worddoc.save("test.docx")

4. 生成pdf文件

首先下载 pip3 install pdfkit

pdfplumber  还有这个
wkhtmltopdf  这个地址 下一个你要用的安装包 然后安装 安装后配置好环境变量

import pdfkit # html转pdf文件
# 参数1 html文件路径
# 参数2 转换成pdf文件的路径
pdfkit.from_file('htmldemo.html','test0.pdf')# 网址的html转换成pdf
# 网址转换非常慢慢慢慢慢
# pdfkit.from_url(['https://www.baidu.com','https://www.jd.com'],'test1.pdf')# 字符串转pdfhtml = '''
<html><head><meta charset="utf-8"><title>测试</title></head><body><h1>你好</h1><p>这是一个测试文件</p></body>
</html>
'''pdfkit.from_string(html,'test2.pdf')

5.word转pdf

from PIL.ImageChops import constant
from win32com.client import constants,gencachedef createPdf(wordPath,pdfPath):# 生成操作word文件word = gencache.EnsureDispatch('Word.Application')# 打开word文件doc = word.Documents.Open(wordPath,ReadOnly=1)# 转换为pdf,并进行格式设置doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF,Item=constants.wdExportDocumentWithMarkup,CreateBookmarks=constants.wdExportCreateHeadingBookmarks)word.Quit(constants.wdDoNotSaveChanges)if __name__ == '__main__':path = 'D:/workspace/demo/PythonOfficeAutomation/example2/'createPdf(path+'简历1.docx',path+'pdf1.pdf')

6. 读取pdf文件

def read_pdf(path):import pdfplumberwith pdfplumber.open(path) as pdf:for i in range(len(pdf.pages)):page = pdf.pages[i]print(page.extract_text()) # 输出当前页中的文本if __name__ == '__main__':read_pdf('pdf1.pdf')

7.合并pdf文件

def merge_pdfs(path1,path2):from PyPDF2 import PdfReader, PdfWriterwrite = PdfWriter()for path in [path1,path2]:temp_pdf = PdfReader(open(path,'rb'))for page in temp_pdf.pages:write.add_page(page)with open('./合并pdf.pdf','wb') as out:write.write(out)if __name__ == '__main__':merge_pdfs('pdf1.pdf','test0.pdf')

8.拆分


def split_pdf(path):from PyPDF2 import PdfReader, PdfWriterpdf = PdfReader(open(path,'rb'))for i,page in enumerate(pdf.pages):write = PdfWriter()write.add_page(page)with open(f'./拆分_{i+1}.pdf', 'wb') as out:write.write(out)if __name__ == '__main__':split_pdf('./合并pdf.pdf')

9.加密解密


def jiami(path):from PyPDF2 import PdfReader, PdfWriterpdf = PdfReader(open(path,'rb'))writer = PdfWriter()# pdf.decrypt('123456') # 解密writer.encrypt('123456')  # 设置密码for i in pdf.pages:writer.add_page(i)with open('./加密pdf.pdf','wb') as out:writer.write(out)if __name__ == '__main__':jiami('拆分_1.pdf')

相关文章:

4.1-python操作wrod/pdf 文件

1.读取word文件 首先安装软件包 pip3 install python-docx from docx import Documentimport os path os.path.join(os.getcwd(),你的文档名字.docx)# 加载文档 doc Document(path)# 遍历数据 for p in doc.paragraphs:print(p.text)# 遍历文档中所有表格 for t in doc.t…...

Android 应用程序包的 adb 命令

查看所有已安装应用的包名 命令&#xff1a;adb shell pm list packages说明&#xff1a;该命令会列出设备上所有已安装应用的包名。可以通过管道符|结合grep命令来过滤特定的包名&#xff0c;例如adb shell pm list packages | grep com.pm&#xff0c;这将只显示包名中包含co…...

DeepSeek-R1 模型现已在亚马逊云科技上提供

2025年3月10日更新—DeepSeek-R1现已作为完全托管的无服务器模型在Amazon Bedrock上提供。 2025年2月5日更新—DeepSeek-R1 Distill Llama 和 Qwen模型现已在Amazon Bedrock Marketplace和Amazon SageMaker JumpStart中提供。 在最近的Amazon re:Invent大会上&#xff0c;亚马…...

Python数据可视化-第2章-使用matplotlib绘制简单图表

环境 开发工具 VSCode库的版本 numpy1.26.4 matplotlib3.10.1 ipympl0.9.7教材 本书为《Python数据可视化》一书的配套内容&#xff0c;本章为第2章 使用matplotlib绘制简单图表 本文主要介绍了折线图、柱形图或堆积柱形图、条形图或堆积条形图、堆积面积图、直方图、饼图或…...

TDengine 快速上手:安装部署与基础 SQL 实践(二)

三、生产环境优化方案 3.1 性能调优策略 在生产环境中&#xff0c;TDengine 的性能优化是确保系统高效稳定运行的关键。以下是一些有效的性能调优策略。 连接池是提升数据库连接管理效率的重要工具&#xff0c;它允许应用程序重复使用现有的数据库连接&#xff0c;而不是每次…...

金融级密码管理器——密码泄露监控与自动熔断

目录 金融级密码管理器 —— 密码泄露监控与自动熔断一、模块概述与设计背景1.1 背景与挑战1.2 设计目标二、系统架构设计2.1 系统架构图(Mermaid示意图)三、关键技术与安全算法3.1 密码泄露监控3.2 自动熔断机制3.3 安全日志记录3.4 数据可视化与状态统计四、GUI与Dash仪表盘…...

mysql 主从搭建步骤

主库&#xff1a; 开启log-bin参数&#xff0c;log-bin 参数修改需要重启服务器 --You can change the server_id value dynamically by issuing a statement like this:SET GLOBAL server_id 2;--to enable binary logging using a log file name prefix of mysql-bin, and c…...

Redis 02

今天是2025/04/01 20:13 day 16 总路线请移步主页Java大纲相关文章 今天进行Redis 3,4,5 个模块的归纳 首先是Redis的相关内容概括的思维导图 3. 持久化机制&#xff08;深度解析&#xff09; 3.1 RDB&#xff08;快照&#xff09; 核心机制&#xff1a; 触发条件&#xff…...

unity UI管理器

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.Events;// UI界面基类 public abstract class UIBase : MonoBehaviour {[Header("UI Settings")]public bool keepInStack true; // 是否保留在界面栈中public …...

PyTorch深度学习框架60天进阶学习计划-第29天:自监督学习-问题解答(一)

PyTorch深度学习框架60天进阶学习计划-第29天&#xff1a;自监督学习-问题解答&#xff08;一&#xff09; 问题&#xff1a; 关于自监督的目标检测模型&#xff0c;怎么联动yolo。 一、 如何与YOLOv7联动&#xff1f; 步骤概述 确定自监督模块的接入位置 在YOLOv7的主干网络…...

GIT 撤销上次推送

注意&#xff1a;在执行下述操作之前先备份现有工作进度&#xff0c;如果不慎未保存&#xff0c;在代码编辑器中正在修改的文件下&#xff0c;使用CtrlZ 撤销试试 撤销推送的方法 情况 1&#xff1a;您刚刚推送到远程仓库 如果您的推送操作刚刚完成&#xff0c;并且没有其他…...

STRUCTBERT:将语言结构融入预训练以提升深度语言理解

【摘要】最近&#xff0c;预训练语言模型BERT&#xff08;及其经过稳健优化的版本RoBERTa&#xff09;在自然语言理解&#xff08;NLU&#xff09;领域引起了广泛关注&#xff0c;并在情感分类、自然语言推理、语义文本相似度和问答等各种NLU任务中达到了最先进的准确率。受到E…...

【万字总结】前端全方位性能优化指南(八)——Webpack 6调优、模块联邦升级、Tree Shaking突破

构建工具深度优化——从机械配置到智能工程革命 当Webpack配置项突破2000行、Node进程内存耗尽告警时,传统构建优化已触及工具链的物理极限:Babel转译耗时占比超60%、跨项目模块复用催生冗余构建、Tree Shaking误删关键代码引发线上事故……构建流程正从「工程问题」演变为「…...

单例模式(懒汉模式/饿汉模式)

相关概念参考&#xff1a;【C】C 单例模式总结&#xff08;5种单例实现方法&#xff09;_单例模式c实现-CSDN博客 #include<iostream>class LazySingle{ public:static LazySingle& getInstance(){static LazySingle instance;return instance;}void hello(){std::c…...

16-CSS3新增选择器

知识目标 掌握属性选择器的使用掌握关系选择器的使用掌握结构化伪类选择器的使用掌握伪元素选择器的使用 如何减少文档内class属性和id属性的定义&#xff0c;使文档变得更加简洁&#xff1f; 可以通过属性选择器、关系选择器、结构化伪类选择器、伪元素选择器。 1. 属性选择…...

C语言pthread库的线程休眠和唤醒的案例

一、代码如下 #include<stdio.h> #include<pthread.h> // 定义独占锁 pthread_mutex_t mutex; // 定义条件信号对象 pthread_cond_t condition; // 初始化函数 void init(){ int code pthread_mutex_init(&mutex, NULL); printf("共享锁初…...

Spring Boot 2.x 到 3.x 迁移实战:Redis 配置篇

前言 随着 Spring Boot 3.x 的发布&#xff0c;其对 Java 17 的支持和 模块化架构 的深化&#xff0c;Redis 配置与集成方式发生了显著变化。今天简单讲下redis的变化 一、Redis 配置前缀的模块化演进&#xff1a;从 spring.redis 到 spring.data.redis 1.1 Spring Boot 2.x&…...

SQL Server:用户权限

目录 创建 & 删除1. 创建用户命令整理创建 admin2 用户创建 admin_super 用户 2. 删除用户命令删除 admin2 用户删除 admin_super 用户 3. 创建时权限的区别admin2 用户权限admin_super 用户权限 查看方法一&#xff1a;使用对象资源管理器&#xff08;图形化界面&#xff…...

Windows .gitignore文件不生效的情况排查

概述 今天下班在家里捣腾自己的代码&#xff0c;在配置.gitignore文件忽略部分文件的时候&#xff0c;发现死活不生效 问题根源 经过一通分析和排查才发现&#xff0c;是.gitignore文件的编码错了&#xff0c;刚开始还没注意到&#xff0c;因为是在Windows下开发&#xff0c…...

cJSON 处理 JSON(轻量级 C 语言库)(二)

第二部分:cJSON 处理 JSON(轻量级 C 语言库) 📢 快速掌握 cJSON!文章 + 视频双管齐下 🚀 如果你觉得阅读文章太慢,或者更喜欢 边看边学 的方式,不妨直接观看我录制的 cJSON 课程视频!🎬 视频里会用更直观的方式讲解 cJSON 的核心概念、实战技巧,并配有动手演示…...

服务器数据恢复—误格式化NTFS文件系统分区别慌,NTFS数据复活秘籍

NTFS文件系统下格式化在理论上不会对数据造成太大影响&#xff0c;但有可能造成部分文件目录结构丢失的情况。下面介绍一个人为误操作导致服务器磁盘阵列中的NTFS文件系统分区被格式化后的服务器数据恢复案例。 服务器数据恢复过程&#xff1a; 1、将故障服务器连接到一台备份…...

《Linux运维总结:基于银河麒麟V10+ARM64架构CPU源码编译部署单实例redis7.2.6》

总结&#xff1a;整理不易&#xff0c;如果对你有帮助&#xff0c;可否点赞关注一下&#xff1f; 更多详细内容请参考&#xff1a;《Linux运维篇&#xff1a;Linux系统运维指南》 一、环境信息 环境信息如下&#xff1a; 主机IP 操作系统 Redis版本 CPU架构 192.168.1.111 K…...

华为云对象存储服务(OBS)

华为云对象存储服务&#xff08;OBS&#xff09; 前言 华为云为开发者提供了丰富的 Java SDK&#xff0c;借助这些 SDK 能够方便地与华为云的各类服务进行交互。下面以 华为云对象存储服务&#xff08;OBS&#xff09; 的 Java SDK 为例&#xff0c;介绍其使用步骤。 华为云…...

【3】数据结构的双向链表章

目录标题 双向链表的定义双向链表的初始化双向链表的创建插入操作删除操作 双向链表总代码与调试 双向链表的定义 结点结构组成&#xff1a;数据域&#xff08;data&#xff09;、指针域&#xff08;pre&#xff09;、指针域&#xff08;next&#xff09;。其中&#xff0c; da…...

分布式环境下的主从数据同步

目录 1. 数据同步的推/拉方式 1.1 主节点推送 1.2 从节点拉取 1.3 常见组件的推拉方式 2.复制方式 2.1 同步复制 2.2 异步复制 2.3 半同步复制 2.4 常见组件的同步方式 3.日志格式 3.1 基于语句复制 SBR 3.2 基于行复制 RBR 3.3 基于预写日志 WAL 3.4 基于触发器…...

蓝桥杯杯赛-日期模拟

知识点 处理日期 1. 按天枚举日期&#xff1a;逐天遍历起始日期到结束日期范围内的每个日期。 2. 处理闰年&#xff1a;正确判断闰年条件。闰年定义为&#xff1a;年份 满足以下任意一个条件&#xff1a;(闰年的2月只有29天) 满足下面一个条件就是闰年 1> 是 400 的倍数…...

【SQL】MySQL基础2:视图,存储过程,游标,约束,触发器

文章目录 1. 视图2. 存储过程2.1 创建存储过程2.2 执行存储过程 3. 游标4. 约束4.1 主键约束4.2 外键约束4.3 唯一约束4.4 检查约束 5. 触发器 1. 视图 视图是虚拟的表&#xff0c;它是动态检索的部分。使用视图的原因&#xff1a;避免重复的SQL语句&#xff1b;使用表的部分而…...

【TS学习】(15)分布式条件特性

在 TypeScript 中&#xff0c;分布式条件类型&#xff08;Distributive Conditional Types&#xff09; 是一种特殊的行为&#xff0c;发生在条件类型作用于裸类型参数&#xff08;Naked Type Parameter&#xff09; 时。这种特性使得条件类型可以“分布”到联合类型的每个成员…...

Android 小组件

小部件的布局文件支持如下布局&#xff1a; FrameLayout LinearLayout RelativeLayout GridLayout 以及如下控件 AnalogClock Button Chronometer ImageButton ImageView ProgressBar TextView ViewFlipper ListView GridView StackView AdapterViewFlipper 应该不止这些有空…...

搭建开源笔记平台:outline

折腾的意义 为什么要自己搭建一个笔记平台&#xff1f;没理由&#xff0c;就是突然想试试。有时候突然有个想法&#xff0c;搜了一下正好有合适的方案&#xff0c;就顺手试一下。 其实已经有很多成熟的笔记软件&#xff0c;例如Notion/OneNote&#xff0c;但谁不想要一个数据完…...