using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Comment convertir HTML en PDF dans Node.js en utilisant Puppeteer
Chaknith Bin
mai 16, 2023
Partager:
Dans le monde numérique d'aujourd'hui, il est essentiel de pouvoir 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 à l'aide de Node.js et de Puppeteer, une bibliothèque open-source développée par Google.
Introduction au marionnettiste
Puppeteer est une puissante bibliothèque Node.js qui permet aux développeurs de contrôler des navigateurs headless, principalement Google Chrome ou Chromium, et d'effectuer diverses actions comme le web scraping, la réalisation de captures d'écran et la génération de PDF. Puppeteer fournit une API étendue pour interagir avec le navigateur, ce qui en fait un excellent choix pour la conversion de HTML en PDF.
Pourquoi un marionnettiste ?
Facilité d'utilisation : Puppeteer propose une API simple et facile à utiliser qui abstrait les complexités du travail avec des navigateurs sans tête.
Puissant : Puppeteer offre de vastes capacités pour manipuler les pages web et interagir avec les éléments du navigateur.
Scalable : Avec Puppeteer, vous pouvez facilement étendre 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 devez créer un nouveau projet NodeJS. Suivez les étapes suivantes pour commencer :
Installez NodeJS si vous ne l'avez pas déjà fait (vous pouvez le télécharger depuis le site web NodeJS).
Créez un nouveau dossier pour votre projet et ouvrez-le dans Visual Studio Code ou tout autre éditeur de code spécifique.
Exécutez npm init pour créer un nouveau fichier package.json pour votre projet. Suivez les instructions et complétez les informations demandées.
Installez Puppeteer en exécutant npm install puppeteer.
Maintenant que notre projet est en place, 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, procédez comme suit :
Créez un fichier nommé "HTML To PDF.js" dans le dossier.
Le code commence par importer deux bibliothèques essentielles : puppeteer, un outil polyvalent pour contrôler les navigateurs sans tête comme Chrome et Chromium, et fs, un module intégré de NodeJS pour gérer les opérations du système de fichiers. Puppeteer vous permet d'automatiser un large éventail de tâches basées sur le web, notamment le rendu HTML, la capture de captures 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: 'new'
});
// Create a new page
const page = await browser.newPage();
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;
}
async function exportWebsiteAsPdf(html, outputPath) {
// Create a browser instance
const browser = await puppeteer.launch({
headless: 'new'
});
// Create a new page
const page = await browser.newPage();
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;
}
NODE.JS
La fonction exportWebsiteAsPdf sert de cœur à notre extrait de code. Cette fonction asynchrone accepte une chaîne html et un outputPath en tant que paramètres d'entrée et renvoie un fichier PDF. La fonction effectue les étapes suivantes :
Lance une nouvelle instance de navigateur sans tête en utilisant Puppeteer.
Crée une nouvelle page de navigateur.
Définit la chaîne html fournie comme contenu de la page, en attente du chargement du contenu du DOM. Nous chargeons des modèles html sous forme de chaîne HTML pour les convertir au format PDF.
Emule le type de média "screen" pour appliquer le CSS utilisé pour les écrans au lieu des styles spécifiques à l'impression.
Génère un fichier PDF à partir du contenu HTML chargé, en spécifiant les marges, l'impression de l'arrière-plan et le format (A4).
Ferme l'instance du navigateur.
Renvoie 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');
exportWebsiteAsPdf(html, 'result.PDF').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
// Usage example
// Get HTML content from HTML file
const html = fs.readFileSync('test.html', 'utf-8');
exportWebsiteAsPdf(html, 'result.PDF').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
NODE.JS
La dernière section du code illustre comment utiliser la fonction exportWebsiteAsPdf. Nous procédons aux étapes suivantes :
Lisez le contenu HTML à partir d'un fichier HTML en utilisant la méthode readFileSync du module fs. Ici, nous chargeons des fichiers modèles pour générer des PDF à partir de pages HTML.
Appelez la fonction exportWebsiteAsPdf avec la chaîne html chargée et le outputPath souhaité.
Utilisez un bloc .then pour gérer la création réussie du PDF en enregistrant un message de succès dans la console.
Utilisez un bloc .catch pour gérer toutes les erreurs qui surviennent lors du processus de conversion de HTML en PDF, en consignant un message d'erreur dans la console.
Cet extrait de code fournit un exemple complet de la façon de convertir un modèle HTML en un fichier PDF en utilisant NodeJS et Puppeteer. En mettant en œuvre cette solution, vous pouvez générer efficacement des PDF de haute qualité, répondant aux besoins de diverses applications et utilisateurs.
Conversion d'URL en fichiers PDF
Outre la conversion de modèles HTML, Puppeteer vous permet également de convertir des URL directement en fichiers PDF.
Importation du marionnettiste
const puppeteer = require('puppeteer');
const puppeteer = require('puppeteer');
NODE.JS
Le code commence par importer la bibliothèque Puppeteer, qui est un outil puissant pour contrôler les navigateurs sans tête comme Chrome et Chromium. Puppeteer vous permet d'automatiser toute une série de tâches basées sur le web, y compris le rendu de votre code HTML, la capture de captures 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: 'new'
});
// Create a new page
const page = await browser.newPage();
// Open URL in 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;
}
async function exportWebsiteAsPdf(websiteUrl, outputPath) {
// Create a browser instance
const browser = await puppeteer.launch({
headless: 'new'
});
// Create a new page
const page = await browser.newPage();
// Open URL in 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;
}
NODE.JS
La fonction exportWebsiteAsPdf est le cœur 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 :
Lance une nouvelle instance de navigateur sans tête en utilisant Puppeteer.
Crée une nouvelle page de navigateur.
Navigue vers le websiteUrl fourni et attend que le réseau devienne inactif en utilisant l'option waitUntil définie sur networkidle0.
Emule le type de média "screen" pour garantir que le CSS utilisé pour les écrans est appliqué au lieu des styles spécifiques à l'impression.
Convertit la page web chargée en un fichier PDF avec les marges spécifiées, l'impression de fond, et le format (A4).
Ferme l'instance du navigateur.
Renvoie le fichier PDF généré.
Utilisation de la fonction exportWebsiteAsPdf
// Usage example
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
// Usage example
exportWebsiteAsPdf('https://ironpdf.com/', 'result.pdf').then(() => {
console.log('PDF created successfully.');
}).catch((error) => {
console.error('Error creating PDF:', error);
});
NODE.JS
La section finale du code démontre comment utiliser la fonction exportWebsiteAsPdf. Nous exécutons les étapes suivantes :
Appelez la fonction exportWebsiteAsPdf avec les websiteUrl et outputPath souhaités.
Utilisez un bloc then pour gérer la création réussie du PDF. Dans ce bloc, nous enregistrons un message de réussite dans la console.
Utilisez un bloc catch pour gérer les erreurs qui peuvent survenir pendant le processus de conversion du site web en PDF. En cas d'erreur, un message d'erreur est affiché dans la console.
En intégrant cet extrait de code dans vos projets, vous pouvez convertir sans effort des URL en fichiers PDF de haute qualité à l'aide de NodeJS et de Puppeteer.
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 de fichiers PDF. Il offre une solution simple et efficace pour créer des PDF à partir de HTML, de texte, d'images et de documents PDF existants. IronPDF prend en charge les projets .NET Core, .NET Framework et .NET 5.0+, ce qui en fait un choix polyvalent pour diverses applications.
Principales caractéristiques d'IronPDF
Conversion HTML en PDF avec IronPDF : IronPDF vous permet de convertir du contenu HTML, y compris le CSS, en fichiers PDF. Cette fonction vous permet de créer des documents PDF au pixel près à partir de pages web ou de 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 ainsi l'archivage de contenu web ou la génération de rapports à partir de pages web dynamiques.
Fusion de texte, d'images et de PDF : IronPDF vous permet de fusionner du texte, des images et des fichiers PDF existants en un seul document PDF. Cette fonction est particulièrement utile pour créer des documents complexes avec plusieurs sources de contenu.
Manipulation de PDF : IronPDF offre des outils pour éditer des fichiers PDF existants, tels que 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, la génération et la manipulation de fichiers PDF est une exigence courante dans de nombreuses applications, et il est essentiel de disposer des bons outils. Les solutions proposées dans cet article, telles que l'utilisation de Puppeteer avec NodeJS ou d'IronPDF avec .NET, offrent des méthodes puissantes et efficaces pour convertir le contenu HTML et les URL en documents PDF professionnels de haute qualité.
IronPDF, en particulier, se distingue par ses nombreuses fonctionnalités, ce qui en fait un choix de premier ordre pour les développeurs .NET. IronPDF offre un essai gratuit vous permettant d'explorer ses fonctionnalités.
Les utilisateurs peuvent également bénéficier du package Iron Suite, une suite de cinq bibliothèques professionnelles .NET comprenant IronXL, IronPDF, IronOCR et plus encore.
Chaknith travaille sur IronXL et IronBarcode. Il possède une expertise approfondie en C# et .NET, aidant à améliorer le logiciel et à soutenir les clients. Ses idées issues des interactions avec les utilisateurs contribuent à de meilleurs produits, une documentation améliorée et une expérience globale enrichie.
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier