Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

IronPDF vs Puppeteer Sharp: Guide Complet de Comparaison de Bibliothèque PDF en C#

Lors de la création d'applications .NET nécessitant des fonctionnalités PDF, les développeurs font souvent face à une décision cruciale : quelle bibliothèque PDF convient le mieux à leurs besoins ? Deux options populaires qui reviennent souvent dans les discussions sont IronPDF et Puppeteer Sharp. Bien que les deux bibliothèques puissent générer des PDF à partir de contenu HTML, elles diffèrent considérablement dans leur approche, leurs fonctionnalités et leurs cas d'utilisation.

IronPDF est une bibliothèque PDF complète conçue spécifiquement pour les développeurs .NET, offrant des capacités de manipulation PDF étendues au-delà de la simple génération. Puppeteer Sharp, en revanche, est un port .NET de la bibliothèque Puppeteer de Google, principalement axé sur l'automatisation du navigateur avec la génération de PDF comme l'une de ses fonctionnalités. Comprendre les forces et les limites de chaque bibliothèque est essentiel pour prendre une décision éclairée qui correspond aux exigences de votre projet.

Tableau de comparaison rapide

Catégorie Fonctionnalité/Aspect IronPDF Puppeteer Sharp Avantage Clé
Architecture de Base Philosophie de Design Bibliothèque centrée sur le PDF avec moteur Chrome intégré Outil d'automatisation de navigateur avec exportation PDF IronPDF: Conçu spécialement pour les PDFs
Complexité de l'API Méthodes simples comme RenderHtmlAsPdf()
Courbe d'Apprentissage 1-2 jours typique 3-5 jours (concepts de navigateur) IronPDF: Adoption plus rapide
Support de Plateforme Multiplateforme Support natif, pas de paquets supplémentaires Téléchargement de Chrome/Chromium requis IronPDF: Déploiement simplifié
Versions .NET .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ .NET 8, Standard 2.0, Framework 4.6.1+ IronPDF: Support des dernières versions .NET
Systèmes d'Exploitation Windows, Linux, macOS, Docker natif Windows, Linux (avec réserves), macOS IronPDF: Support universel
HTML vers PDF Moteur de Rendu Moteur Chrome intégré Contrôle de Chrome/Chromium sans tête Les deux : Précision basée sur Chrome
Support JavaScript Support complet du JS avec délais de rendu Support complet du JS avec conditions d'attente Puppeteer : Plus de contrôle JS
Fonctionnalités PDF Sécurité et Chiffrement AES-256, mots de passe, permissions Non supporté IronPDF: Sécurité d'entreprise
Signatures Digitales Support natif avec certificats Nécessite des bibliothèques externes IronPDF: Signature intégrée
Édition PDF Fusionner, diviser, filigrane, formulaires Génération uniquement IronPDF: Manipulation complète
Automatisation du Navigateur Extraction Web Pas l'objectif principal Contrôle complet du navigateur Puppeteer : Automatisation du navigateur
Capture d'écran PDF en image uniquement Captures d'écran d'éléments/pages complètes Puppeteer : Capture polyvalente
Licences & Tarification Modèle de Licence Licences commerciales, perpétuelles Licence MIT (gratuite) Puppeteer : Pas de coût
Prix d'Entrée 749 $ (licence Lite) Gratuit Puppeteer : Zéro barrière
Support Documentation Tutoriels approfondis, référence API Docs GitHub, ressources communautaires IronPDF: Docs professionnelles
Support Technique Support ingénieur 24/5 Communauté uniquement IronPDF: Support professionnel
Meilleur Pour Cas d'Utilisation Pdfs d'entreprise, rapports, factures Test, extraction, PDFs basiques Dépend du contexte

Aperçu de IronPDF et Puppeteer Sharp

Qu'est-ce qu'IronPDF ?

IronPDF est une bibliothèque PDF .NET complète spécialement conçue pour générer, éditer et manipuler des documents PDF. Conçu pour les développeurs C#, il fournit une API intuitive qui simplifie les opérations PDF complexes en appels de méthode directs. La bibliothèque utilise un moteur de rendu Chrome intégré pour garantir une conversion pixel par pixel de HTML en PDF, ce qui la rend idéale pour créer des documents professionnels tels que des factures, des rapports et des certificats.

Ce qui distingue IronPDF, c'est son ensemble de fonctionnalités étendu au-delà de la simple génération de PDF. La bibliothèque prend en charge la manipulation avancée de PDF incluant le chiffrement, les signatures numériques, le remplissage de formulaires, l'apposition de filigranes et la fusion de documents. Avec la prise en charge des dernières versions de .NET, y compris .NET 9 et la compatibilité future avec .NET 10, IronPDF se positionne comme une solution pérenne pour les besoins PDF en entreprise.

Qu'est-ce que Puppeteer Sharp ?

Puppeteer Sharp est un portage .NET de la célèbre bibliothèque Puppeteer Node.js de Google, maintenue par Darío Kondratiuk. Il fournit une API de haut niveau pour contrôler les navigateurs Chrome ou Chromium sans tête par programme via le protocole DevTools. Bien que Puppeteer Sharp puisse générer des PDF, il est principalement conçu comme un outil d'automatisation de navigateur qui excelle dans le web scraping, les tests automatisés et la capture de captures d'écran.

La bibliothèque fonctionne en lançant et en contrôlant une instance de navigateur sans tête, permettant aux développeurs de naviguer sur des pages web, d'interagir avec des éléments et d'exporter du contenu dans divers formats, y compris PDF. Selon les derniers benchmarks, Puppeteer Sharp offre des avantages de performance pour le rendu HTML simple mais nécessite une configuration plus complexe comparée aux bibliothèques PDF dédiées.

Comment la compatibilité multiplateforme se compare-t-elle ?

Prise en charge multiplateforme de IronPDF

