Skip to content

gip-inclusion/pdf-generator

Repository files navigation

pdf-generator

This Express.js service will serve a PDF generated by a headless Chrome for 2 cases :

  • from an arbitrary URL
  • from a HTML string, provided in the body of a POST request

You can fork this repo to deploy your own PDF generator on Scalingo

There is a github action that will automatically deploy your app on Scalingo when you push on the main branch.

You will need to provide the following environment variables (in the github repo settings):

Variables : APP_NAME: the name of the app on scalingo REGION: the region of the app on scalingo TARGZ_URL: the url of the tar.gz archive of the app to deploy

Secret : SCALINGO_API_TOKEN: Which should be a token with the correct rights to deploy the app mentionned in the variables.

Usage

  • To get a PDF named monpdf.pdf for the page http://mon-service.com/mapage, you have to set the PAGE_URL_PREFIX environment variable to http://mon-service.com and create a link like:
  <a href="https://<thisservicehostname>/print?page=%2Fmapage&name=monpdf.pdf">Download PDF</a>
  • The /ping endpoint can be used as a heartbeat for the service. It will return the string "ok" and a 200 status code.

Installation on Scalingo

  • Create a Scalingo application linked to the repository.

    as concurrency is not managed by this service, you should probably use S or M type containers. More information in the nodejs-buildpack documentation

  • Setup the environnement variables:

    • STACK should be set to heroku-18
    • PAGE_URL_PREFIX should be set to the prefix of the URL you'll want to print (see Usage)
    • PDF_NAME should be the default downloaded PDF filename; it will be used in case the name query var is missing

Future improvements

  • The generated PDF should probably be cached

About

Simple Node.js service to generate a PDF from an URL via Puppeteer

https://pdf.dora.inclusion.beta.gouv.fr

Resources

License

Stars

Watchers

Forks