Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de Playwright à IronPDF en C#

Migrer de AuteuràIronPDF: Guide complet de migration vers C

La migration de Auteurfor .NET versIronPDFtransforme votre flux de travail de génération de PDF d'un outil d'automatisation de navigateur centré sur les tests à une bibliothèque PDF conçue à cet effet. Ce guide propose un chemin de migration complet, étape par étape, qui élimine les schémas asynchrones complexes, la gestion du cycle de vie des navigateurs et les téléchargements de plus de 400 Mo dans les navigateurs, tout en offrant de meilleures performances et des fonctionnalités PDF professionnelles.

Pourquoi migrer de Auteurà IronPDF

Comprendre Auteurpour .NET

Playwright for .NET fait partie de la famille d'outils d'automatisation de navigateur de Microsoft ; l'objectif est de fournir des capacités de test complètes pour Chromium, Firefox et WebKit. La bibliothèque adopte une conception "testing-first", ce qui signifie qu'elle se concentre principalement sur les scénarios qui impliquent des tests basés sur un navigateur. Bien que Auteurprenne en charge la génération de PDF, cette fonctionnalité est davantage une fonction supplémentaire et n'offre pas la configuration granulaire que l'on trouve dans les outils PDF dédiés.

Playwright for .NET est principalement un cadre d'automatisation et de test de navigateur où la génération de PDF est une fonctionnalité secondaire. Comme PuppeteerSharp, Auteurgénère des PDF à l'aide de la fonction d'impression vers un PDF du navigateur, ce qui équivaut à appuyer sur Ctrl+P. Cela permet d'obtenir une sortie prête à l'impression et optimisée pour le papier, ce qui diffère du rendu à l'écran.

Le problème du cadre de test

Playwright a été conçu pour les tests de bout en bout, et non pour la génération de documents. Cela pose des problèmes fondamentaux lorsqu'il s'agit de l'utiliser pour des PDF :

  1. 400MB+ téléchargements du navigateur requis avant la première utilisation. La configuration par défaut de Auteurimplique le téléchargement de plusieurs navigateurs, ce qui peut être un facteur à prendre en compte dans les environnements soumis à des contraintes strictes en matière de ressources.

  2. Modèles asynchrones complexes avec contextes de navigation et gestion des pages. Les développeurs doivent se familiariser avec les contextes de navigation et la gestion des pages, ainsi qu'avec les bonnes pratiques d'élimination.

  3. Testing-first architecture non optimisée pour la génération de documents.

  4. Limitations de l'impression au format PDF équivalent à 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. Aucun support PDF/A ou PDF/UA pour la conformité à l'accessibilité. Auteurne peut pas produire de documents conformes aux normes PDF/A (archivage) ou PDF/UA (accessibilité). Pour répondre aux exigences de la section 508, des directives européennes sur l'accessibilité ou des exigences d'archivage à long terme, vous aurez besoin d'une bibliothèque PDF dédiée.

  6. Opérations gourmandes en ressources nécessitant des instances complètes de navigateur.

Comparaison des performances de Auteurvs IronPDF

Métrique Auteur IronPDF
Objectif principal Test de navigateur Génération PDF
Téléchargement du navigateur 400MB+ (Chromium, Firefox, WebKit) Moteur optimisé intégré
Premier rendu (Cold Start) 4.5 secondes 2.8 secondes
Rendu ultérieur 3.8-4.1 secondes 0.8-1,2 secondes
<Mémoire par conversion 280-420MB 80-120MB
Complexité de l'API Cycle de vie asynchrone navigateur/contexte/page Répliques synchrones
Initialisation playwright install + CreateAsync + LaunchAsync new ChromePdfRenderer()
Support PDF/A Non disponible Prise en charge complète
Accessibilité PDF/UA Non disponible Prise en charge complète
Signatures numériques Non disponible Prise en charge complète
Édition de PDF Non disponible Fusionner, diviser, tamponner, éditer
Support professionnel Communauté Commercial avec SLA

