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

如何在MacOS下无界面将Word Docx转换为PDF?

在MacOS下隐藏Word界面并阻止权限弹窗的解决方案

一、修改docx2pdf调用逻辑,隐藏Word界面

docx2pdf在MacOS底层通过AppleScript调用Microsoft Word,默认会显示Word窗口。你可以通过以下两种方式实现后台隐藏运行:

方法1:自定义AppleScript直接调用

跳过docx2pdf库,用Python的subprocess执行自定义AppleScript,完全控制Word的运行状态:

import os
import subprocess

def docx_to_pdf(docx_path, pdf_path):
    script = f'''
    tell application "Microsoft Word"
        set visible to false
        open POSIX file "{docx_path}" with prompting no
        save active document in POSIX file "{pdf_path}" as PDF
        close active document saving no
        quit
    end tell
    '''
    subprocess.run(['osascript', '-e', script], check=True)

# 使用示例
docx_file = '/tmp/One_of_hundreds.docx'
if os.path.splitext(docx_file)[1].lower() == '.docx':
    pdf_path = os.path.splitext(docx_file)[0] + '.pdf'
    docx_to_pdf(docx_file, pdf_path)

其中set visible to false会让Word在后台运行,with prompting no可避免打开文件时的弹窗。

方法2:修改docx2pdf源码(临时方案)

找到docx2pdf安装目录下的macos.py文件,修改其中的AppleScript片段,添加上述两个参数,后续调用docx2pdf时就会自动隐藏Word界面。

二、阻止首次权限弹窗

首次转换时的权限请求可通过提前授权解决:

  • 打开系统设置 → 隐私与安全性 → 文件与文件夹
  • 找到Microsoft Word,勾选你存放docx文件的目标文件夹(比如/tmp)
  • 重启Word后,后续转换就不会再弹出权限对话框。

三、替代方案:用LibreOffice无界面转换

如果不想依赖Microsoft Word,可使用LibreOffice的命令行工具,全程无界面且无权限弹窗:

import os
import subprocess

def docx_to_pdf_libreoffice(docx_path, pdf_path):
    subprocess.run([
        '/Applications/LibreOffice.app/Contents/MacOS/soffice',
        '--headless',
        '--convert-to', 'pdf',
        '--outdir', os.path.dirname(pdf_path),
        docx_path
    ], check=True)

需先安装LibreOffice,官网下载安装后即可使用上述命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 23:37:13