IRONSOFTWAREHOME
VIDÉOS

Comment signer des fichiers PDF en C# à l'aide d'IronPDF

Curtis Chau
Curtis Chau
Updated: 19 juillet 2026

Migrer de Nutrient (anciennement PSPDFKit) à IronPDF simplifie votre flux de travail PDF .NET en passant d'une boîte à outils large d'imagerie et de PDF à une bibliothèque axée uniquement sur les PDF. L'offre .NET côté serveur de Nutrient est GdPicture.NET — la boîte à outils acquise auprès d'ORPALIS et repositionnée sous le nom de "Nutrient .NET SDK" — qui est fournie sous forme de package NuGet GdPicture sous l'espace de nommage GdPicture14. Ce guide parcourt étape par étape le chemin de migration qui échange la boîte à outils procédurale et multi-fonctionnelle pour une bibliothèque de PDF uniquement avec une surface plus petite.

Pourquoi migrer de Nutrient à IronPDF

Le problème de la surface de la boîte à outils

Nutrient (anciennement PSPDFKit, repensé 23/10/2024) vend une famille multi-produit — Document Engine (microservice Docker), SDK Web, SDKs mobiles, et un SDK .NET côté serveur qui est GdPicture sous le capot. Pour les équipes qui ont besoin d'opérations PDF simples sans le reste de la boîte à outils, la surface se manifeste de plusieurs manières concrètes :

  1. Portée étendue de la boîte à outils : Le SDK .NET couvre les PDF, OCR, codes-barres, numérisation TWAIN, traitement d'image et conversion sur plus de 100 formats de fichiers. Utile si vous avez besoin de cette ampleur - plus de surface qu'un projet uniquement PDF n'a besoin si vous ne le faites pas.

  2. Tarification dirigée par les ventes : La page nutrient.io/sdk/pricing renvoie à un formulaire de contact au lieu de publier des tarifs par développeur, ce qui rend la comparaison des coûts plus difficile pour les petites équipes.

  3. Instabilité de marque et de package : PSPDFKit → Nutrient (23/10/2024), plus l'acquisition de GdPicture, signifie trois noms à suivre dans l'ancien code. Le SDK .NET est toujours fourni sous forme de package NuGet GdPicture, espace de nommage GdPicture14, avec des noms de classes comme GdPicturePDF et GdPictureDocumentConverter qui ne correspondent pas à la marque "Nutrient" ou "PSPDFKit".

  4. Dépendance du navigateur externe pour le HTML-vers-PDF : Le rendu HTML du SDK .NET repose sur un Chrome ou Edge installé sur le système (ou un chemin portable que vous définissez via SetWebBrowserPath).IronPDF expédie son propre Chromium intégré.

  5. API PDF procédurale : Les filigranes composent SetFillAlpha, DrawTextBox, et des marqueurs de calque OCG ; les en-têtes et pieds de page sont dessinés par page dans une boucle. Composer des opérations PDF communes à partir de primitives signifie plus de code par tâche.

Comparaison Nutrient .NET SDK vs IronPDF

AspectSDK .NET de Nutrient (GdPicture)IronPDF
PortéePDF + OCR + code-barres + numérisation + imagerieBibliothèque PDF
TarifsDirigé par les ventes (contact pour devis)Transparent, publié
Paquet NuGetGdPictureIronPdf
Namespace racineGdPicture14IronPdf
style APIPrincipalement des appels de dessin synchrones, procédurauxSynchronisation avec option asynchrone, fluide
Rendu HTMLNécessite Chrome/Edge du systèmeChromium intégré
Indexation de pagesbasé sur 1basé sur 0
Utilisateurs ciblesÉquipes ayant besoin d'imagerie + numérisation + PDF dans une seule boîte à outilsÉquipes ayant besoin uniquement de PDF