IronPDF a été conçu en mettant l'accent sur la génération de fichiers PDF. Contrairement à Playwright, centré sur les tests,IronPDFoffre une variété de fonctionnalités API centrées sur les documents. Il s'appuie sur une seule instance optimisée de Chromium, favorisant l'efficacité et offrant des opérations synchrones et asynchrones. Il en résulte un modèle mental et un flux de travail plus simples pour les développeurs qui ont besoin de fonctionnalités PDF.

Pour les équipes qui prévoient d'adopter .NET 10 et C# 14 d'ici 2025 et 2026,IronPDFfournit une solution PDF spécialement conçue qui élimine les frais généraux liés à l'automatisation des navigateurs tout en offrant de meilleures performances et des fonctionnalités de document professionnelles.


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 : Capacité à installer des paquets NuGet
  3. Licence IronPDF : Obtenez votre clé de licence sur ironpdf.com

Modifications du paquet NuGet

# Remove Playwright
dotnet remove package Microsoft.Playwright

# Remove browser binaries (reclaim ~400MB disk space)
# Delete the .playwright folder in your project or user directory

# Add IronPDF
dotnet add package IronPdf
# Remove Playwright
dotnet remove package Microsoft.Playwright

# Remove browser binaries (reclaim ~400MB disk space)
# Delete the .playwright folder in your project or user directory

# Add IronPDF
dotnet add package IronPdf
SHELL

Aucune installation du moteur de rendu n'est nécessaire avec IronPDF - le moteur de rendu est intégré automatiquement.

Configuration de la licence

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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;
// Before: Playwright
using Microsoft.Playwright;
using System.Threading.Tasks;

// After: IronPDF
using IronPdf;
using IronPdf.Rendering;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Mappages de l'API de base

API Playwright API IronPDF Notes
Playwright.CreateAsync() new ChromePdfRenderer() Pas besoin d'asynchrone
playwright.Chromium.LaunchAsync() Pas nécessaire Pas de gestion de navigateur
browser.NewPageAsync() Pas nécessaire Pas de contexte de page
page.GotoAsync(url) renderer.RenderUrlAsPdf(url) Rendu direct de l'URL
page.SetContentAsync(html) + page.PdfAsync() renderer.RenderHtmlAsPdf(html) Méthode unique
page.CloseAsync() Pas nécessaire Nettoyage automatique
browser.CloseAsync() Pas nécessaire Nettoyage automatique
PagePdfOptions.Format RenderingOptions.PaperSize Taille du papier
PagePdfOptions.Margin RenderingOptions.MarginTop/Bottom/Left/Right Marges individuelles
PagePdfOptions.DisplayHeaderFooter RenderingOptions.TextHeader/TextFooter En-têtes/pieds de page
PagePdfOptions.HeaderTemplate RenderingOptions.HtmlHeader En-têtes HTML
PagePdfOptions.FooterTemplate RenderingOptions.HtmlFooter Pieds de page HTML
<span> class="pageNumber"> {page} Espace réservé au numéro de 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();
    }
}
// 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();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Cet exemple illustre la différence architecturale fondamentale. Auteurnécessite cinq opérations asynchrones : Playwright.CreateAsync(), Chromium.LaunchAsync(), NewPageAsync(), SetContentAsync(), et PdfAsync(), plus un 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();
    }
}
// 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();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Playwright utilise GotoAsync() pour naviguer vers une URL suivie de PdfAsync().IronPDFfournit une seule méthode RenderUrlAsPdf() qui gère la navigation et la génération de PDF en un seul appel. Notez que Auteurnécessite de spécifier le Format dans PagePdfOptions, tandis qu'IronPDF utilise RenderingOptions.PaperSizepour 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" }
        });
    }
}
// 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" }
        });
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Playwright utilise des valeurs de marge basées sur des chaînes de caractères ("1in", "0,5in") tandis qu'IronPDF utilise des valeurs numériques en millimètres. La conversion est la suivante : 1 pouce = 25,4 mm, de sorte que "1in"devient 25et "0,5in" devient approximativement 12. Le Format = "Letter" de Auteurcorrespond au 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();
    }
}
// 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();
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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 caractères de remplacement basés sur les classes HTML (<span> class="pageNumber"></span>), tandis qu'IronPDF utilise des caractères de remplacement à 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 de l'en-tête/du pied de page.


