0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

分享一款批量将PDF文件转换为Word的神器

工程师邓生 来源:Python爱好者集中营 作者:欣一 2022-09-01 17:33 次阅读

无论是在工作还是学习当中,大家都会遇到这样一个问题,将“PDF当中的内容(文本和图片)转换为Word的格式”,也就是说从只读转换成可编辑的格式。网上绝大多数的工具也都是收费的,今天小编就给大家制作了一款批量将PDF文件转换为Word的神器,使用起来也是相当的方便。

实现效果

我们首先来看一下出来的效果,如下图所示

6027737a-29d6-11ed-ba43-dac502259ad0.gif



618fe468-29d6-11ed-ba43-dac502259ad0.png

61c0cd08-29d6-11ed-ba43-dac502259ad0.png

环境准备

用到的模块叫做pdf2docx,我们通过pip命令进行下载,如下

pip install pdf2docx

后续我们还可以为py文件打包,用到的库是pyinstaller

pip install pyinstaller


代码实现

我们先简单地实现将单个PDF文档转换成Word文档,代码如下

pYYBAGMQfMWAKCJIAAA5iyss-GA794.jpg

那么上面的是单个PDF文件,要是涉及到是多个PDF文件,则需要用到遍历上传过来的每一个文件,用到for循环遍历

def startAction(self):
output_path_1 = Path.joinpath(Path.home(), "Desktop")
output_path_2 = str(output_path_1) + "\\output"
if not os.path.exists(output_path_2):
os.mkdir(output_path_2)

for path_list in pdfPath_list:
print("路径: ", path_list)
name = path_list.split("/")[-1].split(".")[0]
cv = Converter(path_list)
cv.convert(output_path_2 + "\\{}.docx".format(name), start=0, end=None)
cv.close()

msg_box = QMessageBox(QMessageBox.Information, '完成', '提取完成', QMessageBox.Yes)
msg_box.exec_()

上述的代码,我们首先将指定好输出的Word文档的位置,这里小编设置的是在桌面,然后通过for循环去遍历处理每一个PDF文档,当所有的步骤都完成的时候,提示我们已经完成了。

当然整个可视化界面当中还有一个上传文件的功能,代码如下

# 选择本地文件上传
def uploadFiles(self):
global pdfPath_list # 这里为了方便别的地方引用文件路径,将其设置为全局变量
pdfPath_list, fileType = QFileDialog.getOpenFileNames(self.ui, "上传文件", r"路径", "*.pdf;;All Files(*)")
# 显示所选文件的路径
self.ui.lineEdit.setText(",".join(pdfPath_list))

整体的代码如下所示

from PySide2.QtWidgets import QApplication, QMessageBox, QFileDialog
from PySide2.QtUiTools import QUiLoader
from pdf2docx import Converter
from pathlib import Path
import os

class OCRQt:
def __init__(self):
self.ui = QUiLoader().load('pdf2word.ui')
self.ui.pushButton.clicked.connect(self.uploadFiles)
self.ui.pushButton_2.clicked.connect(self.startAction)

def uploadFiles(self):
........
........

def startAction(self):
.......
.......

if __name__ == '__main__':
app = QApplication([])
# 显示创建的界面
MainWindow = OCRQt() # 创建窗体对象
MainWindow.ui.show() # 显示窗体
app.exit(app.exec_()) # 程序关闭时退出进程


审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • PDF
    PDF
    +关注

    关注

    1

    文章

    168

    浏览量

    33720
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84727

原文标题:Python 如何实现一键批量将 PDF 文档转 Word?

