IRONSOFTWAREHOME
VIDÉOS

Rendre du contenu WebGL en PDF avec IronPDF

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

La migration de Microsoft Auteurfor .NET à IronPDF déplace votre flux de travail de génération de PDF d'un cadre de test d'automatisation de navigateur à une bibliothèque PDF dédiée. Ce guide fournit un chemin de migration étape par étape qui supprime la gestion du cycle de vie asynchrone du navigateur et l'étape distincte de téléchargement playwright install du fichier binaire du navigateur.

Pourquoi migrer de Auteurà IronPDF

Comprendre Auteurfor .NET

Playwright for .NET (NuGet Microsoft.Playwright, sous licence MIT) est le framework d'automatisation de navigateur de Microsoft, conçu principalement pour les tests de bout en bout sur Chromium, Firefox et WebKit. Ses charges de travail typiques sont interactives : cliquer sur des boutons, remplir des formulaires, intercepter des requêtes réseau, prendre des captures d'écran, et valider la compatibilité inter-navigateurs.

La génération de PDF dans Auteurest une fonctionnalité secondaire exposée via Page.PdfAsync(), et elle est prise en charge uniquement sur Chromium — Firefox et WebKit n'implémentent pas de sortie PDF. La sortie utilise le chemin d'impression en PDF du navigateur (équivalent à Ctrl+P), ce qui a des implications pour les mises en page, les arrière-plans, et la pagination :

  • Architecture axée sur les tests, non optimisée pour la production de documents sans tête
  • Les fichiers binaires du navigateur (Chromium, Firefox et WebKit en option) doivent être installés séparément via playwright install
  • API asynchrone conçue pour les flux de travail d'automatisation de tests
  • Pas de PDF/A intégré, PDF/UA, signature numérique, filigranage, fusion ou fonctionnalités de sécurité

Considérations lors de l'utilisation de Auteurpour les PDF

Playwright a été conçu pour les tests de bout en bout, et non pour la génération de documents. Quelques implications pratiques lors de sa réutilisation pour les PDF :

  1. Fichiers binaires de navigateur via playwright install. La configuration par défaut de Auteurtélécharge les fichiers binaires du navigateur (Chromium, Firefox, WebKit), ce qui peut être une considération pour les environnements avec des contraintes strictes de ressources ou de déploiement.

  2. Modèle de navigateur/contexte/page asynchrone. Les développeurs doivent être à l'aise avec la gestion des contextes du navigateur et du cycle de vie des pages, y compris la suppression.

  3. Architecture axée sur les tests, non optimisée pour la génération de documents à grande échelle.

  4. Sémantique d'impression en PDF équivalente à l'impression Ctrl+P du navigateur. Les mises en page peuvent être refondues, les arrière-plans peuvent être omis par défaut et la sortie est paginée pour l'impression.

  5. Pas de sortie PDF/A ou PDF/UA. Auteurne produit pas de documents conformes PDF/A (archivage) ou PDF/UA (accessibilité). Pour la Section 508, les directives d'accessibilité de l'UE, ou les exigences d'archivage à long terme, une bibliothèque PDF dédiée est généralement requise.

  6. Utilisation des ressources du navigateur par rendu lorsque chaque PDF déclenche des contextes et des pages de navigateur.

Surface de configuration

Playwright expose une surface de configuration orientée vers l'automatisation des tests. Les éléments les plus pertinents lors de son utilisation juste pour la génération de PDF :

Étape d'installation du navigateur :

# Separate installation step before first use
playwright install            # Downloads browser binaries (Chromium, Firefox, WebKit)
# Or for a single browser:
playwright install chromium   # Chromium-only (the only engine that supports PDF output)
SHELL

Configuration de lancement du navigateur :

// Testing-focused launch options for PDF generation
using var playwright = await Playwright.CreateAsync();
var browser = await playwright.Chromium.LaunchAsync(new BrowserTypeLaunchOptions
{
    Headless = true,  // Required for server environments
    Args = new[] { "--disable-gpu", "--no-sandbox" } // Linux/Docker configs
});

Options de configuration spécifiques aux tests :

  • Headless : Doit configurer le mode sans tête pour la production (par défaut en mode avec affichage pour les tests)
  • SlowMo : Retards de synchronisation des tests (sans pertinence pour la génération de PDF)
  • Devtools : Configuration des outils de test (non nécessaire pour les documents)
  • ExecutablePath : Chemins de navigateur personnalisés pour les environnements de test
  • Proxy : Interception du réseau pour les tests (surcharge inutile)
  • DownloadsPath : Gestion des artefacts de test
  • TracesDir : Traces d'exécution des tests

Gestion du contexte du navigateur :

