【问题标题】:How to convert from docx to pdf with a python function (WINDOWS)?如何使用 python 函数(WINDOWS)从 docx 转换为 pdf?
【发布时间】:2023-04-02 12:55:02
【问题描述】:

我正在开发一个带有 python 函数的环境来将 docx 转换为 pdf 文件。我正在使用邮递员发送base64。然后我挂载了 docx 文件(一切正常),但是当它将 docx 文件转换为 pdf 时,出现错误。我在想那是因为我的环境中没有 Office?没有办公室如何解决?谢谢。

import sys
import os
import comtypes.client
import pythoncom
import uuid
import requests
from docx import Document
import base64
from os import listdir
from os.path import isfile, join
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
  bytesDoc = req.get_json()['base']

  path = '/users/echornet/pruebas/'
  newFile = open(path + 'prueba.docx','wb')
  newFile.write(base64.b64decode(bytesDoc))

  newFile.close()
  wdFormatPDF = 17

  out_file = path + 'prueba.pdf'
  word = comtypes.client.CreateObject('Word.Application')

  doc = word.Documents.Open(newFile)
  doc.SaveAs(out_file, FileFormat=wdFormatPDF)
  doc.Close()

这是我得到的错误。我得到了从 base64 创建的 docx,但没有转换。

System.Private.CoreLib:执行函数时出现异常:
Functions.FunConverter。 System.Private.CoreLib:结果:失败
例外:AttributeError:模块'comtypes.gen.Word'没有属性
'_Application' 堆栈:文件
"C:\PruebaFunction\ConvEnv\lib\site-packages\azure\functions_worker\dispatcher.py",
第 288 行,在 _handle__invocation_request
self.run_sync_func, invocation_id, fi.func, args) 文件 "C:\Users\echornet\AppData\Local\Programs\Python\Python36\lib\concurrent\futures\thread.py",
第 55 行,运行中
结果 = self.fn(*self.args, **self.kwargs) 文件“C:\PruebaFunction\ConvEnv\lib\site-packages\azure\functions_worker\dispatcher.py”,
第 347 行,在 __run_sync_func
返回 func(**params) 文件“C:\PruebaFunction\FunConverter__init
.py”,第 32 行,在 main
word = comtypes.client.CreateObject('Word.Application') 文件 "C:\PruebaFunction\ConvEnv\lib\site-packages\comtypes\client__init__.py",
第 250 行,在 CreateObject 中
return _manage(obj, clsid, interface=interface) 文件 "C:\PruebaFunction\ConvEnv\lib\site-packages\comtypes\client__init__.py",
第 188 行,在 _manage
obj = GetBestInterface(obj) 文件“C:\PruebaFunction\ConvEnv\lib\site-packages\comtypes\client__init__.py”,
第 112 行,在 GetBestInterface 中
interface = getattr(mod, itf_name)

【问题讨论】:

标签:
python
ms-word
converters
comtypes