Pour les équipes sur .NET moderne qui n'ont besoin que de PDF,IronPDF offre une base plus petite et centrée sur le PDF qui s'intègre proprement sans les couches supplémentaires d'imagerie/numérisation/OCR.


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 the SDK .NET de Nutrient (GdPicture) and any legacy PSPDFKit-branded packages
dotnet remove package GdPicture
dotnet remove package GdPicture.WPF
dotnet remove package GdPicture.WinForms
dotnet remove package PSPDFKit.NET

# Install IronPDF
dotnet add package IronPdf
SHELL

Le SDK Nutrient .NET actuel est distribué sous l'ID NuGet GdPicture (dernière version 14.x, propriétaire ORPALIS — une filiale de Nutrient). L'ancien package marqué PSPDFKit PSPDFKit.NET est progressivement abandonné ; retirez-le s'il est présent.

Configuration de la licence

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";

Identifiez l'utilisation du SDK .NET Nutrient

# Find GdPicture / Nutrient / PSPDFKit usage
grep -rE "GdPicture14|GdPicturePDF|GdPictureDocumentConverter|PSPDFKit|Nutrient" --include="*.cs" .
SHELL

Référence API complète

Mappages d'initialisation

SDK .NET de Nutrient (GdPicture)IronPDF
new GdPicturePDF()new PdfDocument(...) / PdfDocument.FromFile(...)
new GdPictureDocumentConverter()new ChromePdfRenderer()
pdf.Dispose() (IDisposable)pdf.Dispose() (IDisposable)

Mappages de chargement de documents

SDK .NET de Nutrient (GdPicture)IronPDF
pdf.LoadFromFile(path)PdfDocument.FromFile(path)
pdf.LoadFromStream(stream)PdfDocument.FromStream(stream)
pdf.LoadFromByteArray(bytes)new PdfDocument(bytes) / PdfDocument.FromBinaryData(bytes)

Mappages de génération de PDF

SDK .NET de Nutrient (GdPicture)IronPDF
Chaîne HTML : écrire dans un fichier temporaire, puis converter.LoadFromFile(path, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out)renderer.RenderHtmlAsPdf(html)
converter.LoadFromHttp(url) + SaveAsPDF(out)renderer.RenderUrlAsPdf(url)
converter.LoadFromFile(htmlPath, DocumentFormat.DocumentFormatHTML) + SaveAsPDF(out)renderer.RenderHtmlFileAsPdf(path)

Mise en correspondance des opérations sur les documents

SDK .NET de Nutrient (GdPicture)IronPDF
converter.CombineToPDF(paths, out, PdfConformance.PDF)PdfDocument.Merge(pdfs)
pdf.GetPageCount()pdf.PageCount
pdf.SaveToFile(path)pdf.SaveAs(path)
pdf.SaveToByteArray(out bytes)pdf.BinaryData

Correspondances des filigranes

SDK .NET de Nutrient (GdPicture)IronPDF
pdf.SetFillAlpha(...) + pdf.DrawTextBox(...) par pagepdf.ApplyWatermark(html, rotation, vAlign, hAlign)
pdf.AddStandardFont(...) + appels de dessinHTML/CSS dans une chaîne de filigrane
SetFillAlpha(128) (échelle de 0 à 255 octets)Filigrane Opacity 0–100 (int) ou CSS opacity
pdf.SetTextSize(48)CSS font-size: 48px

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (SDK .NET Nutrient / GdPicture) :

// NuGet: Install-Package GdPicture
using GdPicture14;
using System.IO;

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

        // GdPicture's HTML loader is file-based, so stage the string to disk first.
        File.WriteAllText("input.html", htmlContent);

        using var converter = new GdPictureDocumentConverter();
        converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
        converter.SaveAsPDF("output.pdf");
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}

L'approche GdPicture nécessite quelques étapes supplémentaires : le chargeur HTML est basé sur des fichiers/URLs, donc une chaîne HTML en mémoire doit d'abord être placée sur le disque, puis converter.LoadFromFile(...) est appelé avec DocumentFormat.DocumentFormatHTML, suivi par SaveAsPDF. Le rendu HTML repose sur un Chrome ou Edge installé sur le système (ou un chemin portable fourni via SetWebBrowserPath).

