Pour enlever l’en-tête et le pied de page qui s’ajoutent automatiquement quand on imprime ou qu’on enregistre en PDF une vue du widget, il y a une option dans la modale d’impression du navigateur, par exemple dans Firefox il faut décocher « Imprimer les en-têtes et pied de page » :
Bonjour Cédric, avec plaisir
Je n’ai pas connaissance d’un moyen de personnaliser le nom du fichier enregistré avec des données dynamiques.
L’alternative à laquelle je pense s’il y a un grand nombre de documents à sauvegarder, c’est de passer par un outil d’automatisation comme n8n pour générer le PDF et le nommer automatiquement avec des données de la table.
Il faudra utiliser un connecteur qui permet de transformer du html en PDF (@maxime.lacoste a utilisé Gotenborg par exemple). En ayant conscience que ces outils intermédiaires ont accès aux données envoyées…
A priori, avec n8n et Gotenberg auto-hébergés, tu restes maître·sse de tes données.
Ah je ne savais pas que Gotenberg était libre ! super. Je viens de regarder ça a l’air très bien fait cet outil https://gotenberg.dev/
Gotenberg offre une API conviviale pour les développeurs, permettant d’interagir avec des outils performants tels que Chromium et LibreOffice afin de convertir de nombreux formats de documents (HTML, Markdown, Word, Excel, etc.) en fichiers PDF, et bien plus encore !
Bonjour @Cedric , finalement, une solution ici
Enregistrer en masse - publipostage
Bonjour
Merci pour ce fil de discussion qui permet de voir la méthode pour faire de beaux courriers, sauf que…
Dans mon courrier, j’ai l’affichage Missions[19] car ma colonne Mission est de type Référence et de même pour toutes les colonnes de ce type.
Est-il possible de résoudre ce problème ?
Merci d’avance pour votre aide.
Bonjour,
En effet, car les références pointent vers toute la ligne sous-jacente. Ce que vous pouvez faire : créer une colonne d’assistance dans votre table, qui récupère la valeur brute : par exemple = $Missions.Nom_Mission
C’est un peu pénible et l’idéal serait de pouvoir obtenir cette donnée via la formule.
J’ai fait quelques tests, on peut facilement savoir si la colonne est une référence avec
if hasattr(attr, "_row_id"):
return "coucou"
Mais je ne sais pas comment accéder à la colonne affichée, la « displayColumn », disponible quand on fait un appel API mais peut-être pas dans les formules - peut-être que quelqu’un a une idée ?
Bonjour
Merci pour la réponse.
Effectivement, si je duplique les colonnes concernées ça fonctionne. ![]()
Je trouve cette solution un peu bricolée et je trouve dommage que l’affichage ne soit pas directement celui de la valeur.
L’important c’est que ça marche. ![]()
Merci pour l’aide
Et pour formater au format 25 décembre 2025 :
# Formate la date en français
if isinstance(attr, datetime.date):
date_str = attr.strftime(format = '%d-%m-%Y')
d, m, y = date_str.split('-')
mois = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre", "décembre"]
return d + " " + mois[int(m)] + " " + y
attention, les listes démarrent à 0 en python, il faut donc faire mois[int(m) - 1] pour que ça fonctionne ![]()
Bonjour,
J’ai créé une table me servant à recueillir des données, puis ensuite à valider certaines décisions. En utilisant le widget, comme décrit ici, j’ai pu créé une vue personnalisée sous forme de courrier pour expliciter les décisions prises (un grand merci à vous tous).
J’aimerai maintenant pouvoir, en activant un switch dans la table (validation), pouvoir ouvrir la fenêtre d’impression. Cela est-il possible? Et si oui, comment feriez-vous?
Merci beaucoup
Bonjour, j’ai créé un custom widget qui permet d’ouvrir la boîte d’impression pour les fichiers sélectionnés grâce à une colonne booléen, et qui permet de les enregistrer ou de les imprimer individuellement :
https://forum.grist.libre.sh/t/publipostage-custom-widget-pour-enregistrer-facilement-les-pdfs/2286
Il y a aussi ce modèle/cw de @ailepet qui affiche un bouton « Imprimer » au-dessus du document publiposté ![]()
Merci beaucoup. J’ai testé votre widget et cela fonctionne.
J’aurai toutefois encore deux questions (je cherche à automatiser le plus possible pour gagner en efficacité lors des réunions de travail):
- Y aurait-il possibilité d’enregistrer le format du nom du fichier exporté?
- Enfin (j’ai aperçu un exemple de ce type dans le forum mais impossible de remettre la main dessus), connaitriez-vous un moyen d’automatiser la procédure (ouverture de l’impression dès la validation du booléen (sans passer par un bouton d’impression)?
Avec plaisir !
Y aurait-il possibilité d’enregistrer le format du nom du fichier exporté?
Je ne suis pas sûre de bien comprendre, ce serait d’enregistrer le nom qu’on définit pour les document pour les sessions suivantes ?
connaitriez-vous un moyen d’automatiser la procédure (ouverture de l’impression dès la validation du booléen
Malheureusement non, on utilise souvent le mailto pour ouvrir le client mail, mais je ne connais pas d’équivalent pour ouvrir la fenêtre d’impression. Très intéressée si vous retrouvez !
Je ne suis pas sûre de bien comprendre, ce serait d’enregistrer le nom qu’on définit pour les document pour les sessions suivantes ?
Oui c’est cela.
Actuellement, j’ai défini la formule et l’ai collée dans une table pour que mes collègues puisse y avoir accès et la retrouver, mais si cela est possible, j’aurai aimé que cela soit enregistré ou bien pouvoir y faire référence sans aucune autre forme d’intervention (car ce sera toujours la même formule qui sera utilisée). Si cela n’est pas possible, ça n’est pas très grave et encore merci pour votre widget. ![]()
Malheureusement non, on utilise souvent le
mailtopour ouvrir le client mail, mais je ne connais pas d’équivalent pour ouvrir la fenêtre d’impression. Très intéressée si vous retrouvez !
Je viens de le retrouver: il s’agit du sujet: Custom widget "Ordres de mission" : créer un PDF dans Grist et l'enregistrer en PJ. ![]()
Lorsque je lance le test (Ex - custom widget Ordres de mission - Grist), le PDF est automatiquement créé et téléchargé dès que l’on clique sur une ligne, sans l’étape de validation qui semble être normalement l’étape suivante. De plus, chez moi, la page n’est pas préalablement visualisée.
Merci des précisions et de la trouvaille ![]()
Oui c’est cela.
Dac, oui c’est une tbi, il faudra juste que j’ajoute le fait d’enregistrer la valeur dans les options du widget !
Je viens de le retrouver: il s’agit du sujet: Custom widget « Ordres de mission » : créer un PDF dans Grist et l’enregistrer en PJ.
Lorsque je lance le test (Ex - custom widget Ordres de mission - Grist), le PDF est automatiquement créé et téléchargé dès que l’on clique sur une ligne, sans l’étape de validation qui semble être normalement l’étape suivante. De plus, chez moi, la page n’est pas préalablement visualisée.
Ah je vois, c’est un peu différent du coup : c’est plutôt « enregistrer un PDF dans une colonne PJ de ma table » plutôt que « ouvrir la boîte d’impression au clic sur un booléen dans la table ».
Mais oui hyperpratique et justement je cherche depuis un moment à faire cela (et je ne suis pas la seule); sauf que je me heurte à un blocage de sécurité CORS cf Custom widget "Intra form" : Formulaire interne - #25 par audezu
On est en train de regarder la proposition explicitée ici Allow attachment upload from a custom widget · Issue #2040 · gristlabs/grist-core · GitHub
Ce qui m’étonne, c’est qu’au moment où j’ai écrit le post sur les ordres de mission, l’upload fonctionnait bien …
Alors qu’aujourd’hui quand je clique sur « Enregistrer dans grist », j’ai cette fameuse erreur CORS et la PJ n’est pas chargée… @florent.fayolle tu sais ce qui a pu changer entre temps ?
Ah je vois, c’est un peu différent du coup : c’est plutôt « enregistrer un PDF dans une colonne PJ de ma table » plutôt que « ouvrir la boîte d’impression au clic sur un booléen dans la table ».
Oui effectivement, mais c’est ce qui se rapproche le plus de ce que j’avais en tête… ![]()
Intéressant comme retour ! Au 31 mars, l’upload fonctionnait alors qu’aujourd’hui, le même widget ne fonctionne plus, c’est ce que tu racontes ?
Si c’est le cas, on peut jeter un coup d’œil au code du widget, et par ailleurs tenter de reproduire le problème localement et lancer ce qu’on appelle une bissection pour retrouver le patch qui a engendré ce comportement (j’ose pas encore parler de régression).
Bonsoir,
Je reviens avec la suite de mes questionnements (problèmes car je débute sur ce type de sujet).
Toujours dans mon document, j’ai un champ de type « Texte » servant à recueillir les préconisations. Celles-ci sont mises en forme avec des passages à la ligne.
Quand j’affiche le pdf, toutes les indications se retrouvent les unes dernière les autres et ne sont pas facilement lisibles.
![]()
Dans mon code html, j’ai essayé de jouer avec la valeur « display » mais sans succès. J’ai même tenté le « Textarea » mais qui n’est pas pratique car il ne s’adapte pas à la longueur du texte (ou alors je n’ai pas réussi à le configurer, ce qui peut être tout aussi probable).
Auriez-vous une solution?
Oui c’est ça, je veux bien qu’on regarde stp
le code est ici : grist-custom-widgets-fr-admin/app/omFiller at main · betagouv/grist-custom-widgets-fr-admin · GitHub




