Immagine Docker per generare PDF con Puppeteer e Google Chrome via API
10K+
Un'applicazione Node.js basata su Express per generare PDF utilizzando Puppeteer e Google Chrome tramite API.
Le seguenti variabili di ambiente possono essere configurate:
CONCURRENT: Numero massimo di richieste concorrenti (default: 1).QUEUED: Numero massimo di richieste in coda (default: 10).MAX_PAYLOAD_SIZE: Dimensione massima del payload JSON (default: 1mb).TIMEOUT: Timeout massimo per la generazione del PDF in millisecondi (default: 60000).L'applicazione è esposta sulla porta 3000.
Costruisci e avvia il container:
docker-compose up --build
Invia una richiesta alle API:
curl --location 'http://localhost:3000/pdf' \
--header 'Content-Type: application/json' \
--data-raw '
{
"html": "<html lang=\"it\">\n<head>\n <title>Invoice</title>\n <body> Hello! <img src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUwIiBoZWlnaHQ9IjI1OSIgdmlld0JveD0iMCAwIDM1MCAyNTkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yOTguNzk2IDE4NC4zODRWMjUxLjMwN0MyOTguNzk2IDI1My4xNSAyOTguMTU1IDI1NC44NDMgMjk3LjA4NCAyNTYuMTU1TDIyNy4zODYgMTI1LjY5NEwyOTguNzk2IDE4NC4zODRaIiBmaWxsPSIjRDQ1NzAwIi8+CjxwYXRoIGQ9Ik0yOTcuMDk0IDI1Ni4xNDRDMjk1LjY4MiAyNTcuODg3IDI5My41MjggMjU4Ljk5OSAyOTEuMTA1IDI1OC45OTlIMTc2LjkyOVYxNzYuMTUxTDE3Ni44NjkgMTc2LjA3MUwyMjcuMzk3IDEyNS41NDNWMTI1LjY3M0wyOTcuMDk0IDI1Ni4xMzRWMjU2LjE0NFoiIGZpbGw9IiNGRjdBMDAiLz4KPHBhdGggZD0iTTE5Ni44MjggNi4yNTk2N0wyMjcuMzQ1IDEyNS45MjRMMzQ3LjAxIDk1LjQwNzFDMzUwLjQzNSA5NC41MzU3IDM1MS4wOTYgODkuOTU4NyAzNDguMDUxIDg4LjE1NTlMMjgxLjI3OSA0OC41MjQ4TDI3NS4yODkgNDQuOTc5NEwyMDIuNjg3IDEuODcyOTFDMTk5LjY1MyAwLjA3MDEyNzYgMTk1Ljk0NyAyLjg0NDQxIDE5Ni44MTggNi4yNTk2N0gxOTYuODI4WiIgZmlsbD0iI0ZGN0EwMCIvPgo8cGF0aCBkPSJNMTc2LjkxNyAxNzYuMTUxVjI1OC45OTlIMTI5LjI0NEMxMjcuODAyIDI1OC45OTkgMTI2LjQxIDI1OC40ODggMTI1LjMxOCAyNTcuNTY2VjEyNi4wMzRDMTI2LjUgMTI2LjI2NCAxMjcuNjMxIDEyNi44NDUgMTI4LjQ5MyAxMjcuNzA2TDE3Ni44NTcgMTc2LjA3MUwxNzYuOTE3IDE3Ni4xNTFaIiBmaWxsPSIjRDQ1NzAwIi8+CjxwYXRoIGQ9Ik0yOTAuODg0IDU0LjIyMzRMMjgxLjI4OSA0OC41MTQ2TDI3NS4zIDQ0Ljk2OTFMMjQwLjU1NyAyNC4zMzczTDI0My4yODEgMy40NTUxNEMyNDMuNzQyIC0wLjA0MDI0OCAyNDguMjA4IC0xLjI1MjE0IDI1MC4zNTIgMS41NTIxOEwyOTAuODg0IDU0LjIxMzRWNTQuMjIzNFoiIGZpbGw9IiNENDU3MDAiLz4KPHBhdGggZD0iTTYyLjY1MjggMTI1LjU1M1YxOTQuNTZMNTIuNjM3NCAxODQuNTQ0TDEuMzI4MzEgMTMzLjIzNUMtMS41MDYwNiAxMzAuNDAxIDAuNDk2OTk5IDEyNS41NTMgNC40OTMxNiAxMjUuNTUzSDYyLjY1MjhaIiBmaWxsPSIjRTdFREY2Ii8+CjxwYXRoIGQ9Ik0xMjUuMzE4IDEyNi4wMTRWMjU3LjU1N0MxMjUuMTk4IDI1Ny40MzcgMTI1LjA2OCAyNTcuMzM3IDEyNC45MjcgMjU3LjE5Nkw2Mi42NTE0IDE5NC45MlYxMjUuOTE0SDEyNC4xNjZDMTI0LjU1NyAxMjUuOTE0IDEyNC45MzcgMTI1Ljk0NCAxMjUuMzA4IDEyNi4wMTRIMTI1LjMxOFoiIGZpbGw9IiNGRjdBMDAiLz4KPHBhdGggZD0iTTIyNy4zOTcgMTI1LjY4NEwyOTguNzg4IDE4NC4zNzRWMTA3LjcwNkwyMjcuMzk3IDEyNS42ODRaIiBmaWxsPSIjRTdFREY2Ii8+CjxwYXRoIGQ9Ik0yNzAuMzA1IDY5LjYxNzFDMjY5LjA5MyA2OS42MTcxIDI2OC4xMjIgNjguNzY1NyAyNjcuNzQxIDY3LjYwMzlDMjY2Ljg5IDY0Ljk5OTkgMjY0LjQ0NiA2My4wOTcgMjYxLjU0MSA2My4wOTdDMjU4LjYzNyA2My4wOTcgMjU2LjE5MyA2NC45ODk5IDI1NS4zNDIgNjcuNjAzOUMyNTQuOTYxIDY4Ljc1NTcgMjUzLjk5IDY5LjYxNzEgMjUyLjc3OCA2OS42MTcxQzI1MS4wMTUgNjkuNjE3MSAyNDkuNzEzIDY3LjkwNDQgMjUwLjIyNCA2Ni4yMTE4QzI1MS42ODYgNjEuMzQ0MyAyNTYuMjAzIDU3Ljc5ODggMjYxLjU0MSA1Ny43OTg4QzI2Ni44OCA1Ny43OTg4IDI3MS4zOTcgNjEuMzQ0MyAyNzIuODU5IDY2LjIxMThDMjczLjM3IDY3LjkwNDQgMjcyLjA2OCA2OS42MDcgMjcwLjMwNSA2OS42MDdWNjkuNjE3MVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=\"> \n</body>\n</html>\n",
"options": {
"displayHeaderFooter": true,
"printBackground": false,
"format": "A4",
"headerTemplate": "<style>\n header {\n font-size: 20px;\n font-weight: bold;\n padding: 0 1cm;\n height: 2cm;\n width: 100%;\n }\n header img {\n height: 2cm;\n }\n</style>\n\n<header>\n <div>\n <table style=\"width: 100%;\">\n <tr>\n <td style=\"text-align: left;\">\n <img src=\"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzUwIiBoZWlnaHQ9IjI1OSIgdmlld0JveD0iMCAwIDM1MCAyNTkiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0yOTguNzk2IDE4NC4zODRWMjUxLjMwN0MyOTguNzk2IDI1My4xNSAyOTguMTU1IDI1NC44NDMgMjk3LjA4NCAyNTYuMTU1TDIyNy4zODYgMTI1LjY5NEwyOTguNzk2IDE4NC4zODRaIiBmaWxsPSIjRDQ1NzAwIi8+CjxwYXRoIGQ9Ik0yOTcuMDk0IDI1Ni4xNDRDMjk1LjY4MiAyNTcuODg3IDI5My41MjggMjU4Ljk5OSAyOTEuMTA1IDI1OC45OTlIMTc2LjkyOVYxNzYuMTUxTDE3Ni44NjkgMTc2LjA3MUwyMjcuMzk3IDEyNS41NDNWMTI1LjY3M0wyOTcuMDk0IDI1Ni4xMzRWMjU2LjE0NFoiIGZpbGw9IiNGRjdBMDAiLz4KPHBhdGggZD0iTTE5Ni44MjggNi4yNTk2N0wyMjcuMzQ1IDEyNS45MjRMMzQ3LjAxIDk1LjQwNzFDMzUwLjQzNSA5NC41MzU3IDM1MS4wOTYgODkuOTU4NyAzNDguMDUxIDg4LjE1NTlMMjgxLjI3OSA0OC41MjQ4TDI3NS4yODkgNDQuOTc5NEwyMDIuNjg3IDEuODcyOTFDMTk5LjY1MyAwLjA3MDEyNzYgMTk1Ljk0NyAyLjg0NDQxIDE5Ni44MTggNi4yNTk2N0gxOTYuODI4WiIgZmlsbD0iI0ZGN0EwMCIvPgo8cGF0aCBkPSJNMTc2LjkxNyAxNzYuMTUxVjI1OC45OTlIMTI5LjI0NEMxMjcuODAyIDI1OC45OTkgMTI2LjQxIDI1OC40ODggMTI1LjMxOCAyNTcuNTY2VjEyNi4wMzRDMTI2LjUgMTI2LjI2NCAxMjcuNjMxIDEyNi44NDUgMTI4LjQ5MyAxMjcuNzA2TDE3Ni44NTcgMTc2LjA3MUwxNzYuOTE3IDE3Ni4xNTFaIiBmaWxsPSIjRDQ1NzAwIi8+CjxwYXRoIGQ9Ik0yOTAuODg0IDU0LjIyMzRMMjgxLjI4OSA0OC41MTQ2TDI3NS4zIDQ0Ljk2OTFMMjQwLjU1NyAyNC4zMzczTDI0My4yODEgMy40NTUxNEMyNDMuNzQyIC0wLjA0MDI0OCAyNDguMjA4IC0xLjI1MjE0IDI1MC4zNTIgMS41NTIxOEwyOTAuODg0IDU0LjIxMzRWNTQuMjIzNFoiIGZpbGw9IiNENDU3MDAiLz4KPHBhdGggZD0iTTYyLjY1MjggMTI1LjU1M1YxOTQuNTZMNTIuNjM3NCAxODQuNTQ0TDEuMzI4MzEgMTMzLjIzNUMtMS41MDYwNiAxMzAuNDAxIDAuNDk2OTk5IDEyNS41NTMgNC40OTMxNiAxMjUuNTUzSDYyLjY1MjhaIiBmaWxsPSIjRTdFREY2Ii8+CjxwYXRoIGQ9Ik0xMjUuMzE4IDEyNi4wMTRWMjU3LjU1N0MxMjUuMTk4IDI1Ny40MzcgMTI1LjA2OCAyNTcuMzM3IDEyNC45MjcgMjU3LjE5Nkw2Mi42NTE0IDE5NC45MlYxMjUuOTE0SDEyNC4xNjZDMTI0LjU1NyAxMjUuOTE0IDEyNC45MzcgMTI1Ljk0NCAxMjUuMzA4IDEyNi4wMTRIMTI1LjMxOFoiIGZpbGw9IiNGRjdBMDAiLz4KPHBhdGggZD0iTTIyNy4zOTcgMTI1LjY4NEwyOTguNzg4IDE4NC4zNzRWMTA3LjcwNkwyMjcuMzk3IDEyNS42ODRaIiBmaWxsPSIjRTdFREY2Ii8+CjxwYXRoIGQ9Ik0yNzAuMzA1IDY5LjYxNzFDMjY5LjA5MyA2OS42MTcxIDI2OC4xMjIgNjguNzY1NyAyNjcuNzQxIDY3LjYwMzlDMjY2Ljg5IDY0Ljk5OTkgMjY0LjQ0NiA2My4wOTcgMjYxLjU0MSA2My4wOTdDMjU4LjYzNyA2My4wOTcgMjU2LjE5MyA2NC45ODk5IDI1NS4zNDIgNjcuNjAzOUMyNTQuOTYxIDY4Ljc1NTcgMjUzLjk5IDY5LjYxNzEgMjUyLjc3OCA2OS42MTcxQzI1MS4wMTUgNjkuNjE3MSAyNDkuNzEzIDY3LjkwNDQgMjUwLjIyNCA2Ni4yMTE4QzI1MS42ODYgNjEuMzQ0MyAyNTYuMjAzIDU3Ljc5ODggMjYxLjU0MSA1Ny43OTg4QzI2Ni44OCA1Ny43OTg4IDI3MS4zOTcgNjEuMzQ0MyAyNzIuODU5IDY2LjIxMThDMjczLjM3IDY3LjkwNDQgMjcyLjA2OCA2OS42MDcgMjcwLjMwNSA2OS42MDdWNjkuNjE3MVoiIGZpbGw9IndoaXRlIi8+Cjwvc3ZnPgo=\"> </td>\n <td style=\"text-align: center;\">Ordini di lavoro</td>\n <td style=\"text-align: right;\">\n </td>\n </tr>\n </table>\n </div>\n</header>\n",
"footerTemplate": "<style>\n footer {\n font-size: 12px;\n padding: 0 1cm;\n height: 1cm;\n }\n</style>\n\n<footer>\n <span class=\"pageNumber\"></span> / <span class=\"totalPages\"></span></footer>\n",
"margin": {
"top": "3cm",
"right": "1cm",
"bottom": "2cm",
"left": "1cm"
}
}
}
'
Content type
Image
Digest
sha256:e1cb79de9…
Size
454.7 MB
Last updated
over 1 year ago
docker pull overmob/pdfer