// Complex context lifecycle from testing paradigm
var context = await browser.NewContextAsync(new BrowserNewContextOptions
{
    ViewportSize = new ViewportSize { Width = 1920, Height = 1080 },
    UserAgent = "custom-user-agent",
    Locale = "en-US",
    TimezoneId = "America/New_York"
});
var page = await context.NewPageAsync();
// ... generate PDF ...
await context.CloseAsync();  // Manual cleanup required
await browser.CloseAsync();  // Manual cleanup required

Surface multi-navigateurs :

// Auteursupports launching multiple engines
await playwright.Chromium.LaunchAsync();  // For Chromium-based testing (and PDF output)
await playwright.Firefox.LaunchAsync();   // For Firefox testing
await playwright.Webkit.LaunchAsync();    // For WebKit/Safari testing
// Note: Page.PdfAsync() is implemented on Chromium only.
C#

IronPDF : un seul moteur de rendu intégré

// No separate browser-binary install or context management
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

IronPDF inclut son moteur de rendu dans le package NuGet, il n'y a donc pas d'étape playwright install distincte et aucun cycle de vie du navigateur/contexte/page à gérer.

Comparaison des performances de Auteurvs IronPDF

MétriqueAuteurIronPDF
Objectif principalCadre de test d'automatisation de navigateur bout-en-boutGénération de document PDF
Philosophie de conceptionAxé sur les tests; PDF est une fonctionnalité secondaireBibliothèque PDF spécialement conçue à cet effet
Paquet NuGetMicrosoft.Playwright (MIT)IronPdf (commercial)
Étape de binaire de navigateurTéléchargement playwright install séparéInclus dans le package NuGet
Moteurs prenant en charge le PDFUniquement pour Chromium (Firefox / WebKit n'implémentent pas Page.PdfAsync())Un seul moteur intégré basé sur Chromium
Premier rendu (Cold Start)4.5 secondes2.8 secondes
Rendu ultérieur3.8-4.1 secondes0.8-1,2 secondes
Mémoire par conversion280-420MB80-120MB
Style APICycle de vie asynchrone navigateur/contexte/pageSynchrone ou asynchrone ; renderer-based
InitialisationCreateAsync() + LaunchAsync() + NewPageAsync()new ChromePdfRenderer()
Support PDF/ANon disponiblePrise en charge
Accessibilité PDF/UANon disponiblePrise en charge
Signatures numériquesNon disponiblePrise en charge
Édition de PDFNon disponibleFusionner, diviser, tamponner, éditer
Modèle de supportCommunautéCommercial avec SLA

IronPDF est construit spécifiquement pour la génération de PDF, avec une surface d'API centrée sur le document. Il utilise un moteur de rendu intégré basé sur Chromium et prend en charge à la fois les opérations synchrones et asynchrones, ce qui permet aux développeurs d'avoir un modèle mental plus simple lorsque la sortie PDF — et non l'interaction avec le navigateur — est l'objectif.

En résumé

Playwright est un bon choix lorsque la charge de travail principale est l'automatisation de navigateur ou les tests inter-navigateurs, avec une sortie PDF comme tâche secondaire occasionnelle.IronPDF est la meilleure solution lorsque la génération de PDF est la charge de travail principale : il n'y a pas de téléchargement binaire de navigateur séparé, pas de cycle de vie navigateur/contexte/page à gérer, et des fonctionnalités de documents comme PDF/A, signatures numériques, sécurité et fusion sont disponibles dès le départ.


Avant de commencer

Prérequis

  1. Environnement .NET : .NET Framework 4.6.2+ ou .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. Accès à NuGet : possibilité d'installer des packages NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur IronPDF

Modifications du paquet NuGet

# Remove Playwright
dotnet remove package Microsoft.Playwright

# Remove the downloaded browser binaries
# Delete the .playwright folder in your project (and any cached binaries
# under your user profile, e.g. %USERPROFILE%\.cache\ms-playwright on Windows)

# Add IronPDF
dotnet add package IronPdf
SHELL

Aucun playwright install n'est requis avec IronPDF - le moteur de rendu est intégré automatiquement.

Configuration de la licence

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Référence API complète

Modifications de l'espace de nommage

// Before: Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;

Mappages de l'API de base

API PlaywrightAPI IronPDF
Playwright.CreateAsync()new ChromePdfRenderer()
playwright.Chromium.LaunchAsync()Pas nécessaire
browser.NewPageAsync()Pas nécessaire
page.GotoAsync(url)renderer.RenderUrlAsPdf(url)
page.SetContentAsync(html) + page.PdfAsync()renderer.RenderHtmlAsPdf(html)
page.CloseAsync()Pas nécessaire
browser.CloseAsync()Pas nécessaire
PagePdfOptions.FormatRenderingOptions.PaperSize
PagePdfOptions.MarginRenderingOptions.MarginTop/Bottom/Left/Right
PagePdfOptions.DisplayHeaderFooterTextFooter
PagePdfOptions.HeaderTemplateRenderingOptions.HtmlHeader
PagePdfOptions.FooterTemplateRenderingOptions.HtmlFooter
<span class='pageNumber'>{page}

Exemples de migration de code

Exemple 1 : Conversion d'une chaîne HTML en fichier PDF

Avant (Dramaturge):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        
        string html = "<h1>Hello World</h1><p>This is a test PDF.</p>";
        await page.SetContentAsync(html);
        await page.PdfAsync(new PagePdfOptions { Path = "output.pdf" });
        
        await browser.CloseAsync();
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        
        string html = "<h1>Hello World</h1><p>This is a test PDF.</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

Cet exemple illustre la différence architecturale fondamentale. Auteurnécessite cinq opérations asynchrones : Playwright.CreateAsync(), Chromium.LaunchAsync(), NewPageAsync(), SetContentAsync(), et PdfAsync(), plus le nettoyage explicite du navigateur avec CloseAsync().

IronPDF élimine toute cette complexité : créez un ChromePdfRenderer, appelez RenderHtmlAsPdf(), et SaveAs(). Pas de modèles asynchrones, pas de cycle de vie du navigateur, pas de code de nettoyage. L'approche d'IronPDF offre une syntaxe plus propre et une meilleure intégration avec les applications .NET modernes. Consultez la documentation HTML vers PDF pour des exemples complets.

Exemple 2 : Conversion d'une URL en PDF

Avant (Dramaturge):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        
        await page.GotoAsync("https://www.example.com");
        await page.PdfAsync(new PagePdfOptions 
        { 
            Path = "webpage.pdf",
            Format = "A4"
        });
        
        await browser.CloseAsync();
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        
        var pdf = renderer.RenderUrlAsPdf("https://www.example.com");
        pdf.SaveAs("webpage.pdf");
    }
}