IronPDF accepte directement la chaîne HTML. Créez un ChromePdfRenderer, appelez RenderHtmlAsPdf(), et enregistrez avec SaveAs(). Pas de fichier temporaire, pas de dépendance sur un navigateur hôte —IronPDF est livré avec son propre Chromium intégré. Voir la documentation HTML vers PDF pour des options de rendu supplémentaires.

Exemple 2 : Fusionner plusieurs PDF

Avant (SDK .NET Nutrient / GdPicture) :

// NuGet: Install-Package GdPicture
using GdPicture14;
using System.Collections.Generic;

class Program
{
    static void Main()
    {
        IEnumerable<string> sourceFiles = new List<string>
        {
            "document1.pdf",
            "document2.pdf"
        };

        using var converter = new GdPictureDocumentConverter();
        converter.CombineToPDF(sourceFiles, "merged.pdf", PdfConformance.PDF);
    }
}

Après (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var pdf1 = PdfDocument.FromFile("document1.pdf");
        var pdf2 = PdfDocument.FromFile("document2.pdf");

        var merged = PdfDocument.Merge(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}

La fusion GdPicture prend un IEnumerable<string> basé sur un chemin via converter.CombineToPDF, avec une valeur PdfConformance sélectionnant le niveau de conformité de sortie.

IronPDF fonctionne au niveau du document : chargez chaque PDF avec PdfDocument.FromFile(), fusionnez avec la méthode statique PdfDocument.Merge(), et enregistrez. Les documents peuvent être passés directement ou sous forme de collection énumérable. En savoir plus sur la fusion et la division de PDF.

Exemple 3 : Ajout de filigranes

Avant (SDK .NET Nutrient / GdPicture) :

// NuGet: Install-Package GdPicture
using GdPicture14;

class Program
{
    static void Main()
    {
        using var pdf = new GdPicturePDF();
        pdf.LoadFromFile("document.pdf");
        pdf.SetMeasurementUnit(PdfMeasurementUnit.PdfMeasurementUnitPoint);

        var font = pdf.AddStandardFont(PdfStandardFont.PdfStandardFontHelveticaBold);
        int pageCount = pdf.GetPageCount();

        for (int i = 1; i <= pageCount; i++)
        {
            pdf.SelectPage(i);
            pdf.SetFillAlpha(128);  // ~50% (0..255)
            pdf.SetTextSize(48);
            pdf.SetOriginRotationInDegrees(45);
            pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
                PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
                PdfVerticalAlignment.PdfVerticalAlignmentMiddle);
        }

        pdf.SaveToFile("watermarked.pdf");
    }
}

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");

        pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>CONFIDENTIAL</h1>",
            45,
            VerticalAlignment.Middle,
            HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}

