## LibreOffice as a Headless Conversion Tool
LibreOffice's `--headless` mode converts documents from the command line without a GUI β making it the most powerful free batch document conversion tool available.
Converts: DOCX/DOC β PDF, ODT, HTML, TXT | XLSX/XLS β PDF, ODS, CSV | PPTX/PPT β PDF, ODP | RTF β DOCX, PDF.
## Installation
```bash
sudo apt install libreoffice # Ubuntu/Debian
brew install --cask libreoffice # macOS
choco install libreoffice # Windows
```
## Basic Conversion
```bash
libreoffice --headless --convert-to pdf document.docx
libreoffice --headless --convert-to pdf spreadsheet.xlsx
libreoffice --headless --convert-to pdf presentation.pptx
libreoffice --headless --convert-to odt document.docx
libreoffice --headless --convert-to csv spreadsheet.xlsx
```
## Specify Output Directory
```bash
libreoffice --headless --convert-to pdf --outdir /path/output/ document.docx
libreoffice --headless --convert-to pdf --outdir /pdfs/ *.docx
```
## Batch Conversion
```bash
find /documents/ -name "*.docx" -exec \
libreoffice --headless --convert-to pdf --outdir /output/ {} \;
# Parallel processing (faster)
find /documents/ -name "*.docx" | \
parallel -j4 libreoffice --headless --convert-to pdf --outdir /output/ {}
```
## Using with 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('/documents').glob('*.docx'):
ok = docx_to_pdf(str(f), '/pdfs')
print(f"{'β' if ok else 'β'} {f.name}")
```
## Common Issues
**"user profile locked"** β multiple parallel instances:
```bash
libreoffice --env:UserInstallation="file:///tmp/lo-$RANDOM" \
--headless --convert-to pdf document.docx
```
**Missing fonts on Linux:**
```bash
sudo apt install fonts-liberation fonts-dejavu fonts-freefont-ttf
```
**VBA macros** don't execute in headless mode for security.
## Conclusion
LibreOffice headless is the most powerful free tool for batch document-to-PDF conversion. Combined with `parallel` or Python `subprocess`, it scales to thousands of documents per hour.
Guide