{"id":23088236,"url":"https://github.com/yeswiki/yeswiki-extension-publication","last_synced_at":"2025-08-16T07:31:30.422Z","repository":{"id":38101899,"uuid":"61289697","full_name":"YesWiki/yeswiki-extension-publication","owner":"YesWiki","description":"Crée un PDF (livres, livrets, fanzines) à partir d'une sélection de page YesWiki.","archived":false,"fork":false,"pushed_at":"2024-03-14T10:55:58.000Z","size":2462,"stargazers_count":3,"open_issues_count":9,"forks_count":4,"subscribers_count":13,"default_branch":"master","last_synced_at":"2024-04-15T12:12:20.745Z","etag":null,"topics":["fanzine","paged-media","pagedjs","pdf-generation","printing","tangible-web"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/YesWiki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":".github/CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"SUPPORT.md","governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2016-06-16T12:06:28.000Z","updated_at":"2022-01-19T09:35:33.000Z","dependencies_parsed_at":"2024-03-05T12:54:31.402Z","dependency_job_id":null,"html_url":"https://github.com/YesWiki/yeswiki-extension-publication","commit_stats":null,"previous_names":[],"tags_count":29,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YesWiki%2Fyeswiki-extension-publication","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YesWiki%2Fyeswiki-extension-publication/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YesWiki%2Fyeswiki-extension-publication/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/YesWiki%2Fyeswiki-extension-publication/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/YesWiki","download_url":"https://codeload.github.com/YesWiki/yeswiki-extension-publication/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":230019819,"owners_count":18160602,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["fanzine","paged-media","pagedjs","pdf-generation","printing","tangible-web"],"created_at":"2024-12-16T20:16:18.323Z","updated_at":"2024-12-16T20:16:18.950Z","avatar_url":"https://github.com/YesWiki.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Extension YesWiki publication\n\n - [English](#english)\n - [Français](#extension-yesWiki-publication)\n\n----\n\nUne extension [YesWiki] pour créer des documents imprimables (format PDF) à partir d'une sélection de [fiches Bazar][Bazar] et/ou de [pages de contenu][yeswiki-page].\n\n----\n\n\u003e **Cette page est une documentation technique**. Une documentation sur son usage est détaillée sur [cette page](https://yeswiki.net/?doc#/tools/publication/docs/fr/README.md) sur le site de YesWiki ou directement dans [votre YesWiki](/tools/publication/docs/fr/README.md) s'il est à jour.\n\n\n## Introduction \n\nLa mise en page est effectuée par [Paged.js](https://www.pagedjs.org/)\n([documentation](https://www.pagedjs.org/documentation/)), et la capture PDF par un [navigateur dit \"headless\"][headless-browser] (par défaut [chromium](#pré-requis)).\n\nLes publications générées sont de type [livres/livrets](#pour-générer-des-livrets-téléchargeables), [fanzines](#pour-générer-des-livrets-téléchargeables) ou [newsletter](#pour-générer-des-newsletters).\n\n\u003ctable\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"docs/fr/images/screenshot-edit.png\" alt=\"\"\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"docs/fr/images/screenshot-preview.png\" alt=\"\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth scope=\"col\"\u003eAssemblage de pages (\u003ca href=\"#action-publicationgenerator\"\u003eaction \u003ccode\u003e{{publicationgenerator}}\u003c/code\u003e\u003c/a\u003e)\u003c/th\u003e\n    \u003cth scope=\"col\"\u003ePublication PDF qui reprend les styles du wiki\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"docs/fr/images/screenshot-page-index.png\" alt=\"\"\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"docs/fr/images/screenshot-bazar-export.png\" alt=\"\"\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth scope=\"col\"\u003eUne page \"publication\", avec actions de téléchargement et prévisualisation (auteur·ices et admin)\u003c/th\u003e\n    \u003cth scope=\"col\"\u003eBouton d'export à ajouter (\u003ca href=\"#action-bazar2publication\"\u003eaction \u003ccode\u003e{{bazar2publication}}\u003c/code\u003e\u003c/a\u003e)\u003c/th\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003ctd\u003e\n      \u003cimg src=\"styles/fanzine-layouts/single-page.svg\" alt=\"\"\u003e\n    \u003c/td\u003e\n    \u003ctd\u003e\n    \u003c/td\u003e\n  \u003c/tr\u003e\n  \u003ctr\u003e\n    \u003cth scope=\"col\"\u003eExemple de pliage de fanzine\u003c/th\u003e\n    \u003cth scope=\"col\"\u003e\u003c/th\u003e\n  \u003c/tr\u003e\n\u003c/table\u003e\n\n## Pré-requis technique\n\nAvoir installé [Chromium](https://www.chromium.org/Home) **sur\nle serveur**. Éventuellement, connaître le chemin d'accès vers l'exécutable s'il est différent de `/usr/bin/chromium`.\n\nPour installer Chrome sous Ubuntu/Debian :\n\n```bash\nsudo apt install -y --no-install-recommends chromium\n```\n\n## Fonctionnement général\n\nLa génération d'une publication se fait en plusieurs étapes.\n\n1. Sélection des éléments constitutifs de la publication.\n2. Organisation des éléments constitutifs au sein de la publication.\n3. Génération et enregistrement de la publication.\n4. Production du PDF.\n\nL'action `{{publicationgenerator}}` prend en charge les étapes 1, 2 et 3.\n\nLe handler `/pdf` prend en charge l'étape 4.\n\n### Pour générer des livrets téléchargeables\n\nUtiliser l'action `{{publicationgenerator}}`. Aucun paramètre n'est obligatoire.\n\nChaque publication est générée sous forme d'une page wiki. Le nom de cette page sera constitué de la valeur du paramètre `pagenameprefix` suivie du titre de l'ebook (par défaut `Ebook`).\n\nOn pourra utilement consulter la section [Action `{{publicationgenerator}}`](#action-publicationgenerator) ci-après.\n\n### Pour générer des newsletters\n\nAvant de pouvoir générer des newsletters, il faut créer un formulaire bazar suivant avec la structure suivante :\n\n```\ntexte***bf_titre***Titre***60***255*** *** *** ***1***0***\ntexte***bf_description***Description***60***255*** *** *** ***0***0***\ntexte***bf_author***Auteur***60***255*** *** *** ***0***0***\ntextelong***bf_content***Contenu de la newsletter***20***20*** *** ***html***1***0***\n```\n\nUn fois ce formulaire créé, il faut trouver son id et utiliser l'action `{{publicationgenerator}}` avec, au minimum les paramètres suivants :\n\n- `outputformat=\"newsletter\"`\n- `formid=\"\u003cid du formulaire\u003e\"`\n\nSoit, au minimum : `{{publicationgenerator outputformat=\"newsletter\" formid=\"\u003cid du formulaire\u003e\"}}`\n\nChaque newsletter générée sera enregistrée sous la forme d'une fiche bazar du formulaire \\\u003cid du formulaire\u003e sur le wiki.\n\nOn pourra utilement consulter la section [Action `{{publicationgenerator}}`](#action-publicationgenerator) ci-après.\n\n## Actions YesWiki\n\nL'extension publication ajoute deux actions à votre wiki.\n\n| Action                    | Utilité                                       |\n| ---                       | ---                                           |\n| `{{publicationgenerator}}`| Interface de sélection du contenu de la publication et de création du document imprimable (cf. [Action `{{publicationgenerator}}`](#action-publicationgenerator)) |\n| `{{publicationlist}}`           | Liste des ebooks générés et imprimables (cf. [Action `{{publicationlist}}`](#action-publicationlist)) |\n| `{{bazar2publication}}`   | Exporte les résultats d'une sélection de fiches Bazar en PDF (cf. [Action `{{bazar2publication}}`](#action-bazar2publication)) |\n| `{{blankpage}}`           | Insère une page vide à l'impression. |\n| `{{pagebreak}}`           | Crée un saut de page à l'impression. |\n| `{{publication-template}}`| Combiné avec `{{bazar2publication templatepage=\"…\"}}`, signale l'emplacement réservé à l'injection de contenus. |\n\nCes actions s'ajoutent, comme toute action YesWiki, dans un contenu de page.\n\n### Action `{{publicationgenerator}}`\n\nCette action affiche une interface permettant de\n\n- sélectionner, parmi les fiches bazar et pages YesWiki, les éléments constituant la publication ;\n- organiser ces différents éléments au sein de la publication ;\n- créer le document imprimable résultant.\n\nLes différents paramètres de cette action sont les suivants.\n\n*N.B* — Dans les explications qui suivent, le terme \"sélection\" désigne la sélection des éléments constitutifs d'une publication.\n\n#### **groupselector**\n\n*S'il est utilisé, ce paramètre doit l'être conjointement au paramètre `titles`.*\n\nListe des groupes d'éléments proposés à la sélection.\n\nDans la liste,\n\n- les groupes doivent être séparés par des virgules ;\n- les pages YesWiki seront identifiées par le mot \"pages\" ;\n  pour une page YesWiki, on peut préciser, entre parenthèses et après \"pages\",\n  - une liste de mots clefs associés à ces pages,\n  - les critères doivent être séparés par des \"|\" ;\n- un formulaire bazar est identifié par son numéro identifiant (exemple : \"1\"),\n  pour un formulaire, on peut préciser, entre parenthèses et après son numéro,\n  - une liste de critères de sélection dans ce formulaire,\n  - les critères doivent être séparés par des \"|\".\n\nExemple – les éléments suivants\n- Les pages wiki \"pages wiki\", reprenant les pages du wiki ;\n```\n{{publicationgenerator titles=\"pages wiki\" groupselector=\"pages\"}}\n```\n- Les pages wiki taggées \"important\", reprenant les pages du wiki catégorisées (au moyen d'un mot-clef) comme importantes ;\n```\n{{publicationgenerator titles=\"important\" groupselector=\"pages(important)\"}}\n```\n- Les fiches associées à un formulaire \"recettes de cuisine\", reprenant les fiches du formulaire 1 ;\n```\n{{publicationgenerator titles=\"recettes de cuisine\" groupselector=\"1\"}}\n```\n- Certaines fiches \"livres\", reprenant les fiches du formulaire 2 dont l'auteur est \"Rabelais\" ou dont la taille est \"long\" ;\n```\n{{publicationgenerator titles=\"livres\" groupselector=\"2(bf_auteur=Rabelais|bf_taille=long)\"}}\n```\n\n```\n{{publicationgenerator titles=\"pages wiki, important, recettes de cuisine, livres\" groupselector=\"pages, pages(important), 1, 2(bf_auteur=Rabelais|bf_taille=long)\"}}\n```\n\nExemple – Pour organiser les éléments proposés dans quatre groupes différents,\n- un groupe, nommé \"pages wiki\", reprenant les pages du wiki ;\n- un groupe, nommé \"important\", reprenant les pages du wiki catégorisées (au moyen d'un mot-clef) comme importantes ;\n- un groupe, nommé \"recettes de cuisine\", reprenant les fiches du formulaire 1 ;\n- un groupe, nommé \"livres\", reprenant les fiches du formulaire 2 dont l'auteur est \"Rabelais\" ou dont la taille est \"long\" ;\n\n```\n{{publicationgenerator titles=\"pages wiki, important, recettes de cuisine, livres\" groupselector=\"pages, pages(important), 1, 2(bf_auteur=Rabelais|bf_taille=long)\"}}\n```\n\n#### **title**\n\nTitre des publications à générer.\n\nSi ce paramètre est renseigné, le titre de la publication sera celui qu'il donne. Et l'utilisateur ne se verra pas proposer de choix lors de la sélection.\n\nSi ce paramètre n'est pas renseigné ou est vide, l'utilisateur pourra, lors de la sélection, saisir un titre.\n\nExemple  :\n\n```\n{{publicationgenerator title=\"Guerre et paix\"}}\n```\n\n#### **outputformat**\n\nDétermine le type de publication générée (ebook ou newsletter).\n\nS'il n'est pas précisé, ce paramètre vaut \"ebook\".\n\nExemple – pour générer une newsletter il faut donc écrire :\n\n```\n{{publicationgenerator outputformat=\"newsletter\"}}\n```\n\n#### **formid**\n\n*Paramètre spécifique et obligatoire dans le cas où on souhaite générer une newsletter.*\n\nLorsqu'une newsletter est générée, elle est enregistrée sous forme d'une fiche bazar (voir à cet effet la section \"Pour générer des newsletters\"). Ce paramètre permet de spécifier le numéro identifiant du formulaire bazar en question.\n\nExemple – pour générer une newsletter avec le formulaire bazar \"2\", il faut donc écrire :\n\n```\n{{publicationgenerator outputformat=\"newsletter\" formid=\"2\"}}\n```\n\n#### **pagestart**\n\nNom de la page à utiliser comme page d'introduction de la publication.\n\nExemple :\n\n```\n{{publicationgenerator pagestart=\"MaPageWiki\"}}\n```\n\n#### **pageend**\n\nNom de la page à utiliser comme page de fin de la publication.\n\nExemple :\n\n```\n{{publicationgenerator pageend=\"MaPageWiki\"}}\n```\n\n#### **pagenameprefix**\n\n*Paramètre utilisé uniquement dans le cas d'un ebook.*\n\nLorsqu'un ebook est généré, il est enregistré sous forme d'une page YesWiki (voir à cet effet la section \"Pour générer des ebooks\"). Ce paramètre permet de spécifier le préfixe automatiquement ajouté en début du nom de la page ainsi créée.\n\nS'il n'est pas précisé, ce paramètre vaut \"Ebook\".\n\nExemple – pour générer un ebook avec le préfixe \"MesEDoc\", il faut donc écrire :\n\n```\n{{publicationgenerator outputformat=\"ebook\" ebookpagenameprefix=\"MesEDoc\"}}\n```\n\n\n#### **addinstalledpage**\n\nCertaines pages de YesWiki ont un statut un peu particulier. Il s'agit des pages créées par défaut lor de l'installation du wiki. Parmi ces pages on trouve, les pages de menu, les entêtes, pieds de pages, mais également PagePincipale.\n\nSi ce paramètre n'est pas présent, ou s'il est vide, ou s'il est égal à 0, lors de la sélection, on ne propose pas ces pages.\n\nToute autre valeur de ce paramètre, fera apparaître ces pages.\n\nExemple – pour faire apparaître les pages créées lors del 'installation du wiki, il peut écrire :\n\n```\n{{publicationgenerator addinstalledpage=\"1\"}}\n```\n\n#### **coverimage**\n\n*Paramètre utilisé uniquement dans le cas d'un ebook.*\n\nCe paramètre contient l'adresse de l'image de couverture utilisée en 1re page de couverture des ebooks générés.\n\nSi ce paramètre n'est pas renseigné ou est vide, l'utilisateur pourra, lors de la sélection en vue d'un ebook, choisir une image de couverture.\n\nExemple  :\n\n```\n{{publicationgenerator outputformat=\"ebook\" coverimage=\"monImage.jpg\"}}\n```\n\n#### **title**\n\nTitre par défaut des publications à générer.\n\nExemple  :\n\n```\n{{publicationgenerator title=\"Guerre et paix\"}}\n```\n\n#### **desc**\n\nDescription par défaut des publications à générer.\n\nExemple  :\n\n```\n{{publicationgenerator desc=\"Les nouveautés du mois dernier\"}}\n```\n\n#### **author**\n\nAuteur·ices par défaut des publications à générer.\n\nExemple  :\n\n```\n{{publicationgenerator author=\"George Sand\"}}\n```\n\n#### **chapterpages**\n\nListe des noms des pages YesWiki à utiliser comme chapitre des publications à générer.\n\nDans la liste, les noms doivent être séparés par des virgules.\n\nSi ce paramètre est renseigné, les pages ainsi désignées seront proposées par défaut dans la publication lors de la sélection.\n\nL'utilisateur pourra, lors de la sélection, choisir les pages qu'il souhaite mettre à la suite de chaque chapitre.\n\nExemple  :\n\n```\n{{publicationgenerator chapterpages=\"DebutChapitreUn, DebutChapitreDeux, DebutChapitreTrois\"}}\n```\n\n#### **readonly**\n\nSpécifie si les titre, description, auteur·ices, image et chapitres sont modifiables par l'utilisateur.\n\nLes paramètres d'impression restent modifiables dans tous les cas.\n\nExemple :\n\n```\n{{publicationgenerator readonly}}\n```\n\n### Action `{{publicationlist}}`\n\nCette action liste les ebook générés.\n\n#### **pagenameprefix**\n\nLe paramètre `pagenameprefix` précise le préfixe par lequel commencent les noms de pages correspondant à des ebooks.\n\nS'il n'est pas précisé, ce paramètre vaut \"Ebook\".\n\nExemple – Pour lister les ebooks dont le préfixe est \"MesEDoc\", il faut donc écrire :\n\n```\n{{publicationlist outputformat=\"ebook\" pagenameprefix=\"MesEDoc\"}}\n```\n\n### Action `{{bazar2publication}}`\n\nCette action exporte les résultats d'une sélection de fiches Bazar en PDF en cliquant sur un bouton. Le téléchargement débute au bout de quelques secondes.\nIl n'y a pas d'étape de personnalisation.\n\nL'action est à placer à côté d'une action `{{bazar}}` ou `{{bazarliste}}`.\n\nTous les paramètres sont facultatifs.\n\n#### **title**\n\nPersonnalise le texte affiché sur le bouton.\n\n```\n{{bazar2publication title=\"Imprimer ces résultats\"}}\n```\n\n#### **icon**\n\n_Par défaut_ : `fa-book`.\n\nPersonnalise l'icône affichée (par défaut, `fa-book`).\n\nÀ choisir parmi le [catalogue Font Awesome](https://fontawesome.com/v4.7.0/icons/).\n\n```\n{{bazar2publication icon=\"fa-cloud-download\"}}\n```\n\n#### **templatepage**\n\nPar défaut, chaque fiche Bazar démarre sur une nouvelle page.\n\nCet attribut importe la configuration d'une page Ebook : thème et style de présentation, ainsi que les éléments de configuration saisis dans le formulaire de création.\n\n```\n{{bazar2publication templatepage=\"EbookModelePourBazar\"}}\n```\n\nUn Ebook modèle se crée comme tout autre publication, à partir d'une [action `{{publicationgenerator}}`](#action-publicationgenerator).\n\nPar défaut, le _contenu_ de la page modèle est remplacé par les fiches Bazar.\nL'utilisation de l'action [`{{publication-template}}`](#action-publication-template) dans la page modèle vous donne la liberté de choisir l'emplacement où les fiches Bazar seront insérées.\n\n### Action `{{publication-template}}`\n\nCette action se place dans une page Ebook dont vous voulez vous servir comme modèle de publication.\n\nCe modèle de publication s'utilise notamment pour personnaliser un export depuis une liste Bazar à l'aide du [bouton généré par l'action `{{bazar2publication}}`](#action-bazar2publication).\n\n```\n{{include page=\"EbookPageIntro\" class=\"publication-cover\"}}\n{{include page=\"EbookRemerciements\"}}\n\u003cmark\u003e{{publication-template}}\u003c/mark\u003e\n{{include page=\"EbookPageFin\" class=\"publication-end\"}}\n```\n\n## Handlers (ou suffixes) de page\n\nL'extension publication ajoute deux handlers aux pages de votre wiki.\n\n| handler       | Utilité                        |\n| ---           | ---                            |\n| `/pdf`        | Télécharge un document en PDF  |\n| `/preview`    | Prévisualise un document |\n\nCes fonctions sont accessibles depuis le sous-menu \"partager\" du bas de page.\n\n## Adapter templates et contenus\n\n### Vous souhaitez escamoter certaines parties de vos pages wiki lors de l'édition du pdf\n\nà priori, deux class permettent de cacher des parties du votre wiki :\n - `\"\"\u003cdiv class=\"no-print\"\u003e \"\"bla bla à supprimer à l'impression\"\"\u003c/div\u003e\"\" `\n - `\"\"\u003cdiv class=\"hide-print\"\u003e \"\"bla bla à supprimer à l'impression\"\"\u003c/div\u003e\"\" `\n\n### Surcharger les styles d'impression par défaut\n\nDes styles d'impression par défaut sont ajoutés pour vous donner le moins de travail possible lors de la création d'une publication.\nIl y a plusieurs mécanismes pour **personnaliser vos styles d'impression** en créant des feuilles de styles (fichiers `.css`) :\n\n| Répertoire                                                  | Noms possibles            | À quoi ça s'applique ?\n| ---                                                         | ---                       | ---\n| `custom/tools/publication/*.css`                            | Peu importe               | Toute publication, peu importe le thème\n| `custom/tools/publication/print-layouts/*.css`              | `fanzine.css`, `book.css` | Seulement les fanzines, ou les livres/livrets, peu importe le thème\n| `themes/NOM_DU_THEME/tools/publication/*.css`               | Peu importe               | Toute publication, pour un thème donné\n| `themes/NOM_DU_THEME/tools/publication/print-layouts/*.css` | `fanzine.css`, `book.css` | Seulement les fanzines, ou les livres/livrets, pour un thème donné\n\n## Configuration serveur (`wakka.config.php`)\n\n**Remarque** : les réglages principaux sont exposés dans l'action `{{ editconfig }}`.\n\nLe fichier de configuration [`wakka.config.php`][wakka-config] accepte\nplusieurs paramètres pour ajuster le rendu PDF à votre infrastructure informatique.\n\n| Clé de configuration                   | Valeur par défaut                  | Utilité\n| ---                                    | ---                                | ---\n| `htmltopdf_path`                       | `/usr/bin/chromium`                | Indique l'emplacement du programme chargé\n| `htmltopdf_options`                    | `['windowSize' =\u003e [1440, 780], 'noSandbox' =\u003e true]`  | Options par défaut passées au navigateur embarqué\n| `htmltopdf_service_url`                |                                    | Adresse du serveur YesWiki qui fera le rendu à distance\n| `htmltopdf_service_authorized_domains` |                                    | Si votre serveur partage les fonction de générateur de pdf, il faut lui indique les nom de domaines autorisés\n| `htmltopdf_base_url` |                 | Si votre serveur n'a pas accès au wiki via la valeur de `base_url`\n\n### … avec Chrome sur votre serveur\n\n```php\narray(\n    ...\n    'htmltopdf_path' =\u003e '/usr/bin/chrome',\n    'htmltopdf_options' =\u003e ['windowSize' =\u003e [1440, 780], 'noSandbox' =\u003e true],\n    ...\n);\n```\n\n### Vous avez un YesWiki qui est autorisé à utiliser le service pdf de https://example.org/yeswiki\n\n```php\narray(\n    ...\n    'htmltopdf_service_url' =\u003e 'https://example.org/yeswiki/?PagePrincipale/pdf',\n    ...\n);\n```\n\n### Vous avez un YesWiki qui est un service pdf pour d'autres wikis\n\nVous devez indiquer les noms de domaine que vous autorisez :\n\n```php\narray(\n    ...\n    'htmltopdf_service_authorized_domains' =\u003e ['example.org', 'youpi.com', 'toto.fr'],\n    ...\n);\n```\n\n### Avec Docker / reverse-proxy\n\n⚠️ **Utilisation avancée**\n\nLa génération de PDF va échouer sur un environnement technique où YesWiki _et_ Chromium sont dans un conteneur Docker — ou un reverse-proxy — qui n'a pas accès au réseau externe, c'est-à-dire au wiki via l'URL configurée dans `base_url` du `wakka.config.php`.\n\n`htmltopdf_base_url` sera utilisée comme substitut pour accéder aus contenus du wiki (pages, images, vidéos, etc.).\n\n```php\n// docker run -p 8000:80 …\narray(\n    // URL exposée par le conteneur Docker (extérieur)\n    'base_url' =\u003e 'https://example.com:8000/?,\n    ...\n    // URL à l'intérieur du conteneur Docker (port interne)\n    'htmltopdf_base_url' =\u003e 'http://localhost:80/?',\n);\n```\n\n## English\n\nA [YesWiki] extension to create printable documents (PDF format) from a selection of [Bazar entries][Bazar] and/or [content pages][yeswiki-page].\n\n----\n\n\u003e **This page is a technical documentation**. Documentation n the usage of the extension is avaialable on [this page (fr)](https://yeswiki.net/?doc#/tools/publication/docs/fr/README.md) on the YesWiki website or directly into [your YesWiki (fr)](/tools/publication/docs/fr/README.md) if it is up-to-date.\n\n### Introduction \n\nPagination is done by [Paged.js](https://www.pagedjs.org/)\n([documentation](https://www.pagedjs.org/documentation/)), and PDF print by a [\"headless\" browser][headless-browser] by default [chromium](#pré-requis-techniques)).\n\nGenerated publications are of type [books/booklets](#pour-générer-des-livrets-téléchargeables '(french)'), [fanzines](#pour-générer-des-livrets-téléchargeables '(french)') or [newsletter](#pour-générer-des-newsletters '(french)').\n\n### Installation\n\nSee [dedicated documentation](docs/en/README.md)\n\n[YesWiki]: https://yeswiki.net/\n[Bazar]: https://yeswiki.net/?doc#/docs/users/fr/bazar\n[yeswiki-page]: https://yeswiki.net/?doc#/docs/users/fr/prise-en-main\n[headless-browser]: https://developers.google.com/web/updates/2017/04/headless-chrome","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyeswiki%2Fyeswiki-extension-publication","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fyeswiki%2Fyeswiki-extension-publication","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fyeswiki%2Fyeswiki-extension-publication/lists"}