IRONSOFTWAREHOME
VIDÉOS

Comment expurger du texte et des régions dans un PDF à l'aide de C#

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

Migrer de PeachPDFvers IronPDF permet d'accéder à une génération de PDF de niveau entreprise avec des fonctionnalités complètes, un développement actif et un support professionnel. Ce guide offre un chemin de migration étape par étape qui vous emmène du flux de travail HTML-vers-PDF asynchrone pré-1.0 de PeachPDFà une solution PDF plus complète avec rendu Chromium, paramètres de sécurité, et API de manipulation de documents.

Pourquoi migrer de PeachPDFà IronPDF

Comprendre PeachPDF

PeachPDF est un outil relativement nouveau dans l'écosystème .NET, conçu pour les développeurs qui ont besoin de convertir du HTML en PDF. En tant que bibliothèque, PeachPDFpromet une implémentation .NET pure, se distinguant par le fait qu'elle ne dépend pas de processus externes, ce qui garantit qu'elle peut être intégrée de manière transparente sur toutes les plateformes où .NET est pris en charge. Cette caractéristique positionne PeachPDFcomme un choix attrayant pour les projets à la recherche d'une solution de bibliothèque gérée et légère.

Malgré son potentiel, PeachPDFest encore en cours de développement, ce qui met en évidence à la fois des possibilités intéressantes et des limites notables. PeachPDFreste attrayant en raison de son noyau .NET pur, qui promet un déploiement simple dans divers environnements. Toutefois, cela se traduit également par une adoption limitée, avec une base d'utilisateurs plus restreinte et un soutien communautaire.

Les limites de PeachPDF

PeachPDF est une bibliothèque .NET pré-1.0 maintenue par une seule personne (dernière 0.7.26, octobre 2025) publiée sous licenceBSD-3-Clausepar jhaygood86. Il manque la maturité, les fonctionnalités et le support des solutions établies. Principales raisons de migrer :

  1. Ensemble de fonctionnalités pré-1.0 : PeachPDFn'a pas de signatures numériques intégrées, conformité PDF/A, OCR, remplissage de formulaires, ou API d'en-tête/pied de page au niveau des pages.

  2. Pas de moteur JavaScript: PeachPDFest un moteur de rendu de mise en page construit sur PeachPDF.PdfSharpCore, pas un navigateur ; les scripts et les mises en page Grid/Flexbox complexes ne s'exécutent pas.

  3. net8.0 uniquement : le package cible net8.0 ; les projets .NET Framework / .NET 6 nécessitent une mise à niveau ou choisir une autre bibliothèque.

  4. Petite communauté : un seul mainteneur GitHub, documentation limitée, exemples limités.

  5. Pas de support Entreprise : pas de support commercial ou d'options SLA.

Comparaison PeachPDFvs IronPDF

Fonctionnalité/CaractéristiquePeachPDFIronPDF
Mise en œuvrePur .NET géré (sur PeachPDF.PdfSharpCore + SixLabors)Géré avec runtime Chromium intégré
LicenceBSD-3-ClauseCommercial
Cible Frameworknet8.0 uniquement.NET Framework 4.6.2+, .NET 6/7/8
Base d'utilisateursPetit (pré-1.0, 0.7.26 publié en oct 2025)Grandes
SupportCommunauté-driven (maintenu par une personne, jhaygood86)Professionnel avec un support dédié
Rendu HTMLMoteur de mise en page HTML+CSS sur PdfSharpCoreChromium complet
Support CSSSous-ensemble HTML+CSS, polices web, @font-faceCSS3 complet
JavaScriptNon exécutéES2024 complet
Signatures numériquesNonOui
Conformité PDF/ANonOui
DocumentationLimité (un seul README)Une traduction
Statut de développementPré-1.0 (0.7.26, oct 2025)Version mature et stable

IronPDF se distingue par des fonctionnalités plus larges, prenant en charge non seulement les conversions HTML vers PDF, mais aussi l'OCR, le filigrane et d'autres fonctions avancées. Sa structure de support professionnel offre des solutions rapides aux problèmes rencontrés par les développeurs.