Playwright utilise GotoAsync() pour naviguer vers une URL suivi par PdfAsync().IronPDF fournit une méthode RenderUrlAsPdf() unique qui gère la navigation et la génération de PDF en un seul appel. Notez que Auteurnécessite de spécifier Format dans PagePdfOptions, tandis qu'IronPDF utilise RenderingOptions.PaperSize pour la configuration de la taille du papier. Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : Taille de page personnalisée avec marges

Avant (Dramaturge):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var playwright = await Playwright.CreateAsync();
        await using var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        await page.SetContentAsync("<h1>Custom PDF</h1><p>Letter size with margins</p>");
        await page.PdfAsync(new PagePdfOptions 
        { 
            Path = "custom.pdf",
            Format = "Letter",
            Margin = new Margin { Top = "1in", Bottom = "1in", Left = "0.5in", Right = "0.5in" }
        });
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.Letter;
        renderer.RenderingOptions.MarginTop = 25;
        renderer.RenderingOptions.MarginBottom = 25;
        renderer.RenderingOptions.MarginLeft = 12;
        renderer.RenderingOptions.MarginRight = 12;
        var pdf = renderer.RenderHtmlAsPdf("<h1>Custom PDF</h1><p>Letter size with margins</p>");
        pdf.SaveAs("custom.pdf");
    }
}

Playwright utilise des valeurs de marge basées sur des chaînes ("1in", "0.5in") tandis qu'IronPDF utilise des valeurs numériques en millimètres. La conversion est : 1 pouce = 25,4 mm, donc "1in" devient 25 et "0.5in" devient environ 12. Le Format = "Letter" de Auteurcorrespond à PaperSize = PdfPaperSize.Letter d'IronPDF.

Exemple 4 : En-têtes, pieds de page et paramètres personnalisés

Avant (Dramaturge):

// NuGet: Install-Package Microsoft.Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