Notesde migration essentielles

Conversion asynchrone vers synchrone

Playwright nécessite l'utilisation d'async/await tout au long du processus ;IronPDFprend 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;
}
// 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;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Conversion de l'unité de marge

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

Auteur IronPDF(mm)
"1in" 25
"0.5in" 12
"1cm" 10

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

Cours de dramaturgie IronPDFPlaceholder
<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");
// 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");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

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");
var pdf1 = renderer.RenderHtmlAsPdf(html1);
var pdf2 = renderer.RenderHtmlAsPdf(html2);
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Marques de fond

pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
pdf.ApplyWatermark("<h1 style='color:red; opacity:0.3;'>DRAFT</h1>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Protection par mot de passe

pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "readonly";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.OwnerPassword = "admin";
pdf.SecuritySettings.UserPassword = "readonly";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Signatures numériques

var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
var signature = new PdfSignature("certificate.pfx", "password");
pdf.Sign(signature);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Conformité PDF/A

pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b);
pdf.SaveAsPdfA("archive.pdf", PdfAVersions.PdfA3b);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Liste de contrôle de la migration

Pré-migration

  • [Identifier tout le code de génération PDF de Playwright
  • [Les valeurs des marges des documents (convertir les pouces/cm en millimètres)
  • [La traduction doit rester professionnelle et préserver l'exactitude technique tout en expliquant les caractéristiques et les avantages de ces outils de développement
  • [ ] Obtenir la clé de licenceIronPDFà partir de ironpdf.com

Modifications du paquet

  • [Supprimer le paquet Microsoft.Playwright NuGet
  • [Supprimer le dossier .playwright pour récupérer ~400MB d'espace disque
  • [Installer le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

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

Post-Migration

  • [Comparaison visuelle de la sortie PDF
  • [Vérifier le rendu des en-têtes/pieds de page avec les numéros de page
  • [Tester l'exactitude des marges et de la taille des pages
  • [Ajouter de nouvelles fonctionnalités (sécurité, filigrane, fusion) selon les besoins

Conclusion

Playwright for .NET etIronPDFfor .NET répondent tous deux à des besoins distincts au sein de l'écosystème .NET. La force de Auteurréside dans les capacités de son cadre de test, qui peuvent être complétées par sa fonction de génération de PDF si nécessaire. Cependant, si votre objectif principal est de générer des PDF efficaces et de haute qualité avec moins de frais généraux, IronPdf est un concurrent plus solide.

Les principaux changements apportés à cette migration sont les suivants :

  1. Architecture : cadre de test avec fonction PDF → bibliothèque PDF intégrée
  2. Complexité : 5+ opérations asynchrones → 3 appels synchrones
  3. Gestion des navigateurs : Cycle de vie manuel avec élimination → Traitement automatique
  4. Performances : 4,5s démarrage à froid / 3,8-4,1s rendus → 2,8s démarrage à froid / 0,8-1,2s rendus
  5. Mémoire : 280-420MBpar conversion → 80-120MBpar conversion
  6. Espace disque : 400MB+ téléchargements du navigateur → Zéro téléchargement supplémentaire
  7. Margines : Unités de chaîne de caractères ("1in") → Millimètres numériques (25)
  8. Placeholders : Classes CSS (<span> class="pageNumber">) → Accolades ({page})
  9. Nouvelles fonctionnalités : Fusion PDF, filigranes, sécurité, signatures numériques, conformité PDF/A

Considérez les exigences de votre projet et choisissez la bibliothèque qui correspond à vos priorités - que vous ayez besoin d'un cadre de test robuste capable de générer des PDF en parallèle, ou d'un outil PDF dédié qui maximise la vitesse de conversion et l'efficacité des ressources.

Explorez la documentation complète IronPDF, tutoriel, et référence API pour accélérer votre migration vers Playwright.

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