文章出处:【微信号:AI科技大本营,微信公众号:AI科技大本营】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    基于TPS40055的设计在15安培时12V总线转换为1.8V

    电子发烧友网站提供《基于TPS40055的设计在15安培时12V总线转换为1.8V.pdf》资料免费下载
    发表于 12-16 09:25 0次下载
    基于TPS40055的设计在15安培时<b class='flag-5'>将</b>12V总线<b class='flag-5'>转换为</b>1.8V

    base64字符串转换为二进制文件

    Base64是种编码方法,用于二进制数据转换为ASCII字符串。这种编码通常用于在不支持二进制数据的系统中传输数据,例如电子邮件或网页。Base64字符串
    的头像 发表于 11-10 10:55 1178次阅读

    通过数字隔离器SPI转换为GPIO

    电子发烧友网站提供《通过数字隔离器SPI转换为GPIO.pdf》资料免费下载
    发表于 09-21 10:20 0次下载
    通过数字隔离器<b class='flag-5'>将</b>SPI<b class='flag-5'>转换为</b>GPIO

    PDF文件批量打印源代码

    压缩包中包含可批量打印PDF文件的Python代码,可以借助PYcharm工具执行,实现多PDF文件同时打印。
    发表于 08-08 14:26 0次下载

    ADS7845一款12位采样模数转换器(ADC)数据表

    电子发烧友网站提供《ADS7845一款12位采样模数转换器(ADC)数据表.pdf》资料免费下载
    发表于 07-27 09:39 0次下载
    ADS7845<b class='flag-5'>一款</b>12位采样模数<b class='flag-5'>转换</b>器(ADC)数据表

    ADS8325一款16位采样模数(A/D)转换器数据表

    电子发烧友网站提供《ADS8325一款16位采样模数(A/D)转换器数据表.pdf》资料免费下载
    发表于 07-26 10:20 0次下载
    ADS8325<b class='flag-5'>一款</b>16位采样模数(A/D)<b class='flag-5'>转换</b>器数据表

    ADS8320一款16位采样模数(A/D)转换器数据表

    电子发烧友网站提供《ADS8320一款16位采样模数(A/D)转换器数据表.pdf》资料免费下载
    发表于 07-26 10:13 3次下载
    ADS8320<b class='flag-5'>一款</b>16位采样模数(A/D)<b class='flag-5'>转换</b>器数据表

    ADS8321一款16位采样模数转换器(ADC)数据表

    电子发烧友网站提供《ADS8321一款16位采样模数转换器(ADC)数据表.pdf》资料免费下载
    发表于 07-26 10:12 0次下载
    ADS8321<b class='flag-5'>一款</b>16位采样模数<b class='flag-5'>转换</b>器(ADC)数据表

    ADS8371一款16位模数转换器数据表

    电子发烧友网站提供《ADS8371一款16位模数转换器数据表.pdf》资料免费下载
    发表于 07-24 11:09 0次下载
    ADS8371<b class='flag-5'>一款</b>16位模数<b class='flag-5'>转换</b>器数据表

    ADS8481一款18位、1 MSPS模数转换器数据表

    电子发烧友网站提供《ADS8481一款18位、1 MSPS模数转换器数据表.pdf》资料免费下载
    发表于 07-24 11:06 0次下载
    ADS8481<b class='flag-5'>一款</b>18位、1 MSPS模数<b class='flag-5'>转换</b>器数据表

    DAC7741一款16位数模转换器(DAC)数据表

    电子发烧友网站提供《DAC7741一款16位数模转换器(DAC)数据表.pdf》资料免费下载
    发表于 07-24 09:32 0次下载
    DAC7741<b class='flag-5'>一款</b>16位数模<b class='flag-5'>转换</b>器(DAC)数据表

    DAC7621一款12位数模转换器(DAC)数据表

    电子发烧友网站提供《DAC7621一款12位数模转换器(DAC)数据表.pdf》资料免费下载
    发表于 07-24 09:27 0次下载
    DAC7621<b class='flag-5'>一款</b>12位数模<b class='flag-5'>转换</b>器(DAC)数据表

    ADS8412一款16位、2 MHz模数转换器数据表

    电子发烧友网站提供《ADS8412一款16位、2 MHz模数转换器数据表.pdf》资料免费下载
    发表于 07-23 10:30 0次下载
    ADS8412<b class='flag-5'>一款</b>16位、2 MHz模数<b class='flag-5'>转换</b>器数据表

    在SWAP模式下编辑lsl文件,如何分区A和B中程序的lsl文件转换为个lsl文件

    启用交换模式后,如何分区 A 和 B 中程序的 lsl 文件转换为个 lsl 文件? 或者我们可以
    发表于 01-25 07:46

    介绍一款基于java的渗透测试神器-CobaltStrike

    Cobalt Strike是一款基于java的渗透测试神器,常被业界人称为CS神器
    的头像 发表于 01-16 09:16 994次阅读
    介绍<b class='flag-5'>一款</b>基于java的渗透测试<b class='flag-5'>神器</b>-CobaltStrike