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

如何在无Word环境的虚拟机中用Python实现含图片的RTF转PDF?

无Word环境下Python转换含图片RTF到PDF的可行方案

之前尝试的两种方法局限性很明显:reportlab搭配RTF插件对嵌入式图片的支持不完善,win32com完全依赖Office环境。这里提供一个不需要Word、能处理带图片RTF的方案,核心是利用LibreOffice的无界面模式完成转换。

步骤1:安装LibreOffice

LibreOffice是开源办公套件,支持跨平台无界面(headless)运行,能完美处理RTF中的图片和格式。

  • Linux(Debian/Ubuntu):
    sudo apt update && sudo apt install libreoffice libreoffice-writer
    
  • Linux(CentOS/RHEL):
    sudo yum install libreoffice libreoffice-writer
    
  • Windows:
    下载静默安装包后,用命令行完成无交互安装:
    LibreOffice_XX.X.X_Win_x64.msi /qn
    

步骤2:Python调用LibreOffice Headless转换

用subprocess模块直接调用LibreOffice的命令行工具,无需额外依赖库。

示例代码:

import subprocess
import os

def convert_rtf_to_pdf(rtf_file_path, output_directory):
    # 创建输出目录(不存在则自动生成)
    os.makedirs(output_directory, exist_ok=True)
    
    # 根据系统指定LibreOffice可执行文件路径
    # Windows示例路径:"C:\\Program Files\\LibreOffice\\program\\soffice.exe"
    soffice_executable = "soffice"  # Linux/macOS默认路径
    
    # 构建转换命令
    conversion_cmd = [
        soffice_executable,
        "--headless",  # 无界面模式
        "--convert-to", "pdf",  # 目标格式
        "--outdir", output_directory,  # 输出目录
        rtf_file_path
    ]
    
    try:
        # 执行命令并捕获输出
        subprocess.run(conversion_cmd, check=True, capture_output=True, text=True)
        pdf_output_path = os.path.join(
            output_directory,
            os.path.splitext(os.path.basename(rtf_file_path))[0] + ".pdf"
        )
        print(f"转换完成,输出文件:{pdf_output_path}")
        return pdf_output_path
    except subprocess.CalledProcessError as e:
        print(f"转换出错:{e.stderr}")
        return None

# 使用示例
if __name__ == "__main__":
    convert_rtf_to_pdf("sample.rtf", "./pdf_output")

注意事项

  • Windows系统必须替换soffice_executable为实际安装路径,比如"C:\\Program Files\\LibreOffice\\program\\soffice.exe"
  • 若转换后格式有偏差,可尝试添加--norestore参数避免残留进程干扰
  • 确保LibreOffice版本≥7.0,提升RTF兼容性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:40:00