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

在Linux(Azure应用服务)上运行python word(. docx)到pdf转换器的问题?

屠华辉
2023-03-14

我试图将Flask应用程序部署到Azure Web应用服务。我运行Windows操作系统,但Azure应用服务只支持PythonLinux。每当它加载涉及. docx到pdf转换的python模块时,我都会出错。我的容器崩溃,我得到以下消息:

:( Application Error
If you are the application administrator, you can access the diagnostic resources.

下面是我从日志中观察到的错误消息

我已尝试docx2pdf,但出现以下错误:

"/opt/python/3.9.0/lib/python3.9/importlib/metadata.py", line 511, in read_text
return self._path.joinpath(filename).read_text(encoding='utf-8')
AttributeError: 'PosixPath' object has no attribute 'read_text'

我尝试comtype和得到这个错误:

File "/tmp/8d97989fbb07031/antenv/lib/python3.9/site-packages/comtypes/__init__.py", line 23, in <module>
from _ctypes import COMError
ImportError: cannot import name 'COMError' from '_ctypes' 

我正在运行python 3.9.7。对于部署,我在Windows Powershell和VScode上都尝试了azure CLI,也尝试了从Github部署,但仍然会遇到相同的错误。

有没有办法解决我遇到的问题?或者有没有其他方法可以在linux中使用python将docx文件转换为pdf?

共有1个答案

仇飞鹏
2023-03-14

要解决此属性错误:“PosixPath”对象没有属性“read\u text”错误,您可以参考此GitHub问题:安装失败“PosixPath”对象没有属性“read\u text”,而“PosixPath”对象没有属性“read\u text”

要解决此重要错误:不能导入名称'COMError'从'_ctypes'错误,按照SuperBiasedMan COMTypes是专为Windows,而不是Linux。

谢谢你,阿布德赫迪·赫勒。将您的建议发布为帮助其他社区成员的答案。

您可以在Linux Azure应用程序服务上尝试以下代码将docx文件转换为pdf:

import sys
import subprocess
import re


def convert_to(folder, source, timeout=None):
    args = [libreoffice_exec(), '--headless', '--convert-to', 'pdf', '--outdir', folder, source]

    process = subprocess.run(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=timeout)
    filename = re.search('-> (.*?) using filter', process.stdout.decode())

    return filename.group(1)


def libreoffice_exec():
    # TODO: Provide support for more platforms
    if sys.platform == 'darwin':
        return '/Applications/LibreOffice.app/Contents/MacOS/soffice'
    return 'libreoffice'
result = convert_to('TEMP Directory',  'Your File', timeout=15)

您可以参考使用Python将DOCX转换为PDF,使用纯Python将DOCX转换为PDF(在linux上,不使用libreoffice),以及如何在linux上的Azure应用程序服务中将Word文档转换为PDF

 类似资料:
  • 问题内容: 我有一个网站,该网站使用SVG进行交互式客户端thingamabob。我想提供下载完成输出的PDF的选项。我可以将最终的SVG输出传递回服务器,在这里我要转换为PDF,然后将其返回给客户端进行下载。 这将需要在无头共享linux服务器上工作,在该服务器上安装或编译既费劲又是不可能的。该网站是PHP,因此理想的解决方案是PHP,或使用易于安装在共享Web服务器上的软件。可以使用Pytho

  • 我需要添加表到现有的docx文档,然后转换成Pdf文件,所以我使用Apache POI和Apache POI转换器库。这是我的代码: 但我有一个例外: org.apache.poi.xwpf.converter.core.xwpfConverterException:java.lang.IllegalArgumentException:PdfPTable构造函数中的列数必须大于零。在org.apa

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

  • 我正在尝试将. docx文件转换为. pdf文件。现在我有以下代码: 以下是版本: 但是当我运行它时,我只得到一个空的pdf文件。我还得到以下堆栈跟踪: 我还应该做些什么?

  • 我正在处理一个问题,试图开发一个网络应用程序,其中一部分将上传的docx文件转换为pdf文件(经过一些处理)。使用python-docx和其他方法,我不需要安装word的windows机器,甚至不需要在linux上安装libreoffice,进行大部分处理(我的网络服务器是pythonAnywhere-linux,但没有libreoffice,也没有sudo或codeapt安装权限。但是转换成pd

  • 问题内容: 以下代码不适用于Apache poi 3.16。有人可以提供正确的解决方案吗,在我的项目中,有些人只能使用 例外: 问题答案: 这样做的主要问题是这些和不是项目的一部分。它们是由开发的,第一个版本的命名错误和。这些老班没有更新从2014年开始,需要版本 的 使用。 请使用更多 最新版本的fr.opensagres.poi.xwpf.converter.pdf,该版本可以使用最新的稳定版