Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(PrintService): Pouvoir exporter des rapports (étape 4) #9

Open
cboucheIGN opened this issue Oct 22, 2024 · 9 comments
Open

feat(PrintService): Pouvoir exporter des rapports (étape 4) #9

cboucheIGN opened this issue Oct 22, 2024 · 9 comments
Assignees
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@cboucheIGN
Copy link
Contributor

Besoin

Pouvoir extraire les synthéses et rapport sous un document (pdf) à télécharger.

Contrainte

Un rapport produit par un site DSFR doit aussi respecter le DSFR (il existe un design des rapports)

Solution

Proposer une solution technique.

Si besoin créer un service en backend dédié à l'impression (puppetter) / voir implémentation dans projet ign-mut/igd/igd-api

@cboucheIGN cboucheIGN added enhancement New feature or request help wanted Extra attention is needed labels Oct 22, 2024
@David-IGN
Copy link
Collaborator

Peut-on envisager un service externe ?
Par exemple, nouveau projet Foreg-printer, qui permettrai, selon les informations envoyées dans l'URL, de générer un PDF. (C'est ce que j'ai sur DSF un autre projet.)
J'ai aussi utilisé Node.js/Puppeteer.

@moreaud
Copy link
Collaborator

moreaud commented Oct 22, 2024

Il est possible de faire une mise en page d'impression avec le CSS media print, et de l'exporter en PDF
Mais la mise en page peut être laborieuse avec les sauts de page, hauteur et longueur de lignes...

@cboucheIGN
Copy link
Contributor Author

Ce qui pourrait permettre de trancher c'est la compléxité des rapports à générer. Mais on sait pas encore.
En tout les cas la solution Puppetter est adapté pour les rapport simple / complexe.
Donc je pencherai pour le confort de développement / maintenablité en implémentant cette solution.

@David-IGN
Copy link
Collaborator

Vous auriez un avis sur le format dont vous voulez pour l'url d'appel au service ?

/pdf?id_forest=55

/pdf/55

@cboucheIGN
Copy link
Contributor Author

cboucheIGN commented Oct 24, 2024

En prod on acceptera surement un POST, pour tester tu peux aussi accepter les GET avec query params

POST
geportail-environement.beta.gouv.fr/api-print/report/
Accept-Type: application/json
Referer: geportail-environement.beta.gouv.fr
{ "forestName": "Fontainebleau", "type": "rapport.biodiversite" }

@cboucheIGN
Copy link
Contributor Author

A terme le parcours fichier impression ne sera peut être pas retenu.

Est-il possible de simuler le print pour préparer le fichier et l'envoyer en téléchargement ?

@David-IGN
Copy link
Collaborator

Quand tu dis le parcours fichier impression ne sera pas retenu.

  • Il n'y aura pas de bouton de prévisualisation de la page à imprimer ?

Pour "simuler" le print pour un envoie on a toujour la possibilité d'utiliser l'api symfony ou le service geportail-environement.beta.gouv.fr-printer. Mais niveau développement ca implique pas mal de problème :

1 - Comment récupérer les informations pour la carte

  • situé la carte
  • niveau de zoom
  • dessin réaliser par l'utilisateur (multi-polygone)
  • couche afficher ou non avec leur opacité

Solution possible :

  • Toutes les infos pourrai être passé par url

2 - Récupère les textes des différents onglet des thématiques

Solution possible :

  • Les texts sont en base de donnée et il est possible des les récupères via api ?

@moreaud
Copy link
Collaborator

moreaud commented Nov 19, 2024

on peut peut-être faire une ressource POST /api/forets/pdf (ou /rapport pour le cas où il y aurait plusieurs pdf à gérer plus tard) avec les informations dans le body, et la response serait le pdf ou le html pour le générer
je n'ai jamais fait ça, je ne sais pas trop ce qui est possible

on aurait aussi la resource /api/forets/id/pdf, avec le rapport pdf généré à l'enregistrement

@cboucheIGN
Copy link
Contributor Author

Yes, du coup on garde l'idée d'une page impression prêt à print.

Dans un premier temps ce sera à l'utilistaeur de clicker sur "fichier -> impression"

Puis on pourra raffiner en demandant à une service de lancer l'impression en ouvrant cette page en lui passant en POST le contexte (foret + vue de la carte + liste des features interesté pour ne pas refaire les calculs d'intersection)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants