"book_me : pour illuminer vos signets !"
J'ai déjà relaté mes aventures avec les signets/bookmarks dans les PDF, comment parfois les logiciels de mise en page, ou ceux qui génèrent nos pdf, peuvent ne pas suffire. Parce qu'ils n'ont pas la fonctionnalité de les générer (maintenant, Affinity le fait), ou parce que justement la manière dont la génération est intégrée ne correspond pas à ce qu'on cherche à faire.
J'avais donc mis au point un petit process, mais qui au final s'avérait un peu fastidieux (passer par plusieurs étapes, plusieurs logiciels, lancer des macros...). Et là, j'en ai récemment eu besoin à nouveau. Et j'ai regardé pour améliorer mon process.
Ce qui a abouti à book_me : https://codeberg.org/gulix/book_me.
Il s'agit d'un script python qui va me/vous permettre d'ajouter des bookmarks dans n'importe quel pdf, à partir d'un fichier au format très simple, facile à rédiger et mettre à jour. Genre ça :
- Chapter 1 [1]
- Chapter 1 - Part 1 [2]
- Chapter 1 - Part 2 [3]
- Chapter 2 [5]
- Chapter 2 - Part 1 [6]
- Chapter 2 - Part 1 - Section 1 [7]
- _Chapter 2 - Part 2[8]
- Chapter 3 [10]
Une simple liste de type markdown. Vous indentez pour faire des sous-groupes, et vous mettez le titre que vous voulez. Vous finissez la ligne par le numéro de page entre crochets. Et c'est tout ! Et vous pouvez faire les groupes que vous voulez : les numéros de page n'ont pas à se suivre !
La méthodologie est simple. Vous mettez votre PDF quelque part. Vous créez un fichier texte qui s'appelle exactement comme le fichier pdf, mais avec l'extension .md
au lieu de .pdf
. Vous récupérez le script (genre, si vous y connaissez rien à python, juste l'exécutable fourni). Vous le lancez, il vous demande de rentrer le numéro de votre pdf, et c'est bon. Vous avez un nouveau PDF avec les bookmarks indiqués dans votre fichier. Et vous pouvez facilement le mettre à jour.
Vous pouvez mettre des bookmarks sur des PDF qui n'en ont pas, les automatiser facilement lorsque vous êtes encore en phase de mises à jour (ou que vous récupérez régulièrement un document mis à jour). Ces bookmarks s'ajoutent, donc si le document en a déjà d'autres, ils se rajoutent. Et vous pouvez les organiser comme vous voulez : les pages n'ont pas à se suivre !
On s'amuse un peu ?
Et puis, alors que je cherchais une bonne bibliothèque python me permettant de manipuler les PDF, j'ai découvert qu'elle offrait un peu plus.
Comme le gras et l'italique par exemple. Alors, je me suis dit, et si je les rajoutais, pour voir ? Et vous savez quoi ? Et bien ça marche ! Dans les bookmarks, certains peuvent être en gras, d'autres en italique ! Donc, enrobez les titres de **
pour du gras, de _
pour de l'italique. C'est du tout ou rien, par contre. Sur une ligne, on ne peut pas juste mettre en gras un mot.
Et puis, la couleur. Oui, les bookmarks peuvent être en couleurs ! Alors j'ai essayé, et ça marchait plutôt bien. Donc, j'ai intégré ça au fichier. À la fin d'une ligne, après le numéro de page, renseignez un code RGB du type #54AF35
, et hop votre ligne sera dans cette couleur !
J'ai aussi laissé la possibilité d'indiquer des numéros de page en mode "relatif". Ca peut parfois servir, notamment lors de la conception, quand les numéros changent souvent, qu'on rajoute des pages ici ou là. Comment faire ? Indiquez juste, au lieu du numéro de page, [+3]
si le bookmark concerné se trouve 3 pages après celui juste au-dessus dans le fichier. À part la première ligne, toutes peuvent être en relatif.
Code ouvert
Le code de tout ça est donc en python. Si vous n'y connaissez rien, l'exécutable windows existe. Ne vous embêtez pas avec autre chose.
Sinon, le code est open source, et cela me permet de tester Codeberg, une alternative qui me semble plus éthique actuellement que github. Tout est là.
Quelques ajustements/améliorations sont sans doute à prévoir, et si vous avez des soucis avec l'outil, des idées, n'hésitez pas à les signaler dans les Issues, ou directement en me contactant. Et si vous l'utilisez, n'hésitez pas à m'en parler et à mentionner l'outil !