Passer au contenu du pied de page
OUTILS PDF

Comment convertir HTML en PDF en Node.js en utilisant Puppeteer

Dans le monde numérique d'aujourd'hui, il est crucial d'avoir la capacité de convertir des pages web ou des documents HTML en fichiers PDF. Cela peut être utile pour générer des rapports, créer des factures, ou simplement partager des informations dans un format plus présentable. Dans cet article de blog, nous allons explorer comment convertir des pages HTML en PDF en utilisant Node.js et Puppeteer, une bibliothèque open-source développée par Google.

Introduction à Puppeteer

Puppeteer est une puissante bibliothèque Node.js qui permet aux développeurs de contrôler des navigateurs sans tête, principalement Google Chrome ou Chromium, et de réaliser diverses actions comme le web scraping, la capture d'écran et la génération de PDF. Puppeteer fournit une API étendue pour interagir avec le navigateur, en faisant un excellent choix pour convertir HTML en PDF.

Pourquoi Puppeteer ?

  • Facilité d'utilisation : Puppeteer offre une API simple et facile à utiliser qui abstrait la complexité du travail avec des navigateurs sans tête.
  • Puissant : Puppeteer fournit des capacités étendues pour manipuler des pages web et interagir avec les éléments du navigateur.
  • Évolutif : Avec Puppeteer, vous pouvez facilement faire évoluer votre processus de génération de PDF en exécutant plusieurs instances de navigateur en parallèle.

Configuration de votre projet NodeJS

Avant de commencer, vous devrez configurer un nouveau projet NodeJS. Suivez ces étapes pour commencer :

  1. Installez NodeJS si ce n'est pas déjà fait (vous pouvez le télécharger à partir du site web de NodeJS).
  2. Créez un nouveau dossier pour votre projet et ouvrez-le dans Visual Studio Code ou tout autre éditeur de code spécifique.
  3. Exécutez npm init pour créer un nouveau fichier package.json pour votre projet. Suivez les invites et remplissez les informations requises.

Comment convertir HTML en PDF dans Node.js : Figure 1

  1. Installez Puppeteer en exécutant npm install puppeteer.

Comment convertir HTML en PDF dans Node.js : Figure 2

Maintenant que notre projet est configuré, plongeons dans le code.

Chargement du modèle HTML et conversion en fichier PDF

Pour convertir des modèles HTML en fichier PDF à l'aide de Puppeteer, suivez ces étapes :

Créez un fichier nommé "HTML To PDF.js" dans le dossier.

Importation de Puppeteer et fs

const puppeteer = require('puppeteer');
const fs = require('fs');

Le code commence par importer deux bibliothèques essentielles : puppeteer, un outil polyvalent pour contrôler des navigateurs sans tête comme Chrome et Chromium, et fs, un module NodeJS intégré pour gérer les opérations du système de fichiers. Puppeteer vous permet d'automatiser une large gamme de tâches basées sur le web, y compris le rendu HTML, la capture d'écran et la génération de fichiers PDF.

Définition de la fonction exportWebsiteAsPdf

