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

    文章

    166

    浏览量

    33655
  • python
    +关注

    关注

    56

    文章

    4782

    浏览量

    84456

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    通过数字隔离器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次下载

    ADS8383一款18位、500 kHz模数转换器数据表

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

    ADS7890一款14位1.25 MSPS模数转换器数据表

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

    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>器数据表

    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>器数据表

    ADS1216一款精密、宽动态范围、模数转换器数据表

    电子发烧友网站提供《ADS1216一款精密、宽动态范围、模数转换器数据表.pdf》资料免费下载
    发表于 07-24 09:50 0次下载
    ADS1216<b class='flag-5'>一款</b>精密、宽动态范围、模数<b class='flag-5'>转换</b>器数据表

    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 896次阅读
    介绍<b class='flag-5'>一款</b>基于java的渗透测试<b class='flag-5'>神器</b>-CobaltStrike

    共模电容:又一款EMC滤波神器

    共模电容:又一款EMC滤波神器?|深圳比创达电子(上)
    的头像 发表于 12-25 10:54 691次阅读
    共模电容:又<b class='flag-5'>一款</b>EMC滤波<b class='flag-5'>神器</b>?

    共模电容:又一款EMC滤波神器?|深圳比创达电子(上)

    共模电容:又一款EMC滤波神器?(上)相信不少人是有疑问的,今天深圳市比创达电子科技有限公司就跟大家解答下! 传统共模滤波器的局限性通常我们讨论EMC问题中的噪声及干扰,多是共模噪声、共模干扰
    发表于 12-25 10:53