Pour les équipes adoptant .NET moderne,IronPDF offre des fonctionnalités complètes et une maintenance active pour soutenir la stabilité à long terme à travers les versions actuelles de .NET.


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 PeachPDF
dotnet remove package PeachPDF

# Install IronPDF
dotnet add package IronPdf
SHELL

Configuration de la licence

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

Identifier l'utilisation de PeachPDF

# Audit PeachPDFusage in codebase
grep -r "using PeachPDF" --include="*.cs" .
grep -r "PdfGenerator\|PdfGenerateConfig\|GeneratePdf" --include="*.cs" .
SHELL

Référence API complète

Modifications de l'espace de nommage

// Before: PeachPDF
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

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

Mappages de l'API de base

PeachPDFIronPDF
new PdfGenerator()new ChromePdfRenderer()
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
document.Save(stream)pdf.SaveAs(path)
document.Save(memStream) puis memStream.ToArray()pdf.BinaryData
new PdfGenerateConfig { NetworkAdapter = new HttpClientNetworkAdapter(...) }renderer.RenderUrlAsPdf(url)
config.PageSize, config.PageOrientationrenderer.RenderingOptions.PaperSize, .PaperOrientation
Intégrez dans le HTML source (CSS position: fixed)RenderingOptions.HtmlHeader / HtmlFooter
Non pris en chargePdfDocument.FromFile(path)
Non pris en chargePdfDocument.Merge(pdfs) / pdf.AppendPdf(...)

Exemples de migration de code

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

Avant (PeachPDF):

using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = "<html><body><h1>Hello World</h1></body></html>";

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            PageOrientation = PageOrientation.Portrait
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("output.pdf");
        document.Save(stream);
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var html = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}

Cet exemple montre la différence fondamentale entre les deux bibliothèques. PeachPDFsépare un PdfGenerator (moteur) d'un PdfGenerateConfig (paramètres), expose une méthode async GeneratePdf, et retourne un document dont la méthode Save écrit dans un Stream.IronPDF utilise ChromePdfRenderer avec RenderHtmlAsPdf(), ce qui retourne un objet PdfDocument avec une méthode intégrée SaveAs().

Un avantage pratique de l'approche d'IronPDF : l'objet PdfDocument peut être manipulé davantage (ajout de filigranes, fusion, paramètres de sécurité) avant de sauvegarder, et SaveAs prend un chemin de fichier directement sans FileStream intermédiaire. Voir la documentation HTML vers PDF pour d'autres exemples.

Exemple 2 : Conversion d'une URL en PDF

Avant (PeachPDF):

// PeachPDFhas no ConvertUrl-style helper; URL fetching is wired via
// HttpClientNetworkAdapter and passing null HTML so the engine fetches the page.
using PeachPDF;
using PeachPDF.Network;
using PeachPDF.PdfSharpCore;
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var http = new HttpClient();

        var config = new PdfGenerateConfig
        {
            PageSize = PageSize.Letter,
            NetworkAdapter = new HttpClientNetworkAdapter(http, new Uri("https://www.example.com"))
        };

        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(null, config);

        using var stream = File.Create("webpage.pdf");
        document.Save(stream);
    }
}
C#

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

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

PeachPDF n'a pas de helper URL-vers-PDF de première classe ; vous définissez NetworkAdapter sur la config à un HttpClientNetworkAdapter et passez null HTML pour que le moteur récupère la page.IronPDF expose directement RenderUrlAsPdf(url). Parce que PeachPDFn'exécute pas JavaScript, les applications à une seule page et le contenu dynamique ne s'affichent généralement pas correctement via la route de l'adaptateur réseau ; Le moteur Chromium d'IronPDF gère le CSS et le JavaScriptmodernes. Pour en savoir plus, consultez nos tutoriels.

Exemple 3 : Ajout d'en-têtes et de pieds de page

Avant (PeachPDF):