Cet exemple met en évidence une différence architecturale fondamentale. GdPicture utilise une approche de dessin procédurale : ajoutez une police standard, puis parcourez (basé sur l'index 1) chaque page en appelant SelectPage, SetFillAlpha, SetTextSize, SetOriginRotationInDegrees, et DrawTextBox. L'alpha est sur une échelle de 0 à 255 octets, la rotation est définie comme une propriété d'état graphique et le positionnement est géré par des coordonnées explicites.

IronPDF utilise une approche basée sur HTML : la méthode ApplyWatermark() accepte une chaîne HTML avec un style CSS et l'applique à toutes les pages en un seul appel. Vous contrôlez l'apparence à l'aide de propriétés CSS familières (color, opacity, font-size) plutôt que des appels graphiques primitifs. Cette approche prend également en charge un contenu plus riche — dégradés, images et mises en page plus complexes — dans la même chaîne. Consultez la documentation sur les filigranes pour des exemples avancés.


Notes de migration essentielles

Surface d'entrée HTML

Le chargeur HTML de GdPicture est basé sur fichier/URL;IronPDF accepte directement les chaînes HTML :

// Nutrient .NET SDK (string -> file -> PDF):
File.WriteAllText("input.html", html);
converter.LoadFromFile("input.html", DocumentFormat.DocumentFormatHTML);
converter.SaveAsPDF("output.pdf");

//IronPDF(string -> PDF):
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
C#

Si vous avez besoin d'opérations asynchrones,IronPDF propose des variantes asynchrones comme RenderHtmlAsPdfAsync().

Dépendance sur le navigateur externe

Le moteur de rendu HTML de GdPicture repose sur une installation de Chrome ou Edge sur le système (ou sur un chemin portable que vous définissez via SetWebBrowserPath).IronPDF est livré avec son propre Chromium intégré :

// Nutrient .NET SDK: optionally point to a portable Chrome
converter.SetWebBrowserPath(@"C:\Tools\chrome\chrome.exe");

// IronPDF: nothing to configure
var pdf = renderer.RenderHtmlAsPdf(html);

Modification du modèle de configuration

GdPicture expose les paramètres de mise en page comme des valeurs individuelles sur le convertisseur (largeur/hauteur de la page HTML en pouces, marges individuelles).IronPDF les regroupe dans un sac RenderingOptions avec des tailles de papier nommées :

// Nutrient .NET SDK: properties on the converter (inches)
using var converter = new GdPictureDocumentConverter();
converter.HtmlPageWidth  = 8.27f;   // A4 width  (inches)
converter.HtmlPageHeight = 11.69f;  // A4 height (inches)
converter.HtmlMarginTop = 0.78f;
converter.HtmlMarginBottom = 0.78f;
converter.HtmlMarginLeft = 0.78f;
converter.HtmlMarginRight = 0.78f;

// IronPDF: properties on RenderingOptions (millimetres)
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);

Marquages procéduraux à marquages HTML

Remplacez les appels de dessin primitifs par une seule chaîne HTML/CSS :

// Nutrient .NET SDK: SetFillAlpha + SetTextSize + DrawTextBox in a per-page loop
pdf.SetFillAlpha(128);
pdf.SetTextSize(48);
pdf.SetOriginRotationInDegrees(45);
pdf.DrawTextBox(font, 100, 300, 500, 400, "CONFIDENTIAL",
    PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
    PdfVerticalAlignment.PdfVerticalAlignmentMiddle);

// IronPDF: one HTML/CSS string
pdf.ApplyWatermark("<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>",
    45, VerticalAlignment.Middle, HorizontalAlignment.Center);

Gestion des numéros de page

GdPicture n'a pas de modèle de pré-en-tête/pied de page de première classe — les numéros de page sont dessinés par page dans une boucle.IronPDF expose des espaces réservés intégrés {page} / {total-pages} :

// Nutrient .NET SDK: per-page DrawText loop (1-based)
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
    pdf.SelectPage(i);
    pdf.DrawText(font, x, y, $"Page {i} of {pdf.GetPageCount()}");
}

// IronPDF: built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "Page {page} of {total-pages}"
};

Indexation des pages

GdPicture est basé sur l'index 1 (SelectPage(1) est la première page).IronPDFpdf.Pages et pdf.RemovePages(int) sont basés sur l'index 0. L'erreur d'une unité est le bogue de portage le plus courant :

// Nutrient .NET SDK (1-based):
pdf.SelectPage(1);
pdf.DeletePage();

//IronPDF(0-based):
pdf.RemovePages(0);
C#

Dépannage

Problème 1 : GdPictureDocumentConverter introuvable

Problème : La classe GdPictureDocumentConverter n'existe pas dans IronPDF.

Solution: Use ChromePdfRenderer for HTML/URL → PDF:

// Nutrient .NET SDK
using var converter = new GdPictureDocumentConverter();

// IronPDF
var renderer = new ChromePdfRenderer();

Problème 2 : GdPicturePDF introuvable

Problème : La classe GdPicturePDF n'existe pas dans IronPDF.

Solution: Use PdfDocument:

