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
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.
- To get a PDF named
monpdf.pdf
for the pagehttp://mon-service.com/mapage
, you have to set thePAGE_URL_PREFIX
environment variable tohttp://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.
-
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 toheroku-18
PAGE_URL_PREFIX
should be set to the prefix of the URL you'll want to print (seeUsage
)PDF_NAME
should be the default downloaded PDF filename; it will be used in case thename
query var is missing
- The generated PDF should probably be cached