async function exportWebsiteAsPdf(html, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Set the HTML content for the page, waiting for DOM content to load
  await page.setContent(html, { waitUntil: 'domcontentloaded' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

La fonction exportWebsiteAsPdf sert de noyau à notre extrait de code. Cette fonction asynchrone accepte une chaîne html et un outputPath comme paramètres d'entrée et retourne un fichier PDF. La fonction effectue les étapes suivantes :

  1. Lance une nouvelle instance de navigateur sans tête en utilisant Puppeteer.
  2. Crée une nouvelle page de navigateur.
  3. Définit la chaîne html fournie comme contenu de la page, en attente du chargement du contenu DOM.
  4. Émule le type de média 'écran' pour appliquer le CSS utilisé pour les écrans au lieu des styles spécifiques à l'impression.
  5. Génère un fichier PDF à partir du contenu HTML chargé, en spécifiant les marges, l'impression en arrière-plan et le format (A4).
  6. Ferme l'instance du navigateur.
  7. Retourne le fichier PDF créé.

Utilisation de la fonction exportWebsiteAsPdf

// Usage example
// Get HTML content from HTML file
const html = fs.readFileSync('test.html', 'utf-8');

// Convert the HTML content into a PDF and save it to the specified path
exportWebsiteAsPdf(html, 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

La dernière section du code illustre comment utiliser la fonction exportWebsiteAsPdf. Nous effectuons les étapes suivantes :

  1. Lire le contenu HTML d'un fichier HTML en utilisant la méthode readFileSync du module fs.
  2. Appeler la fonction exportWebsiteAsPdf avec la chaîne html chargée et le outputPath souhaité.
  3. Utiliser un bloc .then pour gérer la création réussie du PDF, en enregistrant un message de succès dans la console.
  4. Employer un bloc .catch pour gérer les erreurs qui surviennent lors du processus de conversion de HTML en PDF, en enregistrant un message d'erreur dans la console.

Cet extrait de code fournit un exemple complet de comment convertir un modèle HTML en fichier PDF en utilisant NodeJS et Puppeteer. En implémentant cette solution, vous pouvez générer efficacement des PDF de haute qualité, répondant aux besoins de diverses applications et utilisateurs.

Comment convertir HTML en PDF dans Node.js : Figure 3

Conversion d'URL en fichiers PDF

En plus de convertir des modèles HTML, Puppeteer vous permet également de convertir des URLs directement en fichiers PDF.

Importation de Puppeteer

const puppeteer = require('puppeteer');

Le code commence par importer la bibliothèque Puppeteer, qui est un outil puissant pour contrôler des navigateurs sans tête comme Chrome et Chromium. Puppeteer vous permet d'automatiser une variété de tâches basées sur le web, y compris le rendu de votre code HTML, la capture d'écran et, dans notre cas, la génération de fichiers PDF.

Définition de la fonction exportWebsiteAsPdf

async function exportWebsiteAsPdf(websiteUrl, outputPath) {
  // Create a browser instance
  const browser = await puppeteer.launch({
    headless: true // Launches the browser in headless mode
  });

  // Create a new page
  const page = await browser.newPage();

  // Open the URL in the current page
  await page.goto(websiteUrl, { waitUntil: 'networkidle0' });

  // To reflect CSS used for screens instead of print
  await page.emulateMediaType('screen');

  // Download the PDF
  const PDF = await page.pdf({
    path: outputPath,
    margin: { top: '100px', right: '50px', bottom: '100px', left: '50px' },
    printBackground: true,
    format: 'A4',
  });

  // Close the browser instance
  await browser.close();

  return PDF;
}

La fonction exportWebsiteAsPdf est le noyau de notre extrait de code. Cette fonction asynchrone accepte un websiteUrl et un outputPath comme paramètres d'entrée et retourne un fichier PDF. La fonction effectue les étapes suivantes :

  1. Lance une nouvelle instance de navigateur sans tête en utilisant Puppeteer.
  2. Crée une nouvelle page de navigateur.
  3. Navigue vers l'websiteUrl fourni et attend que le réseau devienne inactif en utilisant l'option waitUntil définie sur networkidle0.
  4. Émule le type de média 'écran' pour s'assurer que le CSS utilisé pour les écrans est appliqué au lieu des styles spécifiques à l'impression.
  5. Convertit la page web chargée en fichier PDF avec les marges spécifiées, l'impression en arrière-plan et le format (A4).
  6. Ferme l'instance du navigateur.
  7. Retourne le fichier PDF généré.

Utilisation de la fonction exportWebsiteAsPdf

// Usage example
// Convert the URL content into a PDF and save it to the specified path
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
  console.log('PDF created successfully.');
}).catch((error) => {
  console.error('Error creating PDF:', error);
});

La section finale du code démontre comment utiliser la fonction exportWebsiteAsPdf. Nous exécutons les étapes suivantes :

  1. Appeler la fonction exportWebsiteAsPdf avec le websiteUrl et le outputPath souhaités.
  2. Utiliser un bloc then pour gérer la création réussie du PDF. Dans ce bloc, nous enregistrons un message de succès dans la console.
  3. Utiliser un bloc catch pour gérer les erreurs qui surviennent lors du processus de conversion de site web en PDF. Si une erreur se produit, nous enregistrons un message d'erreur dans la console.

En intégrant cet extrait de code dans vos projets, vous pouvez convertir sans effort des URLs en fichiers PDF de haute qualité en utilisant NodeJS et Puppeteer.

Comment convertir HTML en PDF dans Node.js : Figure 4

Meilleure bibliothèque HTML vers PDF pour les développeurs C

Explorez IronPDF est une bibliothèque .NET populaire utilisée pour générer, éditer et extraire du contenu des fichiers PDF. Elle offre une solution simple et efficace pour créer des PDF à partir de HTML, texte, images et documents PDF existants. IronPDF prend en charge les projets .NET Core, .NET Framework et .NET 5.0+, en faisant un choix polyvalent pour diverses applications.

Caractéristiques clés d'IronPDF

Conversion de HTML en PDF avec IronPDF : IronPDF permet de convertir du contenu HTML, y compris le CSS, en fichiers PDF. Cette fonctionnalité vous permet de créer des documents PDF fidèles aux pixels depuis des pages web ou des modèles HTML.

Rendu d'URL : IronPDF peut récupérer des pages web directement depuis un serveur en utilisant une URL et les convertir en fichiers PDF, facilitant l'archivage de contenu web ou la génération de rapports à partir de pages web dynamiques.

Fusion de texte, d'image et de PDF : IronPDF vous permet de fusionner du texte, des images et des fichiers PDF existants en un seul document PDF. Cette fonctionnalité est particulièrement utile pour créer des documents complexes avec plusieurs sources de contenu.

Manipulation de PDF : IronPDF fournit des outils pour éditer des fichiers PDF existants, comme l'ajout ou la suppression de pages, la modification des métadonnées ou même l'extraction de texte et d'images à partir de documents PDF.

Conclusion

En conclusion, générer et manipuler des fichiers PDF est une exigence courante dans de nombreuses applications, et avoir les bons outils à votre disposition est crucial. Les solutions proposées dans cet article, comme l'utilisation de Puppeteer avec NodeJS ou IronPDF avec .NET, offrent des méthodes puissantes et efficaces pour convertir le contenu HTML et les URLs en documents PDF professionnels et de haute qualité.

IronPDF, en particulier, se distingue par son ensemble de fonctionnalités étendues, en faisant un choix de premier plan pour les développeurs .NET. IronPDF offre un essai gratuit permettant d'explorer ses capacités.

Users can also benefit from the Iron Suite package, a suite of five professional .NET libraries including IronXL, IronPDF, IronOCR and more.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite