You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Linux架构Azure App Services上运行Python实现docx转PDF的问题

问题原因分析
  • comtypes库为Windows平台专属工具,依赖Windows系统的COM组件接口,Linux环境无对应底层实现,调用必然报错。
  • docx2pdf库底层依赖系统预装的Microsoft Word程序,Azure Linux App Service运行环境未安装Office,且该库未适配Linux系统环境,因此出现PosixPath属性缺失报错。
Linux环境可用docx转pdf方案

推荐使用LibreOffice调用方案,格式还原度高,适配性强,部署步骤如下:

步骤1:配置Azure Web App依赖安装

Azure默认Python运行环境未预装LibreOffice,需要自定义启动脚本完成安装:

  1. 项目根目录新建startup.sh启动脚本,内容如下:
apt-get update && apt-get install -y libreoffice libreoffice-writer
gunicorn --bind=0.0.0.0 --timeout 600 app:app
  1. 进入Azure Web App门户的「配置」-「常规设置」,将启动命令设置为./startup.sh,保存后重启应用。

步骤2:Python代码实现转换逻辑

直接通过subprocess调用LibreOffice命令行完成转换,示例代码如下:

import subprocess
import os

def docx_to_pdf(docx_path, output_dir="/tmp"):
    # 调用LibreOffice无头模式转换
    cmd = [
        "libreoffice",
        "--headless",
        "--convert-to", "pdf",
        "--outdir", output_dir,
        docx_path
    ]
    subprocess.run(cmd, check=True, capture_output=True)
    # 拼接生成的PDF文件路径
    pdf_filename = os.path.splitext(os.path.basename(docx_path))[0] + ".pdf"
    return os.path.join(output_dir, pdf_filename)
注意事项
  • Azure Web App的实例规格建议选择B1及以上配置,可用内存不低于1G,避免LibreOffice运行时被系统OOM机制终止。
  • 转换过程中的临时文件建议存放在Azure系统默认开放写入权限的/tmp目录下,避免权限报错。
  • 首次部署应用启动时间较长,可适当调整应用启动超时阈值到1800秒,避免部署失败。

内容的提问来源于stack exchange,提问作者Trelaquix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 01:09:04