// PeachPDFv0.7.x has no header/footer API. The closest approach is
// to embed the header/footer markup directly inside the source HTML
// using CSS positioning.
using PeachPDF;
using PeachPDF.PdfSharpCore;
using System.IO;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var html = @"
            <html><head><style>
              .header { position: fixed; top: 0; left: 0; right: 0; text-align:center; }
              .footer { position: fixed; bottom: 0; left: 0; right: 0; text-align:center; }
            </style></head>
            <body>
              <div class='header'>My Header</div>
              <h1>Document Content</h1>
              <div class='footer'>Footer text</div>
            </body></html>";

        var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
        var generator = new PdfGenerator();
        var document = await generator.GeneratePdf(html, config);

        using var stream = File.Create("document.pdf");
        document.Save(stream);
    }
}
C#

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>My Header</div>" };
        renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter() { HtmlFragment = "<div style='text-align:center'>Page {page}</div>" };
        var html = "<html><body><h1>Document Content</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("document.pdf");
    }
}

Cet exemple illustre une différence architecturale essentielle. PeachPDFn'expose pas d'API pour les en-têtes/pieds de page sur PdfGenerator ou PdfGenerateConfig, donc la mise en forme de la page doit être dans le HTML source en utilisant le positionnement CSS.IronPDF utilise les objets HtmlHeaderFooter assignés à RenderingOptions.HtmlHeader et RenderingOptions.HtmlFooter, séparant la mise en forme de la page du contenu du document.

L'approche d'IronPDF expose également des propriétés comme MaxHeight pour contrôler la taille des en-têtes/pieds de page, et prend en charge les espaces réservés {page} et {total-pages} pour la numérotation des pages.

Notez l'espace de noms supplémentaire requis pour IronPDF: using IronPdf.Rendering; est nécessaire pour la classe HtmlHeaderFooter.


Notes de migration essentielles

Changement de classe de générateur/rendu

PeachPDF utilise une paire PdfGenerator + PdfGenerateConfig ;IronPDF utilise un seul ChromePdfRenderer :

// PeachPDF
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();

// IronPDF
var renderer = new ChromePdfRenderer();

Async vs Sync, et Type de retour

La GeneratePdf de PeachPDFest uniquement asynchrone et retourne un document dont la méthode Save prend un Stream. La RenderHtmlAsPdf d'IronPDF est synchrone (une variante asynchrone RenderHtmlAsPdfAsync est également disponible) et retourne un PdfDocument :

// PeachPDF: async, save to a Stream
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create("output.pdf");
document.Save(fs);

// IronPDF: synchronous PdfDocument object
PdfDocument pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Or get bytes: byte[] bytes = pdf.BinaryData;

Modification de la propriété de l'en-tête/du pied de page

// PeachPDF: no header/footer API -- embed in source HTML
// (e.g. via CSS position:fixed)

// IronPDF: HtmlHeaderFooter objects
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Header</div>"
};
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter()
{
    HtmlFragment = "<div>Footer</div>"
};

Modification des noms de méthode

PeachPDFIronPDF
await generator.GeneratePdf(html, config)renderer.RenderHtmlAsPdf(html)
NetworkAdapter = new HttpClientNetworkAdapter(...) + GeneratePdf(null, config)renderer.RenderUrlAsPdf(url)
document.Save(stream)pdf.SaveAs(path)

Nouvelles capacités après la migration

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

Fusion de fichiers PDF

