## LibreOffice como herramienta de conversión headless
LibreOffice en modo `--headless` convierte documentos desde la línea de comandos sin interfaz gráfica — es la herramienta de conversión masiva más potente y gratuita disponible.
Puede convertir: DOCX/DOC → PDF, ODT, HTML, TXT | XLSX/XLS → PDF, ODS, CSV | PPTX/PPT → PDF, ODP | RTF → DOCX, PDF.
## Instalación
```bash
sudo apt install libreoffice # Ubuntu/Debian
brew install --cask libreoffice # macOS
choco install libreoffice # Windows
```
## Conversión básica
```bash
libreoffice --headless --convert-to pdf documento.docx
libreoffice --headless --convert-to pdf planilla.xlsx
libreoffice --headless --convert-to pdf presentacion.pptx
libreoffice --headless --convert-to odt documento.docx
libreoffice --headless --convert-to csv planilla.xlsx
```
## Especificar directorio de salida
```bash
libreoffice --headless --convert-to pdf --outdir /ruta/salida/ documento.docx
libreoffice --headless --convert-to pdf --outdir /pdf/ *.docx
```
## Conversión masiva con find
```bash
find /documentos/ -name "*.docx" -exec \
libreoffice --headless --convert-to pdf --outdir /salida/ {} \;
# En paralelo (más rápido)
find /documentos/ -name "*.docx" | \
parallel -j4 libreoffice --headless --convert-to pdf --outdir /salida/ {}
```
## Uso con Python
```python
import subprocess, os
from pathlib import Path
def docx_to_pdf(input_path, output_dir):
os.makedirs(output_dir, exist_ok=True)
result = subprocess.run([
'libreoffice', '--headless', '--convert-to', 'pdf',
'--outdir', output_dir, input_path
], capture_output=True, timeout=120)
return result.returncode == 0
for f in Path('/documentos').glob('*.docx'):
ok = docx_to_pdf(str(f), '/pdf')
print(f"{'✓' if ok else '✗'} {f.name}")
```
## Problemas frecuentes
**"user profile locked"** — múltiples instancias en paralelo:
```bash
libreoffice --env:UserInstallation="file:///tmp/lo-$RANDOM" \
--headless --convert-to pdf documento.docx
```
**Fuentes faltantes en Linux:**
```bash
sudo apt install fonts-liberation fonts-dejavu fonts-freefont-ttf
```
**Macros VBA** no se ejecutan en modo headless por seguridad.
## Conclusión
LibreOffice headless es la solución gratuita más potente para conversión masiva de documentos. Con `parallel` o Python `subprocess` escala a miles de documentos por hora.
Guía