Cover Image for Puppeteer PDF Service including Docker,Processes, Generating a PDF document, Interactions between technologies, API, Programming, TypeScript, JavaScript, Nextjs, Tailwindcss - Blog 1
BLOG 1

Service PDF avec Puppeteer, Docker, Nginx et AWS EC2

Auteur

Vincent Audette

Software Developer

  • Technique
  • Docker
  • AWS
  • Node.js
  • Puppeteer
  • DevOps
  • PDF

Configurer un Service de Génération de PDF Sécurisé avec Puppeteer, Docker, et Nginx sur AWS

Pourquoi utiliser Puppeteer pour générer des PDF ? Puppeteer est une bibliothèque Node.js qui permet de contrôler Chrome ou Chromium via une API de haut niveau. Nous l'utiliserons pour générer des PDF à partir de pages Web.

Dans l'infrastructure défini sur la photo ci-haut nous avons utilisé Docker pour containeriser l'application Node.js qui s'appuie sur Puppeteer pour générer des PDF. Nginx sera utilisé comme proxy inverse pour gérer le chiffrement SSL/TLS et acheminer les requêtes vers le conteneur Docker.

La section identifié par Netlify correspond à l'hébergement de l'application Next.js qui contient la page web dont nous allons générer des PDF. Cette page web utilise la bibliothèque tailwindcss pour stylé la page. Note que cet article n'est pas un tutoriel sur la mise en place d'un site web Next.js, mais plutôt une présentation de la configuration de l'infrastructure pour générer des PDF à partir de pages Web.

1. Configuration de l'Instance EC2

La première étape consiste à lancer une instance EC2 sur AWS pour héberger le service.

  • Lancer une instance EC2 : Lors de la configuration des groupes de sécurité, assurez-vous de permettre le trafic sur les ports 22 (SSH), 80 (HTTP), et 443 (HTTPS).
  • Se connecter à l'instance EC2 :
    ssh -i "votre-clé.pem" ec2-user@votre-ip-publique
    

2. Installation de Docker

Docker est l’outil utilisé pour containeriser l'application Node.js qui s'appuie sur Puppeteer pour générer des PDF.

  • Installer Docker sur Amazon Linux 2 :

    sudo yum update -y
    sudo amazon-linux-extras install docker
    sudo service docker start
    sudo usermod -a -G docker ec2-user
    
  • Vérifier l'installation de Docker :

    docker --version
    

3. Configuration de l'Application Node.js avec Puppeteer

Puppeteer est une bibliothèque Node.js qui permet de contrôler Chrome ou Chromium via une API de haut niveau. Nous l'utiliserons pour générer des PDF à partir de pages Web.

  • Créer l'application Node.js :

    mkdir service-pdf
    cd service-pdf
    npm init -y
    npm install express puppeteer
    
  • Exemple de code Node.js (index.js) :

    const express = require('express');
    const puppeteer = require('puppeteer');
    
    const app = express();
    const PORT = 3000;
    
    app.get('/generate-pdf', async (req, res) => {
      const browser = await puppeteer.launch({
        args: ['--no-sandbox', '--disable-setuid-sandbox'],
      });
      const page = await browser.newPage();
      await page.goto('https://example.com', { waitUntil: 'networkidle2' });
    
      const pdfBuffer = await page.pdf({ format: 'Letter', printBackground: true });
      await browser.close();
    
      res.set({
        'Content-Type': 'application/pdf',
        'Content-Disposition': `attachment; filename="output.pdf"`,
      });
      res.send(pdfBuffer);
    });
    
    app.listen(PORT, '0.0.0.0', () => {
      console.log(`
    

Parlez-nous de votre projet

Nos bureaux

  • Montréal
    St-Henri

Aidez-nous à nous améliorer

Votre avis nous aide à offrir un meilleur service. Prenez 2 minutes pour nous évaluer !

Laisser un avis Google