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

用python将pdf转成图片转换成对应的word文件

*科管系统**报告只能上传word,但是有些盖章文件只有pdf版本,因此有这个需求,目前市面上没这软件,只能自己python写一个。

要将PDF中的页面以图片的形式存储到Word文档中,你需要完成以下几个步骤:

从PDF中提取每一页的图像。
将这些图像插入到Word文档中。
这里提供一个使用Python实现的示例流程,其中使用PyMuPDF(也称为fitz)来读取PDF并提取图像,使用python-docx来创建Word文档并插入图像。

安装所需库
首先确保安装了所需的库:

pip install pymupdf python-docx

示例代码

以下是一个简单的脚本,演示如何将PDF中的页面作为图像保存,并将这些图像插入到Word文档中:

import fitz  # PyMuPDF
from docx import Document
from docx.shared import Inchesdef pdf_to_images(pdf_path, output_folder):# 打开PDF文件with fitz.open(pdf_path) as doc:# 遍历每一页for page_num in range(len(doc)):page = doc[page_num]# 将PDF页面渲染为图像pix = page.get_pixmap(dpi=300)  # dpi可以根据需要调整image_path = f"{output_folder}/page_{page_num + 1}.png"pix.save(image_path)  # 保存图像到磁盘yield image_pathdef images_to_word(image_paths, word_path):# 创建一个新的Word文档doc = Document()# 遍历所有图像并将它们插入到Word文档中for image_path in image_paths:doc.add_picture(image_path, width=Inches(6))  # 调整宽度以适应页面doc.add_page_break()  # 添加一个新页面# 保存Word文档doc.save(word_path)# 主函数
def main(pdf_path, output_folder, word_path):# 从PDF中提取图像image_paths = list(pdf_to_images(pdf_path, output_folder))# 将图像插入到Word文档中images_to_word(image_paths, word_path)if __name__ == "__main__":# 定义输入输出路径pdf_path = 'F:\python\pdf2word\测试分册.pdf' # PDF文件路径output_folder = "output_images"  # 图像输出文件夹word_path = "output_ceshi.docx"  # Word文档输出路径# 创建输出文件夹import osif not os.path.exists(output_folder):os.makedirs(output_folder)# 调用主函数main(pdf_path, output_folder, word_path)

相关文章:

用python将pdf转成图片转换成对应的word文件

*科管系统**报告只能上传word,但是有些盖章文件只有pdf版本,因此有这个需求,目前市面上没这软件,只能自己python写一个。 要将PDF中的页面以图片的形式存储到Word文档中,你需要完成以下几个步骤: 从PDF中…...

list(c++)