// Nutrient .NET SDK
using var pdf = new GdPicturePDF();
pdf.LoadFromFile("input.pdf");

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");

Problème 3 : DrawTextBox / SetFillAlpha introuvable

Problème : Les appels de dessins primitifs n'existent pas dans IronPDF.

Solution : Utiliser des filigranes HTML :

// Nutrient .NET SDK
pdf.SetFillAlpha(128);
pdf.DrawTextBox(font, 100, 300, 500, 400, "DRAFT",
    PdfHorizontalAlignment.PdfHorizontalAlignmentCenter,
    PdfVerticalAlignment.PdfVerticalAlignmentMiddle);

// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>",
    45, VerticalAlignment.Middle, HorizontalAlignment.Center);

Problème 4 : CombineToPDF introuvable

Problème : Une méthode de combinaison basée sur le chemin n'existe pas.

Solution : Chargez chaque PDF comme un PdfDocument et utilisez PdfDocument.Merge() statique :

// Nutrient .NET SDK
converter.CombineToPDF(paths, "merged.pdf", PdfConformance.PDF);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");

Problème 5 : Index de page décalé d'une unité

Problème : GdPicture utilise des indices de page indexés à partir de 1 ;IronPDF utilise des indices indexés à partir de 0. Les ports directs de SelectPage(1) à pdf.Pages[1] sautent la première page.

Solution : Soustrayez un lors du portage des indices de page :

// Nutrient .NET SDK (first page)
pdf.SelectPage(1);

//IronPDF(first page)
var firstPage = pdf.Pages[0];
C#

Liste de contrôle de la migration

Pré-migration

  • Inventoriez toutes les utilisations de GdPicture / PSPDFKit / Nutrient dans le codebase
  • Notez les indexations de pages de 1 à n contre 0 à n dans le code GdPicture existant
  • Listez la configuration définie sur GdPictureDocumentConverter (dimensions de la page HTML, marges)
  • Identifiez le dessin procédural pour les filigranes et les en-têtes (SetFillAlpha, DrawTextBox)
  • Révisez le code des champs de formulaire qui utilise l'accès basé sur l'index (GetFormFieldName(i))
  • Obtenir une clé de licence IronPDF

Modifications du paquet

  • Supprimez le package NuGet GdPicture (et GdPicture.WPF / GdPicture.WinForms si présent)
  • Supprimez le package obsolète PSPDFKit.NET si présent
  • Installez le package NuGet IronPdf : dotnet add package IronPdf
  • Mettez à jour les imports d'espace de noms (using GdPicture14;using IronPdf;)

Modifications du code

  • Ajouter la configuration de la clé de licence au démarrage
  • Remplacez new GdPictureDocumentConverter() par new ChromePdfRenderer() pour le HTML/URL → PDF
  • Remplacez new GdPicturePDF() + LoadFromFile par PdfDocument.FromFile()
  • Remplacez converter.CombineToPDF(paths, ...) par PdfDocument.Merge()
  • Convertissez les appels de dessin procédural de filigrane en pdf.ApplyWatermark(html, ...)
  • Remplacez les propriétés du convertisseur par RenderingOptions (tailles de papier nommées, marges en mm)
  • Mettez à jour les en-têtes/pieds de page à HtmlHeaderFooter avec les jetons {page} / {total-pages}
  • Convertissez les indices de page de 1 à n en 0 à n partout

Après la migration

  • Retirez la dépendance de Chrome/Edge du système des images de déploiement si elle était là uniquement pour GdPicture
  • Effectuer des tests de régression comparant les résultats PDF
  • Vérifier que les en-têtes et pieds de page correspondent aux numéros de page
  • Test du rendu du filigrane
  • Mise à jour du pipeline CI/CD

  • Inventairez toutes les utilisations de Nutrient / PSPDFKit / GdPicture et ORPALIS dans le code, pour référence Ce site n'est pas affilié, approuvé, ou sponsorisé par Nutrient, PSPDFKit, GdPicture ou ORPALIS. 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