--- title: Un modèle pagedjs pour la BUNIGE date: 2023-04-21T11:19:03+02:00 id: 20230421111912 tags: [modèle, pagedjs, PDF, BUNIGE] --- # [Un modèle *pagedjs* pour la BUNIGE][1] ## Licence Ce projet est sous [licence MIT][2]. ## Description Ce projet est un modèle et une mise en forme pour produire un PDF suivant la charte de la [Bibliothèque de l'Université de Genève][3]. Il a pour objectif d'être ajouté rapidement à un projet utilisant [paged.js][4] pour générer des PDF à partir d'un contenu en markdown. ## Usage Une solution est de télécharger les fichiers et répertoires suivants à la racine de votre propre projet : - `static/`. - `style.css`. - `template.html`. - `interface.css`. - `heg-iso-690.csl`. Vous pouvez faire ces téléchargement à la main, ou télécharger le fichier `.zip` de la [publication de version][7]. Une autre méthode est de cloner le projet et de rédiger votre document au sein de celui-ci. ## Structure du répertoire À la racine du répertoire se trouve les fichiers nécessaires au modèle : - Le modèle lui-même : `template.html`. - La feuille de style qui rend possible l'interface web pour la prévisualisation du document au format HTML : `interface.css` (fichier faisant partie du projet [paged.js][4] : [interface.css][6]). - Le fichier de style bibliographique qui fait partie à part entière du modèle, car il est la norme utilisée par la charte : `heg-iso-690.csl`. Il est extrait du répertoire des styles `.csl` : [haute-ecole-de-gestion-de-geneve-iso-690.csl][5]. Dans le dossier `example` se trouvent les sources pour pouvoir donner un exemple : - Le document markdown lui-même : `example.md`. - Une liste de références bibliographiques au format BibLaTeX : `references.bib`. ## Prérequis - `pandoc`. - `pagedjc-cli` (`npm install -g puppeteer pagedjs pagedjs-cli`). ## Génération du PDF d'exemple Lancer les commandes depuis le répertoire `./example`. Pour générer le fichier HTML a visualiser dans le navigateur : ```bash pandoc --citeproc \ --template=../template.html --css=../style.css \ --toc --toc-depth=2 \ --to=html --output=example.html example.md ``` - `--citeproc` assure que les références bibliographiques soient traitées. - `--template=` et `--css=` définissent le modèle et les règles de style à utiliser. - `--toc` et `toc-depth=2` génèrent la table des matière en se limitant au 2e niveau. Puis lancer un serveur web à la racine du projet (par exemple avec `python -m http.server`), et ouvrir le fichier HTML généré avec Chromium (ou Chrome) pour pouvoir l'imprimer au format PDF. Pour générer directement le PDF, en utilisant `pagedjs` au moyen de `pandoc` : ```bash pandoc --citeproc \ --to=pdf --pdf-engine=pagedjs-cli \ --css=../style.css \ --template=../template.html \ --toc --toc-depth=2 \ -V noscript=true --output=example.pdf example.md ``` - `--pdf-engine=` impose `pagedjs` pour la conversion en PDF. - `-V noscript=true` permet d'indiquer que la feuille de style de l'interface web de `pagedjs` et les scripts javascript utile dans le navigateur web ne soient pas utilisés, car ils perturbent la conversion par `pandoc`. Pour générer le PDF en utilisant directement `pagedjs` : ```bash pandoc --citeproc \ --to=html --toc --toc-depth=2 \ --template=../template.html --css=../style.css \ --output example.html example.md \ && pagedjs-cli example.html --style ../style.css --output example.pdf ``` **Attention !** Chacune de ces méthodes produit des différences. À vous de les observer et de choisir laquelle vous convient le mieux. ## Rédaction du document Pour la rédaction du document, il est utile de se référer à la documentation de la syntaxe markdown, mais aussi à la documentation de `pandoc`. Quelques points sont données en exemples dans le fichier `example/example.md`, comme par exemple [La police][8] ou [Les titres][9]. [1]: ./ [2]: ./LICENSE [3]: https://www.unige.ch/biblio/fr/ "Site officiel de la Bibliothèque de l'Université de Genève" [4]: https://pagedjs.org/ [5]: https://raw.githubusercontent.com/citation-style-language/styles/blob/master/haute-ecole-de-gestion-de-geneve-iso-690.csl [6]: https://gitlab.coko.foundation/pagedjs/interface-polyfill/-/raw/master/interface.css [7]: https://git.milhit.ch/igor/bunige-pagedjs-template/releases/latest [8]: ./example/example.md#police [9]: ./example/example.md#titres