class Program
{
    static async Task Main(string[] args)
    {
        var playwright = await Playwright.CreateAsync();
        var browser = await playwright.Chromium.LaunchAsync();
        var page = await browser.NewPageAsync();
        
        string html = "<h1>Custom PDF</h1><p>With margins and headers.</p>";
        await page.SetContentAsync(html);
        
        await page.PdfAsync(new PagePdfOptions
        {
            Path = "custom.pdf",
            Format = "A4",
            Margin = new Margin { Top = "1cm", Bottom = "1cm", Left = "1cm", Right = "1cm" },
            DisplayHeaderFooter = true,
            HeaderTemplate = "<div style='font-size:10px; text-align:center;'>Header</div>",
            FooterTemplate = "<div style='font-size:10px; text-align:center;'>Page <span class='pageNumber'></span></div>"
        });
        
        await browser.CloseAsync();
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main(string[] args)
    {
        var renderer = new ChromePdfRenderer();
        
        renderer.RenderingOptions.MarginTop = 10;
        renderer.RenderingOptions.MarginBottom = 10;
        renderer.RenderingOptions.MarginLeft = 10;
        renderer.RenderingOptions.MarginRight = 10;
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.TextHeader.CenterText = "Header";
        renderer.RenderingOptions.TextFooter.CenterText = "Page {page}";
        
        string html = "<h1>Custom PDF</h1><p>With margins and headers.</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom.pdf");
    }
}

Cet exemple illustre la différence de syntaxe entre les espaces réservés de l'en-tête et du pied de page. Auteurutilise des espaces réservés basés sur des classes HTML (<span class='pageNumber'></span>), tandis qu'IronPDF utilise des espaces réservés entre accolades ({page}). Notez que Auteurnécessite DisplayHeaderFooter = true pour activer les en-têtes/pieds de page, tandis qu'IronPDF les active automatiquement lorsque vous définissez le contenu des en-têtes/pieds de page.


Notes de migration essentielles

Conversion asynchrone vers synchrone

Playwright nécessite l'utilisation d'async/await tout au long du processus ;IronPDF prend en charge les opérations synchrones :

// Playwright: Async required
public async Task<byte[]> GeneratePdfAsync(string html)
{
    using var playwright = await Playwright.CreateAsync();
    await using var browser = await playwright.Chromium.LaunchAsync();
    var page = await browser.NewPageAsync();
    await page.SetContentAsync(html);
    return await page.PdfAsync();
}

// IronPDF: Sync is simpler
public byte[] GeneratePdf(string html)
{
    var renderer = new ChromePdfRenderer();
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}

Conversion de l'unité de marge

Playwright utilise des unités de chaîne de caractères ;IronPDF utilise des millimètres numériques :

AuteurIronPDF(mm)
"1in"25
"0.5in"12
"1cm"10

Conversion de l'en-tête et du pied de page

Cours de dramaturgieIronPDF Placeholder
<span class='pageNumber'>{page}
<span class='totalPages'>{total-pages}
<span class='date'>{date}
<span class='title'>{html-title}

Élimination du cycle de vie du navigateur

Supprimez tout le code de gestion du navigateur :

// Playwright: Explicit cleanup required
await page.CloseAsync();
await browser.CloseAsync();
playwright.Dispose();

// IronPDF: No disposal needed - just use the renderer
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");

Nouvelles capacités après la migration

Après avoir migré vers IronPDF, vous bénéficiez de fonctionnalités que Auteurne peut pas vous offrir :

Fusion de fichiers PDF

var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

Marques de fond

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");

Protection par mot de passe

pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "readonly";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;

Signatures numériques

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);

Conformité PDF/A

pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b);

Liste de contrôle de la migration

Pré-migration

  • Identifier tous les codes de génération de PDF Playwright
  • Valeurs des marges du document (convertir les pouces/cm en millimètres)
  • Notez la syntaxe des espaces réservés d'en-tête/pied de page pour la conversion
  • Obtenez votre clé de licence IronPDF sur IronPDF

Modifications du paquet

  • Supprimer le package NuGet Microsoft.Playwright
  • Supprimer le dossier .playwright (et tous les fichiers binaires Auteurmis en cache sous votre profil utilisateur)
  • Installer le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • Mettre à jour les importations d'espace de noms
  • Remplacer le cycle de vie asynchrone du navigateur par ChromePdfRenderer
  • Convertir page.SetContentAsync() + page.PdfAsync() en RenderHtmlAsPdf()
  • Convertir page.GotoAsync() + page.PdfAsync() en RenderUrlAsPdf()
  • Convertir les chaînes de marge en valeurs en millimètres
  • Convertir la syntaxe des espaces réservés d'en-tête/de pied de page
  • Supprimer tout le code de suppression du navigateur/de la page
  • Ajouter l'initialisation de la licence au démarrage de l'application

Après la migration

  • Comparaison visuelle des fichiers PDF générés
  • Vérifier l'affichage de l'en-tête et du pied de page avec les numéros de page
  • Vérifier la précision des marges et du format de page
  • Ajouter de nouvelles fonctionnalités (sécurité, filigranes, fusion) selon les besoins

Veuillez noter: Playwright est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à Microsoft, ni approuvé par elle, ni sponsorisé par elle. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.
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 et créer des manuels bien structurés et visuellement attrayants.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise