Converting DOCX to PDF in Python is harder than it looks — Microsoft Word's rendering engine isn't available on Linux servers. Here's every viable method.
Method 1 — LibreOffice CLI (Best for Linux Servers)
import subprocess
def docx_to_pdf(input_path, output_dir):
subprocess.run([
'libreoffice', '--headless', '--convert-to', 'pdf',
'--outdir', output_dir, input_path
], check=True)
LibreOffice is available on all Linux distros. Results are very close to Word output. Install: apt install libreoffice.
Method 2 — python-docx2pdf (Windows/Mac)
from docx2pdf import convert
convert('input.docx', 'output.pdf')
Requires Microsoft Word installed. Perfect on Windows/Mac, doesn't work on Linux servers.
Method 3 — unoconv
import subprocess
subprocess.run(['unoconv', '-f', 'pdf', 'input.docx'])
Wraps LibreOffice. Simpler API than direct LibreOffice CLI. Install: apt install unoconv.
Method 4 — Online API
For one-off conversions without server dependencies, ZeroPhantom's file converter handles DOCX-to-PDF via API or web interface.
Comparison
- Linux server: LibreOffice CLI or unoconv
- Windows/Mac dev machine: python-docx2pdf
- No install: online converter API
- Fidelity: All are close; complex Word styles render slightly differently in LibreOffice
Convert DOCX to PDF free — no setup →