build-pdf.py 39 lignes · 1190 octets
#!/usr/bin/env python3
"""
Génère un PDF par langue à partir des fichiers book/<lang>/print.html.

Installation (une fois) :
    pip install weasyprint

Usage :
    ./scripts/build-pdf.py                 # toutes les langues
    ./scripts/build-pdf.py fr en           # langues spécifiques
    OUT_DIR=./dist ./scripts/build-pdf.py  # dossier de sortie custom

Sortie par défaut : book/<lang>/documentation.pdf
"""

import os
import sys
from pathlib import Path
from weasyprint import HTML

ROOT = Path(__file__).resolve().parent.parent
BOOK = ROOT / "book"
LANGS = sys.argv[1:] or ["fr", "en", "de", "es", "pt", "it"]
OUT_DIR = Path(os.environ["OUT_DIR"]) if os.environ.get("OUT_DIR") else ROOT / "pdf"
OUT_DIR.mkdir(parents=True, exist_ok=True)

for lang in LANGS:
    src = BOOK / lang / "print.html"
    if not src.exists():
        print(f"{src} introuvable — lance build-all-langs.sh d'abord", file=sys.stderr)
        continue

    out = OUT_DIR / f"documentation-{lang}.pdf"

    print(f"{lang} : {src}{out}")
    HTML(filename=str(src), base_url=str(src.parent)).write_pdf(str(out))
    print(f"{out.stat().st_size // 1024} KB")

print("\n✓ Terminé.")