IronPDF démontre une compatibilité multiplateforme exceptionnelle, prenant en charge le déploiement dans pratiquement tous les environnements. La bibliothèque fonctionne parfaitement sur :

  • Versions .NET :

    • .NET 10, 9, 8, 7, 6, 5 (avec compatibilité .NET 10)
    • .NET Core 3.1+
    • .NET Standard 2.0+
    • .NET Framework 4.6.2+
    • Support complet pour C#, VB.NET et F#
  • Systèmes d'exploitation et environnements :

    • Windows (y compris Windows Server)
    • Linux (toutes les principales distributions)
    • macOS (Intel et Apple Silicon)
    • Conteneurs Docker
    • Cloud platforms: Azure, AWS Lambda
  • Outils de développement :
    • Microsoft Visual Studio
    • JetBrains Rider & ReSharper
    • Visual Studio Code

Le support multiplateforme natif de IronPDF signifie qu'aucun package ou configuration supplémentaire n'est nécessaire pour différents environnements. La bibliothèque détecte automatiquement et s'optimise pour la plateforme cible, comme mentionné dans la mise à jour de la compatibilité des étapes clés.

Prise en charge multiplateforme de Puppeteer Sharp

Puppeteer Sharp offre une compatibilité multiplateforme avec certaines considérations importantes :

  • Versions .NET :

    • Version .NET 8 disponible
    • Bibliothèque .NET Standard 2.0
    • .NET Framework 4.6.1+
    • .NET Core 2.0 ou supérieur
  • Systèmes d'exploitation :

    • Windows (prise en charge complète)
    • Linux (nécessite un serveur X, peut nécessiter un dépannage)
    • macOS (prise en charge standard)
    • Docker (avec dépendances Chrome)
  • Exigences du navigateur :
    • Nécessite le téléchargement des binaires Chromium (~170Mo)
    • Prend en charge les navigateurs Chrome, Chromium et Firefox
    • Modes sans tête et avec tête disponibles

Selon la documentation officielle, les utilisateurs de Linux peuvent rencontrer des problèmes pour exécuter Chrome et doivent consulter le guide de dépannage. La bibliothèque nécessite la gestion des téléchargements de navigateur et du cycle de vie, ajoutant de la complexité au déploiement.

Quelle bibliothèque offre la meilleure fonctionnalité PDF ?

Lors de l'évaluation des capacités PDF, les différences entre IronPDF et Puppeteer Sharp deviennent particulièrement évidentes. Examinons leurs fonctionnalités de base en détail.

Fonctionnalités d'IronPDF

