本帖最后由 VVANVI 于 2021-11-29 23:42 编辑
python + 活字格实现 word 转pdf 分享
具体思路
1 pyhon 代码 实现 word 转pdf
2 封装成服务
3 活字格http命令请求
4 服务端命令下载 转换成pdf 的文件
第一部分 python 代码
'''
win32com 模块主要为 Python 提供调用 windows 底层组件对 word 、Excel、PPT 等进行操作的功能,只能在 Windows 环境下使用,并且需要安装 office 相关软件才行(WPS也行)。
使用 win32com 模块主要是因为 Python 针对 word 文档操作的第三方库相对较少并且功能较弱,Python 有针对 .docx 后缀文件的第三方库如 python-docx、pydocx等等,但是没有针对 .doc 和 .wps 的第三方库,
所以这里就只能使用 win32com 模块。 相对而言 Python 针对 Excel文档操作的第三方库就非常友好
'''
在网上抄word转 PDF代码 ,然后改造,用Flask封装成服务,pyton 引用包 flask pywin32
from flask import Flask,request
from win32com.client import gencache
from win32com.client import constants, gencache
import pythoncom
app = Flask(__name__)
def createPdf(wordPath):
"""
word转pdf
:param wordPath: word文件路径
:param pdfPath: 生成pdf文件路径
"""
pythoncom.CoInitialize()
word = gencache.EnsureDispatch('Word.Application')
doc = word.Documents.Open(wordPath, ReadOnly=1)
pdfPath = wordPath.split('.')[0]+'.pdf'
doc.ExportAsFixedFormat(pdfPath,
constants.wdExportFormatPDF,
Item=constants.wdExportDocumentWithMarkup,
CreateBookmarks=constants.wdExportCreateHeadingBookmarks)
word.Quit(constants.wdDoNotSaveChanges)
@app.route('/')
def hello_world():
return 'Hello World'
@app.route('/wordtopdf',methods = ['GET'])
def wordtopdf():
# a = 'D:\wordtopdf\我是一个word.docx'
path = request.args.get('path')+request.args.get('name').split('|')[0]
print (path)
createPdf(path)
return path.split('.')[0].split('\\')[-1]+'.pdf'
# return path
if __name__ == '__main__':
app.run(debug=True)
第二部分 活字格发送请求
完成pdf 转word 工作
第三部分
下载转换后的文件
服务端
页面端
1 转PDF请求 发送路径和 要转换的文件名
2下载PDF文件
后续附上工程
我在测试时附件在C:/upload/wordtopdf路径
点击下载PDF后附件就能下载,完成word转PDF
我是做的做的get请求, 由于 是自己写的服务, 随便什么请求都可以做! 也可以做成post 请求 .随便自己怎么封装
当然批量转也能做 , 用活字格 定时任务 ,循环请求 , 不愿意用活字格 也可以 直接撸代码 直接遍历文件夹一次转换也行
大神勿喷 仅供参考,
|
|