list介绍 list是STL容器中的容器,且元素在容器中的位置是分散的并与大小无关。list的底层是双向链表,其优势是在任意位置插入和删除元素的时间复杂度为O(1),但无法通过“下标[ ]”直接访问元素,需要通过从头(尾&#…...

51单片机STC8G串口Uart配置

测试环境 单片机型号:STC8G1K08-38I-TSSOP20,其他型号请自行测试; IDE:KEIL C51; 寄存器配置及主要代码 STC8G系列单片机具有4个全双工异步串行通信接口;本文以串口1为例,串口1有4种工作方式…...

uni-app使用movable-area 实现数据的拖拽排序功能

文档地址 template部分 <movable-area :style"getAreaStyle"><movable-view class"table-row" v-for"v,i in move.list":key"v.id":y"v.y"change"handle_moving"direction"vertical"touchst…...

如何设置使PPT的画的图片导出变清晰

PPT画的流程图另存为图片 插入WORD不清晰的解决办法&#xff1a; 第一步&#xff1a;先调整PPT分辨率 根据此链接修改PPT默认的导出dpi 第二步&#xff1a;新建PPT准备 首先看想要保存的图的尺寸&#xff1a;点击图形-格式-长宽 新建一个ppt-设计-幻灯片大小-自定义大小 …...

和鲸科技 CEO 范向伟受邀揭牌启动南京大学 2024 级大学生人工智能素养大赛

2024 年 10 月 26 日&#xff0c;南京大学第十九届读书节在仙林校区图书馆举行开幕仪式。中国科学院院士、南京大学校长谈哲敏&#xff0c;校党委常委、副校长索文斌&#xff0c;原副校长、关工委主任闵铁军出席仪式&#xff0c;南京大学相关学院和职能部处负责人&#xff0c;以…...

NewStarCTF2024-Week4-Web-WP

目录 1、blindsql2 2、chocolate 3、隐藏的密码 4、ezcmsss 题目对勇师傅来说已经是开始上难度了所以这周没有AK 分享下自己做出来的题的解题思路 1、blindsql2 原本是在继续构造新的 payload&#xff0c;也测到了延时 打算去改上周的脚本&#xff0c;结果去跑的时候忘了将…...

Java学习Day56:暴打舔狗!(SpringBoot)

1.springboot简介 核心能力&#xff1a;Spring容器、日志、自动配置AutoCongfiguration、Starters web应用的能力&#xff1a;MVC、嵌入式Web服务器 数据访问(持久化)&#xff1a;关系型数据库、非关系型数据库 强大的整合其他技术的能力 只要是Java中牛逼的技术&#xff0c…...

RSA加密算法实现

Java实现RSA加密算法示例,包括密钥对的生成、加密和解密过程。首先需要导入Java的加密库,这些功能主要通过java.security和javax.crypto包提供。先生成了一个RSA密钥对,包括一个公钥和一个私钥。然后使用公钥加密了一个字符串,并使用私钥解密了加密后的字符串。加密和解密的…...

大数据新视界 -- 大数据大厂之优化大数据计算框架 Tez 的实践指南

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…...

java 中 List<T> 类型数据在 postgreSql 数据库中存储

一 属性添加注解 在类上面添加注解&#xff1a; TableName(autoResultMap true) 在字段上面添加注解&#xff1a; TableField(value "list", typeHandler UserHandler.class) private List<User> list new ArrayList<>(); 二 创建 UserHandler 类…...

公共命名空间,2024年10月的笔记

首先&#xff0c;我国选择C做为竞赛语言&#xff0c;许多人学C&#xff0c;学习的结果是&#xff1a;看到“公共命名空间”&#xff0c;就幻想出一个私有命名空间&#xff0c;其实&#xff0c;公共命名空间和C的命名空间无关&#xff01; 超简源代码 已知序列v{1,2,3,4,5}&…...

frida脚本,自动化寻址JNI方法

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 1. 通过 ArtMethod 结构体找到 jni 方法在内存中的地址&#xff0c;并把寻址方法通过 rpc.exports 暴露给 Python 脚本调用 jni_addr.js let entry_point_fr…...

‌MySQL中‌between and的基本用法‌

文章目录 一、between and语法二、使用示例2.1、between and数值查询2.2、between and时间范围查询2.3、not between and示例 BETWEEN AND操作符可以用于数值、日期等类型的字段&#xff0c;包括边界值。 一、between and语法 MySQL中的BETWEEN AND操作符用于在两个值之间选择…...

Ceph 存储系统全解

1. 引言 什么是 Ceph&#xff1f; Ceph 是一个开源的分布式存储系统&#xff0c;旨在提供高性能、可扩展、无单点故障的统一存储平台。它可以同时支持对象存储、块存储和文件系统存储&#xff0c;能够满足不同存储需求的多种应用场景。Ceph 通过其强大的 RADOS&#xff08;可…...

C# ftp帮助类 项目实战优化版

上位机开发中有时要与客户的文件服务器进行数据交互。如Mapping文件下载。结果文件上传等。我在项目中就常用到。现在把项目实战代码进行分享一下。 功能列表&#xff1a;连接服务器&#xff0c;下载文件&#xff0c;上传文件&#xff0c;删除服务器文件&#xff0c;获取当前目…...

栈和队列相关|有效的括号|用队列实现栈|用栈实现队列|设计循环队列(C)

20. 有效的括号 判断左右括号是否匹配&#xff0c;匹配返回true&#xff0c;不匹配返回false 通过栈来实现&#xff0c;类型和顺序&#xff0c;数量都要匹配 控制数量通过size 每个右括号都要找最近的左括号去判断类型匹配不匹配&#xff0c;顺序匹配不匹配 最后来判断数量匹配…...

云原生后端开发教程

云原生后端开发教程 引言 随着云计算的普及&#xff0c;云原生架构逐渐成为现代软件开发的主流。云原生不仅仅是将应用部署到云上&#xff0c;而是一种构建和运行应用的方式&#xff0c;充分利用云计算的弹性和灵活性。本文将深入探讨云原生后端开发的核心概念、工具和实践&a…...

TortoiseSVN小乌龟下载安装(Windows11)

目录 TortoiseSVN 1.14.7工具下载安装 TortoiseSVN 1.14.7 工具 系统&#xff1a;Windows 11 下载 官网&#xff1a;https://tortoisesvn.subversion.org.cn/downloads.html如图选 TortoiseSVN 1.14.7 - 64 位 下载完成 安装 打开 next&#xff0c;next Browse&#xf…...

Android adb命令获取设备id

Android adb命令获取设备id 方式很多&#xff0c;以下均可获得Android device id&#xff1a; adb shell settings get secure android_id adb shell settings get secure android_id adb devices -l adb shell content query --uri content://settings/secure --where "…...

如何让鼠标和触控板和平共处:Scroll Reverser实现设备独立控制的效率革命

如何让鼠标和触控板和平共处&#xff1a;Scroll Reverser实现设备独立控制的效率革命 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 在多设备协同办公成为常态的今天&#xff0…...

告别代码噩梦:用Awesome-Dify-Workflow零代码30分钟实现企业级登录系统

告别代码噩梦&#xff1a;用Awesome-Dify-Workflow零代码30分钟实现企业级登录系统 【免费下载链接】Awesome-Dify-Workflow 分享一些好用的 Dify DSL 工作流程&#xff0c;自用、学习两相宜。 Sharing some Dify workflows. 项目地址: https://gitcode.com/GitHub_Trending/…...

ApiPost实战指南:从接口创建到自动化测试的全流程解析

1. 从零开始创建你的第一个API接口 作为一个常年和API打交道的开发者&#xff0c;我深知新手第一次接触接口工具时的迷茫。ApiPost作为一款国产的API开发工具&#xff0c;用起来确实比Postman更顺手&#xff0c;特别是对中文用户特别友好。下面我就带你一步步创建第一个接口&am…...

【概率统计】从直方图到核密度估计:数据分布可视化的进阶之路

1. 直方图&#xff1a;数据可视化的第一课 第一次接触数据分布可视化时&#xff0c;大多数人都是从直方图开始的。记得我刚学数据分析时&#xff0c;导师扔给我一组销售数据说&#xff1a;"先画个直方图看看分布情况。"当时我盯着matplotlib的hist函数参数一脸茫然—…...

SpringBoot整合MQTT实战:手把手教你实现设备动态连接与主题订阅管理(附完整源码)

SpringBoot整合MQTT实战&#xff1a;动态连接与主题订阅管理的工程化实现 在物联网项目开发中&#xff0c;设备连接管理和消息路由的灵活性往往是系统设计的难点。想象这样一个场景&#xff1a;你的智慧农业系统需要随时接入新部署的土壤传感器&#xff0c;气象站设备可能因网…...

别再让电费偷偷溜走!用智能时间开关改造家里的热水器和空调(附保姆级选购指南)

别再让电费偷偷溜走&#xff01;用智能时间开关改造家里的热水器和空调&#xff08;附保姆级选购指南&#xff09; 每到月底收到电费账单时&#xff0c;那种"钱不知不觉就溜走"的感觉总是让人心疼。特别是热水器和空调这两大"电老虎"&#xff0c;它们往往…...

【JavaWeb开发】从零构建前后端交互实战指南

1. JavaWeb前后端交互基础入门 第一次接触JavaWeb开发时&#xff0c;最让我困惑的就是前后端如何传递数据。记得刚开始做项目时&#xff0c;我傻乎乎地用字符串拼接HTML代码返回给前端&#xff0c;结果遇到中文乱码问题折腾了一整天。后来才发现&#xff0c;现代JavaWeb开发早已…...

OpCore-Simplify:零基础黑苹果配置终极指南,5分钟搞定复杂EFI

OpCore-Simplify&#xff1a;零基础黑苹果配置终极指南&#xff0c;5分钟搞定复杂EFI 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为黑苹果配置…...

告别‘缺少DLL’:用EnigmaVB给Qt5.14程序封包的保姆级避坑指南

告别“缺少DLL”困境&#xff1a;EnigmaVBQt5.14封包全流程实战手册 当你用Qt Creator完成开发&#xff0c;满怀期待地将程序打包发给用户&#xff0c;却收到“缺少xxx.dll”的报错反馈时&#xff0c;这种挫败感开发者都深有体会。本文将以Qt5.14为例&#xff0c;结合EnigmaVB封…...

拯救大模型“幻觉”?Python RAG九大架构全解析

别让你的AI助手&#xff0c;从“得力员工”变成“职场骗子” 你是否也曾被大模型的“一本正经胡说八道”气到无语&#xff1f; 你精心部署的客服机器人&#xff0c;自信地告诉客户&#xff1a;“我们的退货政策是90天&#xff01;”——而实际上&#xff0c;公司的规定是30天…...