Je viens de corriger quelques petits problèmes sur le PDF du Django Book que j'avais généré.
Voici la liste des points corrigés :
  • Correction de la table des matières :
    Les sous chapitres n'avaient pas de numéro de page. En fait, dans le script build_toc.py, j'écrasait par mégarde les id sur le balise <h*>.
  • Correction de la mise en page des codes sources :
    • Décalage de la première ligne du bloc : remise à zéro de la propriété CSS text-indent pour les tag <pre />.
    • Indentation incorrecte : ce problème venait de deux choses. L'utilisation de la fonction prettify de BeautifulSoup, qui ré-indentait le HTML, je suis revenu à un simple appel de la fonction str(). Enfin, pour les codes sources avec du texte en mis en gras, BeautifulSoup, en trouvant les tag <strong />, perdait le formatage. J'ai ajouté au dictionnaire QUOTE_TAGS la clef 'pre' qui indique à BeautifulSoup de ne pas analyser le code à l'intérieur des base <pre / >.
  • Caractère inconnu correspondant au symbole TM : je les remplace par <sup>TM</sup>.

Comme on me l'a demandé, voici les commandes à enchaîner pour généré le PDF :
python make_django_book.py
python build_toc.py > res2.html
/usr/local/bin/prince res2.html -o res.pdf

Et donc voici le résultat : Version HTML - Version PDF