一文带你实现从PDF到Word文件的相互转换

news2024/11/24 12:28:44

一文带你实现从PDF到Word文件的相互转换

01. 前期准备

模块安装

pip install pdf2docx

or使用国内镜像源进行安装(清华的镜像源)

pip install pdf2docx -i https://pypi.tuna.tsinghua.edu.cn/simple

02. 模块介绍

  • pdf2docx是一个Python模块,可以用来将PDF文件转换成Word文档。它是基于Python的pdfminer和python-docx库开发的,可以在Windows、Linux和Mac系统上运行。

  • pdf2docx模块可以直接从PDF文件中提取文本和图片,并将其转换成可编辑的Word文档。它可以处理包含复杂布局和格式的PDF文件,并保留原始的字体、颜色、大小和格式等属性。

使用pdf2docx模块非常简单,只需要安装pdf2docx库并导入相应的函数即可。下面是一个简单的示例代码:

import pdf2docx

# 将PDF文件转换成Word文档
pdf2docx.parse('test.pdf', 'test.docx')

上述代码中首先导入pdf2docx模块,然后使用parse函数将指定的PDF文件转换成相应的Word文档。

pdf2docx模块还提供了一些其他的函数和选项,可以根据需要进行配置和使用。以下是一些常用的函数和选项:

  • parse:将PDF文件转换成Word文档
  • parse_pages:将PDF文件中的一页转换成Word文档
  • parse_images:将PDF文件中的图片提取出来
  • parse_text:将PDF文件中的文本提取出来
  • parse_layout:将PDF文件中的页面布局提取出来

pdf2docx模块还支持一些高级选项,如自定义字体、颜色、大小、格式等,可以根据需要进行配置和使用。

总结

pdf2docx是一个非常实用的Python模块,可以将PDF文件转换成可编辑的Word文档。它基于pdfminer和python-docx库开发,可以处理包含复杂布局和格式的PDF文件,并保留原始的字体、颜色、大小和格式等属性。使用pdf2docx模块非常简单,只需要安装pdf2docx库并导入相应的函数即可。

03. 实例操作

3.1 单个PDF转word

from pdf2docx import Converter
#pdf转word

a = Converter(r'D:\Pycharm\1.pdf')  #pdf的路径
#输出的word的路径加文件名,不用自己创建,会自动创建,可将pdf路径直接复制下来,将后缀pdf改为docx就可以了。
a.convert(r'D:\Pycharm\1.docx')

a.close() #一定要有,释放内存用的

3.2 多个pdf转word

import os
from pdf2docx import Converter

def pdf_docx():
    # 获取当前工作目录
    file_path = r'E:\python'
    # 遍历所有文件
    for file in os.listdir(file_path):
        # 获取文件后缀
        suff_name = os.path.splitext(file)[1]
        # 过滤非pdf格式文件
        if suff_name != '.pdf':
            continue
        # 获取文件名称
        file_name = os.path.splitext(file)[0]
        # pdf文件名称
        pdf_name = file_path + '\\' + file
        # 要转换的docx文件名称
        docx_name = file_path + '\\' + file_name + '.docx'
        # 加载pdf文档
        cv = Converter(pdf_name)
        cv.convert(docx_name)
        cv.close()

        
if __name__ == '__main__':
    pdf_docx()

上述代码实现了遍历一个文件夹下的所有文件,并且将文件名后缀为“.pdf”的文件转换为“.docx的文件,即”word文件 ,该方法适合多个PDF文件的转换,从而实现批量将PDF转Word文档

实现了PDF转Word:

在这里插入图片描述

打开后的效果:

在这里插入图片描述

模块的安装(使用镜像下载真的快!!!)

pip install docx2pdf -i https://pypi.tuna.tsinghua.edu.cn/simple

3.3 单个Word转PDF(不建议使用代码,手动更快!!!)

from docx2pdf import convert
# 第一个为word路径,第二个为生成的pdf路径,不用自己创建,会自动创建,可将docx路径直接复制下来,将后缀docx改为pdf就可以了
convert("D:/Pycharm/output.docx",
        "D:/Pycharm/output.pdf") 

3.4 多个Word转多个PDF

from docx2pdf import convert
import os

# 文件位置
path = 'E:/python/test/'
# 定义空list,存放文件夹中的文件名
files = []
for file in os.listdir(path):
    if file.endswith(".docx"):
        files.append(path+file)

for file in files:
   convert(file,file.split('.')[0]+'.pdf') #创建生成的pdf文件和文件名的文件名
   print(file+'转换成功')

结果展示

在这里插入图片描述
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot源码解析: 从手写一个简易版SpringBoot开始

IDE:IntelliJ IDEA 2019.2.4 x64 操作系统:win10 x64 位 家庭版 Maven版本:apache-maven-3.6.3 文章目录 真正的SpringBoot手写一个简易版的springboot一. 准备1.1 准备自定义的springboot模块1.2 准备用户模块User 二. 运行测试2.1 第一次运…

如何快速上传批量剪辑的素材?附素材水印、字幕去除教程

想要快速上传网络素材,大家可以使用超级编导批量剪辑软件。 首先进入超级编导官网,免费下载超级编导超级编导软件,可以在官网中添加产品顾问,获取试用账号,登录即可开始使用。 超级编导支持批量上传URL链接到后台&…

Manifest merger failed

编译报错:Manifest merger failed with multiple errors 定位编译错误:java.lang.RuntimeException: Manifest merger failed with multiple errors 近日,项目中需要引入一个module。在成功导入后,添加依赖到主模块上&#xff0c…

【RocketMQ】(六)顺序消息实现原理

全局有序 在RocketMQ中,如果使消息全局有序,可以为Topic设置一个消息队列,使用一个生产者单线程发送数据,消费者端也使用单线程进行消费,从而保证消息的全局有序,但是这种方式效率低,一般不使用…

