You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Mac OS下如何用Python将docx转pdf?遇权限问题求解决方案

Python修改docx后转PDF的解决方案

我之前折腾过python-docx转PDF的问题,碰到过和你一模一样的docx2pdf权限报错,给你几个亲测有效的方案:

方案一:修复docx2pdf的权限问题

你遇到的报错大概率是Word进程占用文件或者权限不足导致的,可以试试这几个调整:

  • 关闭所有打开的Word窗口,后台残留的Word进程可能会锁定文件,导致无法读取。
  • 运行Python脚本时右键选择“以管理员身份运行”,避免系统权限限制。
  • 确保文件路径没有特殊字符(比如中文、空格),如果有,用引号包裹路径,或者换成纯英文路径。
  • 试试添加keep_active=True参数,让Word进程保持活跃,有时候能解决临时文件锁定的问题:
from docx2pdf import convert
convert(r'/my/folder/myChangedDocument.docx', r'/my/folder/myChangedDocument.pdf', keep_active=True)

方案二:用Win32COM直接调用Word(Windows专属)

这个方法稳定性比docx2pdf高,因为直接调用Word的原生接口,绕过了docx2pdf的封装问题:

import win32com.client as win32
from docx import Document

# 打开并修改文档
doc = Document('./myDocument.docx')
# 你的修改代码放在这里
doc.save(r'/my/folder/myChangedDocument.docx')

# 调用Word COM接口转PDF
word_app = win32.gencache.EnsureDispatch('Word.Application')
word_app.Visible = False  # 后台运行,不弹出Word窗口
try:
    word_doc = word_app.Documents.Open(r'/my/folder/myChangedDocument.docx')
    # 17是PDF格式的常量编号,Word COM接口固定值
    word_doc.SaveAs(r'/my/folder/myChangedDocument.pdf', FileFormat=17)
    word_doc.Close()
finally:
    word_app.Quit()

注意:路径前加r避免转义字符问题,运行前确保你的电脑安装了Microsoft Word。

方案三:跨平台方案(Windows/Linux/Mac)—— LibreOffice

如果需要跨平台运行,推荐用LibreOffice的命令行工具转换,不需要依赖Word:

  1. 先安装LibreOffice(官网下载对应系统版本)
  2. 用subprocess调用转换命令:
import subprocess
from docx import Document

# 修改并保存docx文档
doc = Document('./myDocument.docx')
doc.save(r'/my/folder/myChangedDocument.docx')

# 调用LibreOffice转PDF
# Windows下注意把soffice换成完整路径,比如r"C:\Program Files\LibreOffice\program\soffice.exe"
subprocess.run([
    "soffice",
    "--headless",  # 无头模式,不显示界面
    "--convert-to", "pdf",
    "--outdir", r"/my/folder",
    r"/my/folder/myChangedDocument.docx"
], check=True)

如果是Linux系统,可能需要先安装libreoffice-writer包(比如apt install libreoffice-writer)。

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

火山引擎 最新活动