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

无Microsoft Word环境下Docx转PDF及PDF文本替换技术求助

无Word环境下Docx转PDF及PDF文本替换解决方案

一、Docx直接转PDF的可行方案

以下是无需Microsoft Word的跨平台转档方案,均能较好保留原文档格式:

1. LibreOffice 命令行转换

LibreOffice是免费开源的办公套件,支持无界面模式转档:

  • 安装:下载对应系统版本的LibreOffice并完成安装
  • 执行命令:
    # Mac/Linux
    soffice --headless --convert-to pdf input.docx
    
    # Windows(需先将LibreOffice的program目录添加到系统PATH)
    soffice.exe --headless --convert-to pdf input.docx
    
    执行后会在同目录生成同名PDF文件。

2. Pandoc + TeX 环境转换

Pandoc是文档格式转换工具,结合TeX环境可实现高精度转档:

  • 安装:
    • 安装Pandoc
    • 安装TeX环境(如TeX Live、MikTeX)
  • 执行命令:
    pandoc input.docx -o output.pdf
    
    该方案对复杂排版(如公式、表格)的支持较好。

3. Unoconv 转换

Unoconv基于LibreOffice,简化了命令行操作:

  • 安装:
    # Mac(用Homebrew)
    brew install unoconv
    
    # Linux(Debian/Ubuntu)
    sudo apt-get install unoconv
    
  • 执行命令:
    unoconv -f pdf input.docx
    

二、PDF文本替换代码修复

你提供的PyPDF2代码无法正常运行,原因是PyPDF2不支持直接修改PDF内容结构,强行修改_data会破坏原有排版和资源。推荐使用PyMuPDF(fitz),它能精准替换文本且保留图片、排版:

修复后的代码

import fitz  # 需先安装:pip install pymupdf

def replace_text_in_pdf(input_path, output_path, old_text, new_text):
    doc = fitz.open(input_path)
    for page in doc:
        # 搜索所有匹配的文本位置
        text_boxes = page.search_for(old_text)
        for box in text_boxes:
            # 用白色矩形覆盖原有文本
            page.draw_rect(box, color=(1, 1, 1), fill=(1, 1, 1))
            # 在原位置插入新文本,自动匹配原文本高度
            page.insert_text(box.tl, new_text, fontsize=box.height, color=(0, 0, 0))
    doc.save(output_path)
    doc.close()

# 替换参数
input_file = '/Users/eden/Downloads/downloaded-4.pdf'
output_file = '/Users/eden/Downloads/MAKINOTEEE.pdf'
old_text = 'Hola'
new_text = 'POTORRO'

replace_text_in_pdf(input_file, output_file, old_text, new_text)

方案说明

  • PyMuPDF会精准定位文本的 bounding box,用白色矩形覆盖原文本后插入新内容,不会影响图片、原有字体排版
  • 若新文本长度与原文本差异较大,可能需要调整字体大小或手动适配位置,避免排版溢出

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 18:13:13