当前位置: 首页 > 知识库问答 >
问题:

如何使用python函数(WINDOWS)将docx转换为pdf?

幸阳波
2023-03-14

我正在使用一个带有python函数的env将docx转换为pdf文件。我在用邮递员寄base64。然后我挂载docx文件(一切都正常),但是当它将docx文件转换为pdf时,会出现一个错误。我想那是因为我的环境里没有办公室?没有办公室我怎么能修好它?谢谢

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()

系统。私人。CoreLib:执行函数时的异常:函数。FunConzer.系统。私人。CoreLib:结果:失败异常:属性错误:模块'comtypes.gen.Word'没有属性'_Application'堆栈:文件"C:\PruebaFunction\ConvEnv\lib\site-包\azure\functions_worker\dispatcher.py",第288行,_handle__invocation_requestself.run_sync_func,invocation_id,fi.func,args)文件"C:\用户\echornet\AppData\本地\程序\Python\Python36\lib\并发\期货\thread.py",第55行,在运行结果=self.fn(*self.args,**self.kwargs)文件"C:\PruebaFunction\ConvEnv\lib\site-pack\azure\functions_worker\dispatcher.py",第347行,在__run_sync_func返回func(**params)File"C:\PruebaFunction\FunConverter__init.py",第32行,在main word=comtypes.client.CreateObject('Word.Application')文件"C:\PruebaFunction\ConvEnv\lib\site-包\comtype\client__init__. py",第250行,在CreateObject返回_manage(obj,clsid,接口=接口)文件"C:\PruebaFunction\ConvEnv\lib\site-包\comtype\client__init__. py",第188行,在_manageobj=GetBestInterface(obj)文件"C:\在GetBestInterface=getattr(mod,itf_name)中的PruebaFunction\ConvEnv\lib\site-包\comtype\client__init__. py",第112行

共有2个答案

连文栋
2023-03-14

您可以使用python库docx2pdf,该库内部使用win32com:https://github.com/AlJohri/docx2pdf

安装

pip install docx2pdf

使用方法:

from docx2pdf import convert
convert("input.docx", "output.pdf")

正如您提到的,这种方法确实需要安装Microsoft Office。

免责声明:我写了这个库和命令行工具。

仲孙经赋
2023-03-14

你可以试试lib win32com来完成这个任务

# -*- encoding: utf-8 -*-
import  os
from win32com import client
#pip instatll win32com
def doc2pdf(doc_name, pdf_name):
    """
    :word to pdf
    :param doc_name word file name
    :param pdf_name to_pdf file name
    """
    try:
        word = client.DispatchEx("Word.Application")
        if os.path.exists(pdf_name):
            os.remove(pdf_name)
        worddoc = word.Documents.Open(doc_name,ReadOnly = 1)
        worddoc.SaveAs(pdf_name, FileFormat = 17)
        worddoc.Close()
        return pdf_name
    except:
        return 1
if __name__=='__main__':
    doc_name = "f:/test.doc"
    ftp_name = "f:/test.pdf"
    doc2pdf(doc_name, ftp_name)
 类似资料:
  • 我正在努力寻找用Python将PDF文件转换为.docx文件的方法。 我见过其他与此相关的帖子,但在我的情况下,它们似乎都不正常。 我特别使用 这给了我输出[1],但在我的文件夹中找不到任何.docx文档。 我已经安装了LibreOffice 5.3。 有什么线索吗? 提前谢谢你!

  • 我一直在尝试使用他们的库将html内容转换为docx,我确实在运行我的应用程序后创建了一个docx文件,但它有空白内容,而html中确实有一些内容。请检查下面的代码,我已经包含了git上AndroidDocxtoHTML示例中所有必要的库。 代码: 我不明白我得到的空白文档的代码中缺少了什么。我为java找到了这段代码,我为android修改了这段代码。有些人建议使用夜间构建jar进行xhtml转

  • null 很抱歉,我无法发布我尝试过的任何内容,因为我还没有在此任务上尝试过任何内容,尽管我使用将从获得的转换为,以便在应用程序的中输出。请开导我,我在压力和困惑中迷失了……!

  • 我花了大量的时间试图确定到底出了什么问题,使用LibreOffice将pdf转换为docx(以及doc转换为docx)的代码。 我使用了两个windows run接口来测试运行一些我发现相关的代码,也尝试了python,但两者都不起作用。 我在Windows上安装了LibreOffice v6.0.2。 我一直在使用此代码的变体尝试将某些pdf文件转换为与特定pdf文件不相关的docx: 我已经在

  • 我在Ubuntu18.04容器中安装了LibreOffice6.4。 目标是将pdf文件转换为DOCX。 我已经尝试过这些命令: 并返回以下消息: 我可以看到它需要参数,因为输入文件是PDF。 但是,它使用的是筛选器,我需要将它切换到,我该怎么做呢? 我已经试过这些了,但不起作用: 他们总是返回这条消息(同上):

  • 上面的代码给了我一个错误,如下所示 线程“main”java.lang.nosuchmethoderror:org.docx4j.org.xhtmlrenderer.docx.docx.docx.docxrenderer.(ljava/lang/string;)V在org.docx4j.convert.in.xhtml.xhtmlimporterimpl.getrenderer(xhtmlimpo