955. 删列造序 II;1838. 最高频元素的频数;1392. 最长快乐前缀

955. 删列造序 II 核心思想:我们可以按照一行一行排列strs,删除索引序列就代表删除某一列,那么我们如何判断一列是否应该删除呢,我们可以从反方向思考,应该保留那些列呢?从第一列开始,如果它不…

WebGIS面试题(浙江中海达)

1、Cesium中有几种拾取坐标的方式,分别介绍 Cesium是一个用于创建3D地球和地理空间应用的JavaScript库。在Cesium中,你可以使用不同的方式来拾取坐标,以便与地球或地图上的对象进行交互。以下是Cesium中几种常见的拾取坐标的方式&#xff1a…

jdk21(最新版) download 配置(linux window mac)

download 直达链接 jdk21,17 # wget https://download.oracle.com/java/20/latest/jdk-21_linux-x64_bin.deb # 选择你需要的包类似格式替换包的名称就可以实现终端下载jdk下载登录/oracle账号 下载jdk有可能存在要求登录帐号的情况 # 好心人的帐号 账号: 599…

C语言内存函数的使用、剖析及模拟实现

目录 一、内存拷贝函数——memcpy 1.函数声明: 注意: 2.函数使用用例: 3.memcpy函数的模拟实现: 二、内存拷贝函数2——memmove 1.函数声明: 2.memmove函数的模拟实现 三、内存比较函数——memcmp 1.函数声明…

01_docker镜像管理:80分钟一口气学完docker+k8s!带你掌握docker+k8s所有核心知识点,全程干货,无废话!

docker镜像的实际使用学习 开发过程中,需要安装很多三方工具,比如etcd、kafka、mysql、nginx等等 1、下载安装Docker工具。 2、获取该软件的Docker镜像(基本上,都能搜索到核实的镜像),下载镜像nginx镜像…

浏览器基本原理

1、浏览器内部组成 我们看到浏览器主要包括: 1个浏览器主进程: 主要负责界面显示,用户交互,子进程管理多个渲染进程:一般浏览器会为每个Tab标签窗口创建一个渲染进程,主要负责将html,css&#…

经典网络(一) AlexNet逐层解析 | 代码、可视化、参数查看!

文章目录 1 回顾2 AlexNet的重要性3 AlexNet解析3.1 结构3.1.1 CONV13.1.2 Max Pool13.1.3 NORM13.1.4 CONV23.1.5 Max Pool23.1.6 CONV3 CONV43.1.7 CONV53.1.8 Max Pool33.1.9 FC1 FC2 FC3 3.2 AlexNet使用到的技巧3.3 可视化3.4 代码实现模拟3.4.1 查看每一层输入输出3.4.2 …

UE 虚幻引擎 利用LOD,Nanite技术优化场景性能

目录 0 引言1 LOD1.1 LOD定义1.2 UE5中的LOD技术1.3 HLOD(Hierarchical Level of Detail) 2 Nanite2.1 UE5的Nanite技术2.2 Nanite介绍2.2.1 Nanite的优势2.2.2 Nanite网格体与传统静态网格体的不同2.2.3 Nanite支持的类型2.2.4 在地形中使用Nanite 0 引…

KT142C语音芯片flash型用户如何更新固件的说明_V2

目录 一、简介 2.1 让芯片进入PC模式 2.2 双击提供的exe程序即可 一、简介 正常的情况下,用户肯定是不需要更新固件的,因为芯片出厂默认就烧录了对应的程序固件,但是有客户可能需要小修小改,或者订制一下某些功能&#xff0c…

寻找环形链表的入环点

之前我们在判断一个链表是否为环, 是运用快慢指针的方法,且只能是慢指针走一步,快指针两步; 那么如何求带环链表的入环点的 思路一:数学方法(找出带环链表各个特点量的关系) 代码:…

Linux设备驱动之Camera驱动

Linux设备驱动之Camera驱动 Camera,相机,平常手机使用较多,但是手机的相机怎么进行拍照的,硬件和软件,都是如何配合拍摄到图像的,下面大家一起来了解一下。 基础知识 在介绍具体Camera框架前&#xff0c…

图像复原与重建,解决噪声的几种空间域复原方法(数字图像处理概念 P4)

文章目录 图像复原模型噪声模型只存在噪声的空间域复原 图像复原模型 噪声模型 只存在噪声的空间域复原

字节一面:你能手撕节流防抖吗?

前言 最近博主在字节面试中遇到这样一个面试题,这个问题也是前端面试的高频问题,节流防抖是前端性能优化一个很重要的手段,所以作为一个前端工程师必须要深入掌握这个知识点,博主在这给大家细细道来。 🚀 作者简介&…

01 TextRNN FastText TextCNN-04-训练要点,实验过程

TextRNN & FastText & TextCNN-03-模型总览,后 训练要点 RNN训练 得出来的y(m)(预测标签)是每一个分类的概率,比如是一个五分类,化成5个格子,每一个格子是概率&#xff0c…

java生成PDF的Util

java使用itext生成pdf-CSDN博客 接上文 支持表格绘制表格 支持表格中的文本 字体加粗、字体上色、单元格背景上色, 支持拼接文本 支持单行文本 多种背景颜色、字体上色 支持自定义水印 废话不说先上效果图 工具类代码 package com.zxw.文件.PDF.util;import …

建立一张表: 表里面有多个字段,每一个字段对应一种数据类

首先mysql -uroot -p 进入MySQL 选择一个数据库并使用 在该数据库内创建表格 create table homework_tb( id int(11) comment 编号, company_name char(6) comment 公司名称, introduce varchar(100) comment 介绍, content1 tinytext comment 内容1, co…