自动完成PDF转Word

2022-04-25 16:30:22 浏览数 (1)

现在WPS和百度网盘都提供了PDF转Word的功能,但是需要充值会员。网上也有其他网站可以把PDF转成Word的,可是有一定限制。还有一些开源软件,效果就达不到要求了。经过了一番调查,发现真正完成PDF转Word的是一个来自Soliddocuments公司的程序,在smallpdf、adobe acrobat dc等网站上都有提到。

本地实现

经过一番搜索,没有找到Soliddocuments的免费程序。我的目的是通过程序自动完成PDF转Word,转换一下思路,想到Adobe Acrobat DC Pro既然有PDF转Word的功能,内部一定就是Soliddocuments,那我直接控制Acrobat DC Pro不就可以了!果然,Acrobat DC Pro是可以通过Python控制的。这样,我就找到了这样一套几乎完美的本地方法,完成PDF转Word:

【步骤1】

在淘宝上搜“Acrobat DC Pro“,花几块钱就可以买到,然后本地安装好。(如果不需要实现自动转换,直接用这个软件的”导出到->Word“就可以了)

【步骤2】

安装Anaconda Python,是一套完整的Python程序环境。安装时一定要选中”Add anaconda to my PATH environment variable“,这样才能从命令行调用python。

【步骤3】

编写Python调用Acrobat DC Pro的程序(pdf2word.py)。该程序将当前目录下的所有PDF文件转换为Word,并保存到output目录。

代码语言:javascript复制
from win32com.client.dynamic import Dispatch, ERRORS_BAD_CONTEXT

import os
import winerror
ERRORS_BAD_CONTEXT.append(winerror.E_NOTIMPL)

files = list(filter(lambda f: f.endswith('.pdf'), os.listdir()))

def pdf2word(f_path, d_path):
    try:
        AvDoc = Dispatch("AcroExch.AVDoc")
        AvDoc.Open(f_path, "")
        pdDoc = AvDoc.GetPDDoc()
        jsObject = pdDoc.GetJSObject()
        jsObject.SaveAs(d_path, "com.adobe.acrobat.docx")
        print('ok')
    except Exception as e:
        print('error')
        print(e)
    finally:
        pdDoc.Close()
        AvDoc.Close(True)

os.mkdir('output')
for file in files:
    print('convert:', file)
    out_file = file.replace('.pdf', '.docx')
    f_path = os.path.abspath(file)
    d_path = os.path.abspath('output/'   out_file)
    pdf2word(f_path, d_path)

【步骤4】

将PDF文件和pdf2word.py放在一个文件夹内,打开命令行运行Python程序,完成转换

代码语言:javascript复制
python pdf2word.py

先给大家演示一下以上流程

视频内容

远程实现

虽然以上实现了自动转换,但是也只能自己本地操作,不能远程使用。接下来,我将用 Y20持续部署系统 把以上流程编排为流水线,实现远程自动操作。Y20持续部署系统如何使用,这里就不详细说明了,简单的说,她是个流水线的编排和运行系统。

这条远程自动PDF转Word流水线的步骤,我将做如下编排(已发布到 PDF转WORD):

  1. 指定哪一台电脑完成转换
  2. 将pdf2word.py程序传输到这台电脑
  3. 将PDF文件传输到这台电脑
  4. 打开终端,执行Python程序
  5. 将转换好的Word文件传到服务器,以供下载

运行前,需要把安装好Acrobat DC Pro和Anaconda Python的机器接入到持续部署系统,将步骤1的节点参数指定为这台电脑。

启动流水线时,上传PDF文件。结束后,在流水线详情页面的”上传的文件“中,就可以下载转换好的Word文件了。

给大家演示一下远程通过流水线完成PDF转Word

视频内容

0 人点赞