LibreOffice 完全指南:从下载安装到 Python 自动化转换 PDF 为 Word
今天是节后的第一天,就暂且不分享技术了,分享一个工具:LibreOffice
前段时间我有一个朋友找我,怎么修改pdf上文字,然后重新导出成pdf,这个要求属实让我头大,直到我找到了LibreOffice 完美满足了这个需求,还让我通过 Python 脚本实现了文档处理的自动化,极大提升了工作效率。
今天,我将分享这份《LibreOffice 完全指南》,涵盖从下载安装、基础使用技巧,到利用 Python 实现 PDF 转 Word 的完整自动化流程。无论你是学生、研究人员、内容创作者还是办公人员,都能从中受益。
一、LibreOffice 是什么?
LibreOffice 是一款功能强大、完全免费且开源的办公套件,由 The Document Foundation 开发和维护。它是 Microsoft Office 的优秀替代品,无需订阅费用,支持跨平台(Windows、macOS、Linux),并持续更新。
核心组件一览:
| 组件 | 功能 | 类似于 |
|---|---|---|
| Writer | 文字处理 | Microsoft Word |
| Calc | 电子表格 | Microsoft Excel |
| Impress | 演示文稿 | Microsoft PowerPoint |
| Draw | 矢量绘图与图表 | Visio / PowerPoint 绘图 |
| Base | 数据库管理 | Microsoft Access |
| Math | 公式编辑器 | Word 公式工具 |
✅ 优势:支持 ODF(开放文档格式)标准,兼容 Microsoft Office 文件(DOCX、XLSX、PPTX),并可导出 PDF、HTML、EPUB 等多种格式。
相关操作页面展示
导出pdf
二、下载与安装指南
1. 访问官网
前往官方下载页面:
👉 www.libreoffice.org/download/do…
2. 选择版本
- Stable(稳定版):推荐大多数用户使用,功能成熟,兼容性好。
- Fresh(新鲜版):包含最新功能,适合追求新特性的用户,但可能存在小 Bug。
3. 安装步骤(按系统分类)
🖥️ Windows 系统
# 1. 下载 `.exe` 安装包(约 300MB)
# 2. 双击运行安装程序
# 3. 选择“典型安装”或“自定义安装”
# 4. 建议勾选:
# - 创建桌面快捷方式
# - 关联常用文档格式(.docx, .xlsx, .pptx)
🍎 macOS 系统
# 1. 下载 `.dmg` 文件
# 2. 挂载镜像后,将 LibreOffice 拖拽至“应用程序”文件夹
# 3. 首次运行时,若提示“无法打开”,请前往:
# 系统设置 → 隐私与安全性 → 允许来自“App Store 以外”的应用
🐧 Linux 系统(Ubuntu/Debian/CentOS)
# Ubuntu / Debian
sudo apt update
sudo apt install libreoffice
# CentOS / RHEL
sudo yum install libreoffice
# 或使用 Snap 包管理器(推荐)
sudo snap install libreoffice
💡 提示:Linux 用户可通过
libreoffice --version验证是否安装成功。
三、基础使用技巧
1. 界面概览
- 菜单栏:文件、编辑、视图、插入、格式等
- 工具栏:常用操作一键访问(加粗、居中、字体设置等)
- 样式面板(F11):快速应用标题、正文、列表等样式
- 导航器(F5):快速跳转文档结构
2. 支持的文件格式
| 类型 | 格式 |
|---|---|
| 原生格式 | .odt, .ods, .odp |
| Microsoft 兼容 | .docx, .xlsx, .pptx |
| 输出格式 | .pdf, .html, .epub, .txt |
| 导入支持 | .pdf, .rtf, .csv |
🔍 PDF 导出:
文件 → 导出为 → 导出为 PDF,可设置压缩质量、书签、权限等。
3. 实用功能推荐
- 模板库:内置简历、报告、信函等模板,提升效率。
- 扩展插件:通过
工具 → 扩展管理器添加语法检查、翻译工具等。 - 宏支持:可用 Python、Basic 编写自动化脚本。
四、重要注意事项
⚠️ 格式兼容性
- 大多数 DOCX/XLSX 文件可完美打开。
- 复杂排版、高级宏、特定字体 可能需要手动调整。
- 建议转换后检查格式是否错乱,尤其是表格和图片。
⚙️ 性能优化建议
- 大型文档建议分章节处理。
- 关闭不必要的扩展(如 Java 支持)以加快启动速度。
- 清理缓存路径:
~/.config/libreoffice/4/user/backup/(Linux/macOS)或%APPDATA%\LibreOffice\4\user\backup\(Windows)
❓ 常见问题解决
| 问题 | 解决方案 |
|---|---|
| 启动缓慢 | 禁用 Java:工具 → 选项 → 高级 → 取消勾选 Java |
| 字体缺失 | 安装常用中文字体包(如思源黑体) |
| 文件损坏 | 使用“恢复”功能或从备份恢复 |
五、Python 自动化:PDF 转 Word
LibreOffice 内置强大的命令行工具,结合 Python 可实现 批量自动化转换,非常适合处理大量 PDF 文档。
1. 环境准备
pip install python-docx # 可选:用于后续 Word 内容处理
# LibreOffice 已提供命令行支持,无需额外库
✅ 确保 LibreOffice 已正确安装并可全局调用。
方法一:基础转换脚本(推荐)
import subprocess
import os
import sys
def setup_libreoffice_path():
"""自动查找 LibreOffice 可执行文件路径"""
if sys.platform == "win32":
paths = [
r"C:\Program Files\LibreOffice\program\soffice.exe",
r"C:\Program Files (x86)\LibreOffice\program\soffice.exe"
]
elif sys.platform == "darwin":
paths = ["/Applications/LibreOffice.app/Contents/MacOS/soffice"]
else:
paths = ["libreoffice", "/usr/bin/libreoffice"]
for path in paths:
if os.path.exists(path):
return path
raise FileNotFoundError("未找到 LibreOffice,请检查是否已安装")
def pdf_to_docx(pdf_file, output_dir=None):
"""
将单个 PDF 文件转换为 DOCX 格式
参数:
pdf_file (str): PDF 文件路径
output_dir (str): 输出目录(默认为 PDF 所在目录)
返回:
bool: 转换是否成功
"""
if not os.path.exists(pdf_file):
print(f" 错误:文件不存在 - {pdf_file}")
return False
if output_dir is None:
output_dir = os.path.dirname(pdf_file) or "."
os.makedirs(output_dir, exist_ok=True)
try:
libreoffice = setup_libreoffice_path()
cmd = [
libreoffice,
'--headless', # 无界面运行
'--convert-to', 'docx', # 转换为目标格式
'--outdir', output_dir, # 输出目录
pdf_file # 输入文件
]
print(f"开始转换: {os.path.basename(pdf_file)}")
result = subprocess.run(cmd, capture_output=True, text=True, check=True)
if result.returncode == 0:
output_file = os.path.join(
output_dir,
os.path.splitext(os.path.basename(pdf_file))[0] + '.docx'
)
print(f"转换成功: {output_file}")
return True
else:
print(f"转换失败: {result.stderr}")
return False
except subprocess.CalledProcessError as e:
print(f"命令执行失败: {e.stderr}")
return False
except Exception as e:
print(f"错误: {e}")
return False
# 批量转换函数
def batch_pdf_to_docx(pdf_folder, output_folder=None):
"""
批量转换指定文件夹中的所有 PDF 文件
"""
if output_folder is None:
output_folder = os.path.join(pdf_folder, "converted_docx")
success_count = 0
total_count = 0
for filename in os.listdir(pdf_folder):
if filename.lower().endswith('.pdf'):
total_count += 1
pdf_path = os.path.join(pdf_folder, filename)
if pdf_to_docx(pdf_path, output_folder):
success_count += 1
print(f"批量转换完成: {success_count}/{total_count} 个文件成功")
return success_count
# 使用示例
if __name__ == "__main__":
# 单文件转换
pdf_to_docx("example.pdf")
# 批量转换
# batch_pdf_to_docx("./pdf_documents", "./editable_docs")
方法二:高级封装类(支持更多选项)
import subprocess
import os
from pathlib import Path
class PDFToWordConverter:
def __init__(self, libreoffice_path=None):
self.libreoffice_path = libreoffice_path or self._find_libreoffice()
def _find_libreoffice(self):
return setup_libreoffice_path()
def convert_with_options(self, pdf_file, output_dir=None, **options):
"""
支持自定义选项的转换
参数:
pdf_file: PDF 文件路径
output_dir: 输出目录
options:
- language: 设置文档语言(如 'zh-CN')
- invisible: 是否隐藏窗口(默认 True)
"""
pdf_file = Path(pdf_file)
if not pdf_file.exists():
print(f"文件不存在: {pdf_file}")
return False
output_dir = Path(output_dir or pdf_file.parent)
output_dir.mkdir(exist_ok=True)
cmd = [self.libreoffice_path, '--headless', '--convert-to', 'docx']
cmd.extend(['--outdir', str(output_dir)])
# 添加语言选项(可选)
if lang := options.get('language'):
cmd.extend(['--language', lang])
cmd.append(str(pdf_file))
try:
subprocess.run(cmd, check=True, capture_output=True, text=True)
print(f"转换成功: {pdf_file.name}")
return True
except subprocess.CalledProcessError as e:
print(f"转换失败: {e.stderr}")
return False
# 使用示例
converter = PDFToWordConverter()
converter.convert_with_options(
"document.pdf",
output_dir="./converted",
language="zh-CN"
)
六、实用场景示例
🌐 场景1:博客内容批量处理
# 将收集的 PDF 资料转换为可编辑的 Word 文档
batch_pdf_to_docx("./blog_resources", "./editable_docs")
📊 场景2:自动化内容提取(后续处理)
from docx import Document
def extract_text_from_docx(docx_file):
doc = Document(docx_file)
return "\n".join([para.text for para in doc.paragraphs])
# 先转换,再提取
pdf_to_docx("research.pdf")
text = extract_text_from_docx("research.docx")
print(text[:500]) # 预览前500字符
七、故障排除
❌ LibreOffice 未找到
# 手动指定路径
converter = PDFToWordConverter("/usr/bin/libreoffice") # Linux
converter = PDFToWordConverter(r"C:\Program Files\LibreOffice\program\soffice.exe") # Windows
🔐 权限问题(Linux/macOS)
chmod +x /usr/bin/libreoffice
# 或使用 sudo(不推荐长期使用)
🔒 文件被锁定
import time
# 转换前等待片刻,避免文件冲突
time.sleep(1)
八、总结与建议
通过 LibreOffice + Python 的组合,你可以轻松实现:
✅ 零成本 使用完整办公套件
✅ 批量自动化 文档格式转换
✅ 无缝 PDF → Word 转换,保留基本排版
✅ 集成到工作流,提升内容创作效率
📌 小贴士
- 定期更新 LibreOffice 以获得更好的兼容性和安全修复。
- 转换前备份原始文件,避免意外覆盖。
- 对关键文档进行人工校对,确保格式无误。
- 结合
python-docx进一步处理 Word 内容(如提取、修改、生成报告)。
相关资源
- 📘 LibreOffice 官方文档
- 🐍 Python 官方文档
- 🧰 LibreOffice Extensions
- 📢 更多自动化技巧:blog.example.com/automation
注意
- 经过我自己测试,如果使用代码进行转换时,会出现很多问题。个人建议还是不要使用代码了,但是学习还是自己动手敲敲。建议直接使用LibreOffice
- 如果有需要源码啥的,可以私信我(我自己写了一个简单的pdf转word的脚本。如果pdf是文本类型,基本格式啥的完全正确。如果pdf是扫描件或者图片类型,目前只能通过ocr将文字识别出来,格式啥的是我自己编排的,可能不适用所有的。)
希望这篇《LibreOffice 完全指南》能帮助你解放双手,提升文档处理效率!如果你有使用心得或遇到问题,欢迎在评论区留言交流 📝💬