IronPDF offre une suite complète d'outils de manipulation PDF :

  • Génération et conversion de PDF :

    • Conversion HTML en PDF avec prise en charge complète de CSS3, JavaScript et des polices Web
    • Convert from multiple formats: DOCX, images, RTF, and Markdown
    • PDF à partir d'une URL avec prise en charge de l'authentification
    • Rendu des vues ASPX et MVC
  • Fonctionnalités de sécurité :

    • Chiffrement AES 256 bits
    • Protection par mot de passe avec des permissions d'utilisateur/propriétaire
    • Signatures numériques avec prise en charge des certificats
    • Gestion des permissions (impression, copie, restrictions d'édition)
  • Capacités d'édition de PDF :

    • Fusionner et diviser des PDF
    • Ajouter des en-têtes, des pieds de page et des numéros de page
    • Filigranage avec HTML/CSS
    • Création et remplissage de formulaires
    • Estampillage de texte et d'images
    • Compression PDF
  • Fonctionnalités avancées :
    • Conformité PDF/A pour l'archivage
    • Capacités OCR (via l'intégration IronOCR)
    • Génération de codes-barres
    • Prise en charge du multi-threading

Fonctionnalités de Puppeteer Sharp

Puppeteer Sharp se concentre sur l'automatisation du navigateur avec le PDF comme option de sortie :

  • Génération de PDF :

    • HTML en PDF via la fonctionnalité d'impression du navigateur
    • Tailles et marges de page personnalisées
    • En-têtes et pieds de page (style limité)
    • Contrôle du viewport pour les mises en page réactives
  • Automatisation du navigateur :

    • Contrôle complet du Chrome/Chromium sans tête
    • Exécution JavaScript et attentes
    • Remplissage de formulaires et interaction UI
    • Interception des requêtes réseau
  • Capacités de capture d'écran :

    • Captures de pages complètes ou spécifiques à un élément
    • Formats d'image multiples (PNG, JPG)
    • Manipulation du viewport
  • Limitations :
    • Pas de fonctionnalités d'édition PDF natives
    • Pas d'options de chiffrement ou de sécurité
    • Pas de prise en charge des signatures numériques
    • Pas d'outils de création de formulaires
    • Nécessite des bibliothèques externes pour la manipulation PDF

Comme noté par API Template, "Puppeteer Sharp est un portage C# de la bibliothèque Puppeteer populaire, utilisée pour l'automatisation de Chrome sans tête. Dans cet article, nous verrons comment utiliser Puppeteer Sharp pour générer des PDF à partir de modèles HTML."

Exemples de code réels : IronPDF vs Puppeteer Sharp

Explorons des implémentations pratiques des deux bibliothèques pour comprendre leurs modèles d'utilisation et capacités.

Comparaison de conversion HTML en PDF

Exemple IronPDF :

using IronPdf;

// Initialize the Chrome renderer
var renderer = new ChromePdfRenderer();

// Configure rendering options for professional output
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                h1 { color: #2e6da4; }
                .invoice-header { background-color: #f5f5f5; padding: 20px; }
            </style>
        </head>
        <body>
            <div class='invoice-header'>
                <h1>Invoice #12345</h1>
                <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
            </div>
        </body>
    </html>");

// Save the PDF
pdf.SaveAs("invoice.pdf");
using IronPdf;

// Initialize the Chrome renderer
var renderer = new ChromePdfRenderer();

// Configure rendering options for professional output
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 40;
renderer.RenderingOptions.MarginBottom = 40;
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;

// Convert HTML string to PDF
var pdf = renderer.RenderHtmlAsPdf(@"
    <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                h1 { color: #2e6da4; }
                .invoice-header { background-color: #f5f5f5; padding: 20px; }
            </style>
        </head>
        <body>
            <div class='invoice-header'>
                <h1>Invoice #12345</h1>
                <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
            </div>
        </body>
    </html>");

// Save the PDF
pdf.SaveAs("invoice.pdf");
Imports IronPdf

' Initialize the Chrome renderer
Private renderer = New ChromePdfRenderer()

' Configure rendering options for professional output
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
renderer.RenderingOptions.MarginTop = 40
renderer.RenderingOptions.MarginBottom = 40
renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print

' Convert HTML string to PDF
Dim pdf = renderer.RenderHtmlAsPdf("
    <html>
        <head>
            <style>
                body { font-family: Arial, sans-serif; }
                h1 { color: #2e6da4; }
                .invoice-header { background-color: #f5f5f5; padding: 20px; }
            </style>
        </head>
        <body>
            <div class='invoice-header'>
                <h1>Invoice #12345</h1>
                <p>Generated on: " & DateTime.Now.ToString("yyyy-MM-dd") & "</p>
            </div>
        </body>
    </html>")

' Save the PDF
pdf.SaveAs("invoice.pdf")
$vbLabelText   $csharpLabel

Cet exemple de IronPDF montre l'approche simplifiée de la bibliothèque. La classe ChromePdfRenderer gère toute la complexité du rendu HTML en interne. Les principaux avantages incluent :

  • Appel de méthode unique pour la conversion (RenderHtmlAsPdf)
  • Support intégré pour les types de médias CSS
  • Pas besoin de gestion du cycle de vie du navigateur
  • Disponibilité immédiate sans téléchargement de dépendances externes

Exemple de Puppeteer Sharp :

using PuppeteerSharp;

// Download Chromium if not already present
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
});

try
{
    // Create new page
    var page = await browser.NewPageAsync();

    // Set content
    await page.SetContentAsync(@"
        <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    h1 { color: #2e6da4; }
                    .invoice-header { background-color: #f5f5f5; padding: 20px; }
                </style>
            </head>
            <body>
                <div class='invoice-header'>
                    <h1>Invoice #12345</h1>
                    <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                </div>
            </body>
        </html>");

    // Wait for content to load
    await page.WaitForSelectorAsync(".invoice-header");

    // Generate PDF
    await page.PdfAsync("invoice.pdf", new PdfOptions
    {
        Format = PaperFormat.A4,
        MarginOptions = new MarginOptions
        {
            Top = "40px",
            Bottom = "40px",
            Left = "40px",
            Right = "40px"
        }
    });
}
finally
{
    // Clean up browser instance
    await browser.CloseAsync();
}
using PuppeteerSharp;

// Download Chromium if not already present
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions
{
    Headless = true,
    Args = new[] { "--no-sandbox", "--disable-setuid-sandbox" }
});

try
{
    // Create new page
    var page = await browser.NewPageAsync();

    // Set content
    await page.SetContentAsync(@"
        <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    h1 { color: #2e6da4; }
                    .invoice-header { background-color: #f5f5f5; padding: 20px; }
                </style>
            </head>
            <body>
                <div class='invoice-header'>
                    <h1>Invoice #12345</h1>
                    <p>Generated on: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
                </div>
            </body>
        </html>");

    // Wait for content to load
    await page.WaitForSelectorAsync(".invoice-header");

    // Generate PDF
    await page.PdfAsync("invoice.pdf", new PdfOptions
    {
        Format = PaperFormat.A4,
        MarginOptions = new MarginOptions
        {
            Top = "40px",
            Bottom = "40px",
            Left = "40px",
            Right = "40px"
        }
    });
}
finally
{
    // Clean up browser instance
    await browser.CloseAsync();
}
Imports PuppeteerSharp

' Download Chromium if not already present
Await (New BrowserFetcher()).DownloadAsync()

' Launch browser instance
Dim browser = Await Puppeteer.LaunchAsync(New LaunchOptions With {
	.Headless = True,
	.Args = { "--no-sandbox", "--disable-setuid-sandbox" }
})

Try
	' Create new page
	Dim page = Await browser.NewPageAsync()

	' Set content
	Await page.SetContentAsync("
        <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    h1 { color: #2e6da4; }
                    .invoice-header { background-color: #f5f5f5; padding: 20px; }
                </style>
            </head>
            <body>
                <div class='invoice-header'>
                    <h1>Invoice #12345</h1>
                    <p>Generated on: " & DateTime.Now.ToString("yyyy-MM-dd") & "</p>
                </div>
            </body>
        </html>")

	' Wait for content to load
	Await page.WaitForSelectorAsync(".invoice-header")

	' Generate PDF
	Await page.PdfAsync("invoice.pdf", New PdfOptions With {
		.Format = PaperFormat.A4,
		.MarginOptions = New MarginOptions With {
			.Top = "40px",
			.Bottom = "40px",
			.Left = "40px",
			.Right = "40px"
		}
	})
Finally
	' Clean up browser instance
	Await browser.CloseAsync()
End Try
$vbLabelText   $csharpLabel

L'approche de Puppeteer Sharp nécessite plus de configuration :

  • Téléchargement et gestion du navigateur (~170Mo de Chromium)
  • Nettoyage des ressources explicite avec try/finally
  • Conditions d'attente manuelles pour le contenu dynamique
  • Spécifications de marges basées sur des chaînes

Selon les discussions sur Stack Overflow, les développeurs ont souvent du mal avec la taille des pages et la cohérence du rendu dans Puppeteer Sharp.

Travailler avec du contenu dynamique

IronPDF avec JavaScript :

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure JavaScript execution
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds for JS

// Render a page with dynamic charts
var pdf = renderer.RenderUrlAsPdf("https://example.com/dashboard");

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;

pdf.SaveAs("secure-dashboard.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure JavaScript execution
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 2000; // Wait 2 seconds for JS

// Render a page with dynamic charts
var pdf = renderer.RenderUrlAsPdf("https://example.com/dashboard");

// Apply security settings
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.OwnerPassword = "owner456";
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;

pdf.SaveAs("secure-dashboard.pdf");
Imports IronPdf

Private renderer = New ChromePdfRenderer()

' Configure JavaScript execution
renderer.RenderingOptions.EnableJavaScript = True
renderer.RenderingOptions.RenderDelay = 2000 ' Wait 2 seconds for JS

' Render a page with dynamic charts
Dim pdf = renderer.RenderUrlAsPdf("https://example.com/dashboard")

' Apply security settings
pdf.SecuritySettings.UserPassword = "user123"
pdf.SecuritySettings.OwnerPassword = "owner456"
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint

pdf.SaveAs("secure-dashboard.pdf")
$vbLabelText   $csharpLabel

L'approche de IronPDF pour le contenu dynamique se concentre sur la simplicité. L'option RenderDelay offre un moyen simple d'attendre l'exécution de JavaScript. Avantages additionnels :

  • Fonctionnalités de sécurité intégrées directement
  • Pas besoin de gérer les états du navigateur
  • Rendu cohérent à travers les environnements

Pour des scénarios JavaScript plus complexes, IronPDF propose la classe WaitFor pour un contrôle de synchronisation précis.

Puppeteer Sharp avec contenu dynamique :

using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();

// Navigate to page
await page.GoToAsync("https://example.com/dashboard", new NavigationOptions
{
    WaitUntil = new[] { WaitUntilNavigation.Networkidle0 }
});

// Execute custom JavaScript
await page.EvaluateExpressionAsync(@"
    // Trigger chart rendering
    document.dispatchEvent(new Event('load-charts'));
");

// Wait for specific element
await page.WaitForSelectorAsync(".chart-container", new WaitForSelectorOptions
{
    Visible = true,
    Timeout = 30000
});

// Generate PDF (no built-in security features)
await page.PdfAsync("dashboard.pdf");

await browser.CloseAsync();
using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });
var page = await browser.NewPageAsync();

// Navigate to page
await page.GoToAsync("https://example.com/dashboard", new NavigationOptions
{
    WaitUntil = new[] { WaitUntilNavigation.Networkidle0 }
});

// Execute custom JavaScript
await page.EvaluateExpressionAsync(@"
    // Trigger chart rendering
    document.dispatchEvent(new Event('load-charts'));
");

// Wait for specific element
await page.WaitForSelectorAsync(".chart-container", new WaitForSelectorOptions
{
    Visible = true,
    Timeout = 30000
});

// Generate PDF (no built-in security features)
await page.PdfAsync("dashboard.pdf");

await browser.CloseAsync();
Imports PuppeteerSharp

Private browser = await Puppeteer.LaunchAsync(New LaunchOptions With {.Headless = True})
Private page = await browser.NewPageAsync()

' Navigate to page
Await page.GoToAsync("https://example.com/dashboard", New NavigationOptions With {
	.WaitUntil = { WaitUntilNavigation.Networkidle0 }
})

' Execute custom JavaScript
Await page.EvaluateExpressionAsync("
    // Trigger chart rendering
    document.dispatchEvent(new Event('load-charts'));
")

' Wait for specific element
Await page.WaitForSelectorAsync(".chart-container", New WaitForSelectorOptions With {
	.Visible = True,
	.Timeout = 30000
})

' Generate PDF (no built-in security features)
Await page.PdfAsync("dashboard.pdf")

Await browser.CloseAsync()
$vbLabelText   $csharpLabel

Puppeteer Sharp excelle dans les interactions de navigateur complexes :

  • Contrôle précis de la navigation sur la page
  • Exécution JavaScript personnalisée
  • Conditions d'attente flexibles
  • Manipulation directe du DOM

Cependant, l'ajout de fonctionnalités de sécurité nécessiterait des bibliothèques PDF supplémentaires, comme noté dans la documentation officielle.

Opérations avancées sur PDF

IronPDF - Flux de documents complet :

using IronPdf;
using IronPdf.Signing;

// Create initial PDF from HTML template
var renderer = new ChromePdfRenderer();
var invoice = renderer.RenderHtmlFileAsPdf("invoice-template.html");

// Add watermark
invoice.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
    30, IronPdf.Editing.VerticalAlignment.Middle, 
    IronPdf.Editing.HorizontalAlignment.Center);

// Merge with terms and conditions
var terms = PdfDocument.FromFile("terms.pdf");
var combined = PdfDocument.Merge(invoice, terms);

// Add digital signature
var signature = new PdfSignature("certificate.pfx", "password");
combined.Sign(signature);

// Set metadata
combined.MetaData.Author = "Accounting Department";
combined.MetaData.Title = "Invoice #12345";
combined.MetaData.CreationDate = DateTime.Now;

// Compress and save
combined.CompressImages(90);
combined.SaveAs("final-invoice.pdf");
using IronPdf;
using IronPdf.Signing;

// Create initial PDF from HTML template
var renderer = new ChromePdfRenderer();
var invoice = renderer.RenderHtmlFileAsPdf("invoice-template.html");

// Add watermark
invoice.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 
    30, IronPdf.Editing.VerticalAlignment.Middle, 
    IronPdf.Editing.HorizontalAlignment.Center);

// Merge with terms and conditions
var terms = PdfDocument.FromFile("terms.pdf");
var combined = PdfDocument.Merge(invoice, terms);

// Add digital signature
var signature = new PdfSignature("certificate.pfx", "password");
combined.Sign(signature);

// Set metadata
combined.MetaData.Author = "Accounting Department";
combined.MetaData.Title = "Invoice #12345";
combined.MetaData.CreationDate = DateTime.Now;

// Compress and save
combined.CompressImages(90);
combined.SaveAs("final-invoice.pdf");
Imports IronPdf
Imports IronPdf.Signing

' Create initial PDF from HTML template
Private renderer = New ChromePdfRenderer()
Private invoice = renderer.RenderHtmlFileAsPdf("invoice-template.html")

' Add watermark
invoice.ApplyWatermark("<h2 style='color:red; opacity:0.5'>CONFIDENTIAL</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)

' Merge with terms and conditions
Dim terms = PdfDocument.FromFile("terms.pdf")
Dim combined = PdfDocument.Merge(invoice, terms)

' Add digital signature
Dim signature = New PdfSignature("certificate.pfx", "password")
combined.Sign(signature)

' Set metadata
combined.MetaData.Author = "Accounting Department"
combined.MetaData.Title = "Invoice #12345"
combined.MetaData.CreationDate = DateTime.Now

' Compress and save
combined.CompressImages(90)
combined.SaveAs("final-invoice.pdf")
$vbLabelText   $csharpLabel

Cet exemple montre les capacités complètes de manipulation PDF de IronPDF :

  • Génération basée sur des modèles à partir de fichiers HTML
  • Filigranage avec contrôle de style CSS
  • Fusion de documents pour des PDF multi-parties
  • Signatures numériques pour l'authentification
  • Gestion des métadonnées pour les propriétés des documents
  • Compression d'images pour réduire la taille des fichiers

The stamping features and digital signature support make IronPDF suitable for enterprise document workflows.

Puppeteer Sharp - Focus sur l'automatisation du navigateur :

using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions 
{ 
    Headless = false, // Show browser for debugging
    SlowMo = 50 // Slow down actions
});

var page = await browser.NewPageAsync();

// Navigate to web application
await page.GoToAsync("https://app.example.com/login");

// Automate login
await page.TypeAsync("#username", "user@example.com");
await page.TypeAsync("#password", "password123");
await page.ClickAsync("#login-button");

// Wait for dashboard
await page.WaitForNavigationAsync();

// Take screenshot for documentation
await page.ScreenshotAsync("dashboard-screenshot.png", new ScreenshotOptions
{
    FullPage = true,
    Type = ScreenshotType.Png
});

// Generate report PDF
await page.ClickAsync("#generate-report");
await page.WaitForSelectorAsync(".report-ready");

// Save the generated report
await page.PdfAsync("automated-report.pdf", new PdfOptions
{
    DisplayHeaderFooter = true,
    HeaderTemplate = "<div style='font-size:10px;'>Report Header</div>",
    FooterTemplate = "<div style='font-size:10px;'>Page <span class='pageNumber'></span></div>",
    Format = PaperFormat.A4
});

await browser.CloseAsync();
using PuppeteerSharp;

var browser = await Puppeteer.LaunchAsync(new LaunchOptions 
{ 
    Headless = false, // Show browser for debugging
    SlowMo = 50 // Slow down actions
});

var page = await browser.NewPageAsync();

// Navigate to web application
await page.GoToAsync("https://app.example.com/login");

// Automate login
await page.TypeAsync("#username", "user@example.com");
await page.TypeAsync("#password", "password123");
await page.ClickAsync("#login-button");

// Wait for dashboard
await page.WaitForNavigationAsync();

// Take screenshot for documentation
await page.ScreenshotAsync("dashboard-screenshot.png", new ScreenshotOptions
{
    FullPage = true,
    Type = ScreenshotType.Png
});

// Generate report PDF
await page.ClickAsync("#generate-report");
await page.WaitForSelectorAsync(".report-ready");

// Save the generated report
await page.PdfAsync("automated-report.pdf", new PdfOptions
{
    DisplayHeaderFooter = true,
    HeaderTemplate = "<div style='font-size:10px;'>Report Header</div>",
    FooterTemplate = "<div style='font-size:10px;'>Page <span class='pageNumber'></span></div>",
    Format = PaperFormat.A4
});

await browser.CloseAsync();
Imports PuppeteerSharp

Private browser = await Puppeteer.LaunchAsync(New LaunchOptions With {
	.Headless = False,
	.SlowMo = 50
})

Private page = await browser.NewPageAsync()

' Navigate to web application
Await page.GoToAsync("https://app.example.com/login")

' Automate login
Await page.TypeAsync("#username", "user@example.com")
Await page.TypeAsync("#password", "password123")
Await page.ClickAsync("#login-button")

' Wait for dashboard
Await page.WaitForNavigationAsync()

' Take screenshot for documentation
Await page.ScreenshotAsync("dashboard-screenshot.png", New ScreenshotOptions With {
	.FullPage = True,
	.Type = ScreenshotType.Png
})

' Generate report PDF
Await page.ClickAsync("#generate-report")
Await page.WaitForSelectorAsync(".report-ready")

' Save the generated report
Await page.PdfAsync("automated-report.pdf", New PdfOptions With {
	.DisplayHeaderFooter = True,
	.HeaderTemplate = "<div style='font-size:10px;'>Report Header</div>",
	.FooterTemplate = "<div style='font-size:10px;'>Page <span class='pageNumber'></span></div>",
	.Format = PaperFormat.A4
})

Await browser.CloseAsync()
$vbLabelText   $csharpLabel

La force de Puppeteer Sharp réside dans les scénarios d'automatisation du navigateur :

  • Connexion automatisée et navigation
  • Capture de captures d'écran à tout moment
  • Interaction avec les applications web
  • Génération de rapports dynamiques à partir d'applications web

Comme noté par ZenRows, "Puppeteer Sharp peut simuler plusieurs interactions utilisateur automatisées. Cela inclut les mouvements de souris, les attentes, et plus encore."

Quels sont les considérations de performance ?

Performance d'IronPDF

IronPDF est optimisé pour les opérations PDF avec plusieurs fonctionnalités de performance :

  • Gestion de la mémoire :

    • Utilisation efficace de la mémoire grâce au ramasse-miettes .NET
    • Optimisation par traitement par lots
    • Prise en charge du streaming pour les documents volumineux
  • Multi-threading :

    • Prise en charge complète des async/await
    • Capacités de génération PDF en parallèle
    • Opérations thread-safe
  • Vitesse de rendu :
    • Moyenne de 0,8-1,2 secondes pour un HTML typique en PDF
    • Le moteur Chrome intégré élimine la surcharge de processus externe
    • Mécanismes de mise en cache pour les opérations répétées

Selon les guides d'optimisation des performances, le rendu initial de IronPDF peut être plus lent dû à l'initialisation du moteur, mais les opérations ultérieures sont hautement optimisées.

Performance de Puppeteer Sharp

Les caractéristiques de performance de Puppeteer Sharp diffèrent en raison de son architecture :

  • Surcharge du navigateur :

    • Télécharger ~170Mo de Chromium requis
    • 150-200Mo de RAM par instance de navigateur
    • Le temps de lancement du navigateur ajoute 1-3 secondes
  • Vitesse de rendu :

    • 0,3-0,5 secondes pour un HTML simple
    • La performance se dégrade avec plusieurs instances
    • Ressource intensive pour les opérations simultanées
  • Stratégies d'optimisation :
    • Réutilisation de l'instance de navigateur recommandée
    • Pooling de connexion pour plusieurs PDF
    • Le mode sans tête réduit la surcharge

Les tests de performance montrent que Puppeteer peut être plus rapide pour le HTML simple mais nécessite une gestion attentive des ressources pour une utilisation en production.

Comment les tarifs et licences se comparent-ils ?

Structure tarifaire de IronPDF

IronPDF propose des options de licence commerciale flexibles :

  • Niveaux de licence (tarification à partir de 2025) :

    • Licence Lite : $799 - 1 développeur, 1 lieu, 1 projet
    • Licence Plus : $1,199 - 3 développeurs, 3 lieux, 3 projets
    • Licence Professionnelle : $2,399 - 10 développeurs, 10 lieux, 10 projets
    • Licence Illimitée : Tarification personnalisée pour des équipes plus importantes
  • Options supplémentaires :

    • Redistribution sans redevance : +$2,399
    • Licence SaaS/OEM disponible
    • Iron Suite : $1,498 pour 9 produits
    • Garantie de remboursement de 30 jours
  • Support et mises à jour :
    • Un an de support et de mises à jour inclus
    • Support étendu : 999 $/an ou 1 999 $ pour 5 ans
    • Support 24/5 avec chaque licence

Licences de Puppeteer Sharp

Puppeteer Sharp utilise la licence MIT :

  • Coût : Complètement gratuit
  • Utilisation commerciale : Autorisée sans restrictions
  • Support : Basé sur la communauté via GitHub
  • Mises à jour : Conduites par la communauté open-source

Bien que gratuit, considérez les coûts cachés :

  • Pas de support professionnel
  • Infrastructure autogérée
  • Bibliothèques supplémentaires nécessaires pour des fonctionnalités avancées
  • Investissement en temps pour le dépannage

Comme discuté sur la communauté dotnet de Reddit, le choix dépend souvent de si le support professionnel et les fonctionnalités avancées justifient l'investissement.

Analyse de la documentation et du support

Documentation et support de IronPDF

IronPDF fournit des ressources professionnelles complètes :

Documentation et support de Puppeteer Sharp

Puppeteer Sharp repose sur les ressources communautaires :

  • Documentation de référence API
  • Documentation API
  • README et wiki GitHub
  • Exemples de code dans le dépôt
  • Liens vers la documentation originale de Puppeteer

  • Support par email et téléphone (première année incluse)
  • Problèmes GitHub pour les rapports de bugs
  • Discussions communautaires
  • Questions sur Stack Overflow
  • Aucun canal de support officiel
  • Limitations :
    • Documentation pas toujours à jour
    • Dépend des contributions de la communauté
    • Guides de dépannage limités
    • Exemples potentiellement obsolètes

Le blog des développeurs fournit des informations mais les mises à jour sont sporadiques.

Quelle bibliothèque PDF devriez-vous choisir ?

La décision entre IronPDF et Puppeteer Sharp dépend de vos besoins spécifiques et de votre cas d'utilisation.

  • Le budget est une considération : Coût d'entrée inférieur et meilleure valeur pour les scénarios HTML en PDF

  • Développer des applications d'entreprise nécessitant des PDF professionnels sécurisés
  • Besoin de fonctionnalités PDF complètes au-delà de la génération de base
  • Souhaitez une complexité de code minimale avec des API simples
  • Requérir un support professionnel et une documentation
  • Travailler avec plusieurs formats PDF (DOCX, images, etc.)
  • Besoin de fonctionnalités de sécurité intégrées telles que le chiffrement et les signatures
  • Déploiement sur diverses plateformes sans soucis de compatibilité
  • Valorisez le temps de mise sur le marché par rapport au coût initial

IronPDF excelle dans des scénarios tels que :

  • Génération de factures et de rapports
  • Systèmes de gestion de documents
  • Documentation nécessitant la conformité
  • Traitement de documents multi-format
  • Opérations PDF de grande envergure

Choisissez Puppeteer Sharp lorsque :

  • Le principal objectif est l'automatisation du navigateur avec le PDF en second
  • Les contraintes budgétaires empêchent des licences commerciales
  • Besoins en capacités de web scraping en plus de la génération de PDF
  • À l'aise avec la gestion de l'infrastructure du navigateur
  • Besoin de PDF simples sans caractéristiques avancées
  • Possédez des connaissances existantes sur Puppeteer depuis Node.js
  • Construire des cadres de test ou des outils d'automatisation

Puppeteer Sharp fonctionne bien pour :

  • Tests automatisés avec rapports PDF
  • Web scraping avec exportation PDF
  • Conversion HTML simple en PDF
  • Flux de travail de capture de captures d'écran
  • Tâches d'automatisation basées sur le navigateur

Recommandations pratiques

Based on extensive comparison analyses and developer feedback, here are practical recommendations:

  1. Pour les applications en production : La fiabilité, le support et les fonctionnalités de IronPDF justifient l'investissement
  2. Pour les prototypes : La licence gratuite de Puppeteer Sharp permet une expérimentation rapide
  3. Pour des PDF complexes : Les fonctionnalités avancées de IronPDF économisent du temps de développement
  4. Pour les tests de navigateur : Les capacités d'automatisation de Puppeteer Sharp sont incomparables

Support des cadres CSS modernes

Les deux IronPDF et Puppeteer Sharp utilisent des moteurs de rendu Chromium, ce qui signifie que les deux peuvent théoriquement gérer des frameworks CSS modernes comme Bootstrap, Tailwind CSS, et Foundation. Cependant, la complexité de l'implémentation et l'expérience utilisateur diffèrent significativement.

IronPDF : Rendu simplifié de Bootstrap

L'API axée sur le PDF de IronPDF rend le rendu des mises en page Bootstrap simple avec un minimum de code :

  • Conversion en une ligne : Pas besoin de gestion du cycle de vie du navigateur
  • Optimisation intégrée : Gestion automatique du chargement de CSS/JavaScript
  • Bootstrap 5 ready: Full support for Bootstrap homepage and templates
  • Prêt pour la production : Inclut sécurité, compression, et fonctionnalités d'entreprise

Exemple de code : Rendu de Bootstrap avec IronPDF

using IronPdf;

// Simple, direct Bootstrap rendering
var renderer = new ChromePdfRenderer();

string bootstrapContent = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <div class='row'>
            <div class='col-md-4 mb-4'>
                <div class='card shadow'>
                    <div class='card-body'>
                        <h5 class='card-title'>Quick Start</h5>
                        <p class='card-text'>Render Bootstrap with one method call.</p>
                        <a href='#' class='btn btn-primary'>Learn More</a>
                    </div>
                </div>
            </div>
            <!-- Additional Bootstrap components... -->
        </div>
    </div>
</body>
</html>";

// Single method call - no browser management
var pdf = renderer.RenderHtmlAsPdf(bootstrapContent);
pdf.SaveAs("bootstrap-layout.pdf");
using IronPdf;

// Simple, direct Bootstrap rendering
var renderer = new ChromePdfRenderer();

string bootstrapContent = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <div class='row'>
            <div class='col-md-4 mb-4'>
                <div class='card shadow'>
                    <div class='card-body'>
                        <h5 class='card-title'>Quick Start</h5>
                        <p class='card-text'>Render Bootstrap with one method call.</p>
                        <a href='#' class='btn btn-primary'>Learn More</a>
                    </div>
                </div>
            </div>
            <!-- Additional Bootstrap components... -->
        </div>
    </div>
</body>
</html>";

// Single method call - no browser management
var pdf = renderer.RenderHtmlAsPdf(bootstrapContent);
pdf.SaveAs("bootstrap-layout.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Puppeteer Sharp : Rendu Bootstrap basé sur le navigateur

Puppeteer Sharp nécessite une gestion explicite du navigateur et du cycle de vie pour le rendu de Bootstrap :

Exemple de code : Rendu de Bootstrap avec Puppeteer Sharp

using PuppeteerSharp;

// Download Chromium if needed (one-time ~170MB)
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });

try
{
    var page = await browser.NewPageAsync();

    // Set Bootstrap content
    await page.SetContentAsync(@"
    <!DOCTYPE html>
    <html>
    <head>
        <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    </head>
    <body>
        <div class='container mt-5'>
            <div class='row'>
                <div class='col-md-4 mb-4'>
                    <div class='card shadow'>
                        <div class='card-body'>
                            <h5 class='card-title'>Quick Start</h5>
                            <p class='card-text'>Render Bootstrap with browser automation.</p>
                            <a href='#' class='btn btn-primary'>Learn More</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>");

    // Wait for Bootstrap CSS to load
    await page.WaitForNetworkIdleAsync();

    // Generate PDF
    await page.PdfAsync("bootstrap-layout.pdf");
}
finally
{
    // Required cleanup
    await browser.CloseAsync();
}
using PuppeteerSharp;

// Download Chromium if needed (one-time ~170MB)
await new BrowserFetcher().DownloadAsync();

// Launch browser instance
var browser = await Puppeteer.LaunchAsync(new LaunchOptions { Headless = true });

try
{
    var page = await browser.NewPageAsync();

    // Set Bootstrap content
    await page.SetContentAsync(@"
    <!DOCTYPE html>
    <html>
    <head>
        <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    </head>
    <body>
        <div class='container mt-5'>
            <div class='row'>
                <div class='col-md-4 mb-4'>
                    <div class='card shadow'>
                        <div class='card-body'>
                            <h5 class='card-title'>Quick Start</h5>
                            <p class='card-text'>Render Bootstrap with browser automation.</p>
                            <a href='#' class='btn btn-primary'>Learn More</a>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </body>
    </html>");

    // Wait for Bootstrap CSS to load
    await page.WaitForNetworkIdleAsync();

    // Generate PDF
    await page.PdfAsync("bootstrap-layout.pdf");
}
finally
{
    // Required cleanup
    await browser.CloseAsync();
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Différences clés pour le développement Bootstrap

Complexité :

  • IronPDF : 4 lignes de code (initialisation, rendu, sauvegarde)
  • Puppeteer Sharp : 15+ lignes (téléchargement, lancement, gestion de pages, nettoyage)

Caractéristiques :

  • IronPDF : Sécurité intégrée, compression, filigranage, signatures
  • Puppeteer Sharp : Nécessite des bibliothèques externes pour la manipulation PDF

Déploiement :

  • IronPDF : Autonome, sans dépendances externes
  • Puppeteer Sharp : Nécessite les binaires Chromium (~170Mo) et la gestion des navigateurs

Les deux bibliothèques rendent Bootstrap avec précision puisqu'elles utilisent des moteurs Chromium. Le choix dépend de si vous avez besoin d'un flux de travail de génération de PDF simple (IronPDF) ou de fonctionnalités plus larges d'automatisation du navigateur (Puppeteer Sharp).

Pour plus d'informations sur la compatibilité des frameworks CSS, consultez le Guide Bootstrap & Flexbox CSS.

Conclusion

Les deux IronPDF et Puppeteer Sharp servent des besoins différents dans l'écosystème .NET. IronPDF se distingue comme une solution PDF complète avec des fonctionnalités étendues, un support professionnel et des API simplifiées conçues spécifiquement pour les opérations PDF. Sa force réside dans la fourniture de tout ce dont vous avez besoin pour des flux de travail PDF d'entreprise dans un package unique et bien documenté.

Puppeteer Sharp excelle comme outil d'automatisation de navigateur qui génère également des PDF. Il est idéal pour les développeurs qui ont besoin de capacités de contrôle du navigateur et qui sont à l'aise avec la gestion de la complexité supplémentaire. La licence gratuite le rend attractif pour les projets soucieux du budget avec des exigences PDF simples.

Pour la plupart des applications commerciales nécessitant la génération et la manipulation fiable de PDF, IronPDF s'avère être le choix le plus pratique. Le temps économisé grâce à une meilleure documentation, des API plus simples et un support professionnel compense souvent le coût de la licence. Cependant, Puppeteer Sharp reste précieux pour des cas d'utilisation spécifiques où l'automatisation du navigateur est la principale exigence.

Prêt à faire l'expérience de la différence ? Commencez avec l'essai gratuit de 30 jours de IronPDF pour explorer ses fonctionnalités complètes et voir comment il peut simplifier vos flux de travail PDF. Que vous construisiez des factures, des rapports ou des systèmes de documents complexes, IronPDF fournit les outils et le support nécessaires pour réussir.

Commencez à utiliser IronPDF dans votre projet aujourd'hui avec un essai gratuit.

Première étape :
green arrow pointer

Veuillez noterPuppeteer Sharp est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou sponsorisé par Puppeteer Sharp. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à des fins d'information uniquement et reflètent les informations disponibles publiquement au moment de la rédaction.

Questions Fréquemment Posées

Comment puis-je convertir HTML en PDF en C# ?

Vous pouvez utiliser la méthode RenderHtmlAsPdf d'IronPDF pour convertir des chaînes HTML en PDFs. Vous pouvez également convertir des fichiers HTML en PDFs en utilisant RenderHtmlFileAsPdf.

Quelles sont les principales différences entre IronPDF et Puppeteer Sharp ?

IronPDF est une bibliothèque PDF complète conçue spécifiquement pour les développeurs .NET, offrant des fonctionnalités étendues de manipulation PDF telles que le cryptage, la signature et l'édition. Puppeteer Sharp est un outil d'automatisation de navigateur qui peut générer des PDF comme l'une de ses fonctionnalités, se concentrant principalement sur le contrôle de Chrome sans tête pour les tests et le web scraping.

Puis-je ajouter des fonctionnalités de sécurité aux PDF par programme ?

IronPDF offre des fonctionnalités de sécurité complètes, y compris le chiffrement AES-256, la protection par mot de passe et le contrôle granularisé des permissions. Vous pouvez définir des mots de passe utilisateur et propriétaire, restreindre l'impression, la copie et l'édition via la propriété SecuritySettings. Les signatures numériques sont également prises en charge nativement.

Quelle bibliothèque offre une meilleure compatibilité multiplateforme ?

IronPDF offre une compatibilité multiplateforme supérieure avec un support natif pour Windows, Linux, macOS, Docker, Azure et AWS. Il prend en charge .NET 10, 9, 8, 7, 6, Core, Standard et Framework sans nécessiter de configuration ou de packages supplémentaires pour différents environnements.

Comment ces bibliothèques gèrent-elles le rendu JavaScript ?

Les deux bibliothèques prennent en charge l'exécution de JavaScript puisqu'elles utilisent un rendu basé sur Chrome. IronPDF propose des options simples de délai de rendu et la classe WaitFor pour le contrôle du timing. Puppeteer Sharp offre un contrôle plus détaillé avec des conditions d'attente et des capacités d'exécution directe de JavaScript.

Quels sont les coûts de licence de ces bibliothèques ?

IronPDF utilise une licence commerciale à partir de 749 $ pour une licence Lite (1 développeur, 1 projet). Divers niveaux sont disponibles jusqu'à la licence illimitée pour entreprise. Puppeteer Sharp est entièrement gratuit sous la licence MIT mais manque de support professionnel et de fonctionnalités avancées.

Puis-je éditer des documents PDF existants avec ces bibliothèques ?

IronPDF offre des capacités étendues de modification de PDF, y compris la fusion, la séparation, l'ajout de filigranes, d'en-têtes/pieds de page, le remplissage de formulaires et la manipulation des pages. Puppeteer Sharp génère uniquement des PDF et nécessite des bibliothèques supplémentaires pour toute opération de modification.

L'automatisation du navigateur est-elle possible avec les deux bibliothèques ?

Puppeteer Sharp excelle dans l'automatisation du navigateur, offrant un contrôle total sur Chrome sans tête, y compris la navigation, le remplissage de formulaires et la capture d'écran. IronPDF se concentre sur les opérations PDF et ne fournit pas de fonctionnalités d'automatisation du navigateur au-delà du rendu de contenu web en PDF.

Quel type de support aux développeurs est disponible ?

IronPDF fournit un support professionnel d'ingénieur 24/5, une documentation étendue, des tutoriels et des références d'API. Le support inclut des options par email, téléphone et partage d'écran, selon le niveau de licence. Puppeteer Sharp s'appuie sur le support communautaire via GitHub et Stack Overflow.

Comment gérer le contenu dynamique et les éléments chargés par AJAX dans les PDF ?

IronPDF gère le contenu dynamique via des retards de rendu et des paramètres d'exécution JavaScript. Vous pouvez définir un RenderDelay ou utiliser la classe WaitFor pour un timing précis. Puppeteer Sharp fournit des conditions d'attente, des options de navigation et une exécution JavaScript directe pour des scénarios de contenu dynamique complexes.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur technique chez Iron Software et un ingénieur visionnaire pionnier dans la technologie des PDF en C#. En tant que développeur original derrière la base de code principale d'Iron Software, il a façonné l'architecture du produit de l'entreprise depuis sa création, ...

Lire la suite