var pdf1 = PdfDocument.FromFile("doc1.pdf");
var pdf2 = PdfDocument.FromFile("doc2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
C#

Les filigranes avec HTML

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark("<div style='color: red; font-size: 48pt;'>DRAFT</div>");
pdf.SaveAs("watermarked.pdf");

Protection par mot de passe

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Confidential</h1>");

pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user123";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;

pdf.SaveAs("protected.pdf");

Signatures numériques

using IronPdf.Signing;

var pdf = PdfDocument.FromFile("document.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningReason = "Document Approval",
    SigningLocation = "New York"
};
pdf.Sign(signature);
pdf.SaveAs("signed.pdf");

Opérations asynchrones

var renderer = new ChromePdfRenderer();
var pdf = await renderer.RenderHtmlAsPdfAsync("<h1>Async PDF</h1>");
pdf.SaveAs("async_output.pdf");

Résumé de la comparaison des fonctionnalités

FonctionPeachPDFIronPDF
HTML vers PDFMise en page basée sur PdfSharpCoreChromium complet
URL vers PDFVia HttpClientNetworkAdapter (pas de JS)Oui
Grille CSS/FlexboxPartiel / non garantiOui
JavaScriptNon exécutéES2024 complet
Fusionner des PDFNon (HTML->PDF seulement)Oui
Diviser les PDFNonOui
FiligranesManuel via HTMLHTML complet
En-têtes/Pieds de pageManuel via HTML/CSSHTML complet
Signatures numériquesNonOui
PDF/ANonOui
Remplissage de formulairesNonOui
Extraction de texteNonOui
Extraction d'imagesNonOui
Prise en charge de l'asynchronismeAPI uniquement asynchroneOui
Multiplateformenet8.0 (Windows / Linux / macOS)Oui

Problèmes de migration courants

Enjeu 1 : Modèle d'API différent

Problème : PeachPDFsépare PdfGenerator (moteur) de PdfGenerateConfig (paramètres) et est asynchrone ;IronPDF utilise un ChromePdfRenderer qui retourne un PdfDocument de manière synchrone.

Solution :

// PeachPDFpattern (async, stream-out)
var config = new PdfGenerateConfig { PageSize = PageSize.Letter };
var generator = new PdfGenerator();
var document = await generator.GeneratePdf(html, config);
using var fs = File.Create(path);
document.Save(fs);

//IronPDF pattern
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs(path);
C#

Problème 2 : Enregistrer cible un flux, pas un chemin

Problème : La document.Save(stream) de PeachPDFne prend qu'un Stream ; La pdf.SaveAs(path) d'IronPDF prend une chaîne de caractères pour le chemin.

Solution : Utilisez pdf.SaveAs("file.pdf") directement dans IronPDF au lieu d'ouvrir un FileStream.

Problème 3 : Pas d'opérations sur les PDF existants

Problème : PeachPDFest uniquement HTML-vers-PDF ; il ne peut pas charger, fusionner, diviser ou modifier des PDF existants.

Solution : Remplacez ces opérations par les PdfDocument.FromFile, PdfDocument.Merge, et pdf.AppendPdf d'IronPDF une fois migrées.


Liste de contrôle de la migration

Pré-migration

  • Auditer l'utilisation de PeachPDFdans le code source
  • Documenter les configurations personnalisées
  • Notez toutes les implémentations d'en-tête/pied de page
  • Obtenez votre clé de licence IronPDF sur IronPDF
  • Commencez par tester avec une licence d'essai IronPDF.

Modifications du paquet

  • Supprimez le package NuGet PeachPDF
  • Installez le package NuGet IronPdf : dotnet add package IronPdf

Modifications du code

  • Mettez à jour les imports de l'espace de noms (using PeachPDF;using IronPdf;)
  • Ajoutez using IronPdf.Rendering; pour la fonctionnalité d'en-tête/pied de page
  • Remplacez PdfGenerator + PdfGenerateConfig par ChromePdfRenderer
  • Remplacez await generator.GeneratePdf(html, config) par renderer.RenderHtmlAsPdf(html) (ou RenderHtmlAsPdfAsync pour rester asynchrone)
  • Remplacez HttpClientNetworkAdapter + GeneratePdf(null, config) par renderer.RenderUrlAsPdf(url)
  • Remplacez document.Save(stream) par pdf.SaveAs(path)
  • Remplacez les en-têtes/pieds de page intégrés au HTML par des objets HtmlFooter
  • Ajouter l'initialisation de la licence au démarrage de l'application

Après la migration

  • Tester la qualité du rendu HTML
  • Vérifier que la sortie PDF correspond aux attentes
  • Tester l'affichage de l'en-tête/du pied de page avec les numéros de page
  • Ajouter de nouvelles fonctionnalités (sécurité, filigranes, fusion) selon les besoins

Veuillez noter: PeachPDF est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à, approuvé par, ou sponsorisé par PeachPDF. 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