Passer au contenu du pied de page
GUIDES DE MIGRATION

Comment migrer de GdPicture.NET SDK vers IronPDF en C#

Migrer d'IronPDF .NET SDK àIronPDF: Guide de migration complet en C

La migration du SDK GdPicture.NET versIronPDFoffre aux développeurs .NET une approche ciblée et rationalisée de la génération de PDF. Ce guide fournit un chemin de migration complet, étape par étape, qui remplace les modèles SDK complexes d'imagerie documentaire par des API modernes, spécifiques au PDF et conçues pour le développement .NET contemporain.

Pourquoi migrer de GdPicture.NET SDKvers IronPDF

Les défis du SDK GdPicture.NET

GdPicture.NET SDK (aujourd'hui rebaptisé Nutrient) est un SDK d'imagerie documentaire complet qui présente plusieurs défis pour le développement axé sur le PDF :

  1. Overkill pour les projets PDF uniquement : GdPicture.NET SDKest une suite complète d'imagerie documentaire comprenant l'OCR, la reconnaissance de codes-barres, la numérisation et le traitement d'images. Si vous n'avez besoin que de la fonctionnalité PDF, vous payez pour des fonctions que vous n'utiliserez jamais.

  2. Licences complexes : Plusieurs niveaux de produits (GdPicture.NET 14, GdPicture.API, Ultimate, Professional) avec des combinaisons de SKU confuses et des exigences d'abonnement annuel.

  3. Tarification pour les entreprises : Le prix de la licence commence à 2 999 $ pour le plugin PDF seul, pour atteindre 10 000 $ ou plus pour l'édition Ultimate. Les licences par développeur ajoutent des frais généraux importants pour les équipes en pleine croissance.

  4. Courbe d'apprentissage abrupte : l'API est conçue autour de concepts d'imagerie documentaire, et non de modèles .NET modernes. Des méthodes telles que LicenseManager.RegisterKEY(), GdPictureStatusenum checking, et 1-indexépages se sentent datées par rapport aux conventions C# contemporaines.

  5. Status Code Pattern : Chaque opération renvoie une énumération GdPictureStatusqui doit être vérifiée - aucune exception n'est lancée en cas d'erreur, ce qui rend la gestion des erreurs verbeuse et répétitive.

  6. Gestion manuelle des ressources : Nécessite des appels explicites à Dispose() ou Release(). Le SDK ne suit pas proprement les modèles d'élimination standard de .NET.

  7. Version Lock-in : L'espace de noms GdPicture14inclut le numéro de version, ce qui fait que les mises à jour de version majeures nécessitent des changements d'espace de noms dans l'ensemble de votre base de code.

  8. Confusion de marque : Le récent changement de marque en "Nutrient" crée une fragmentation de la documentation entre gdpicture.com et nutrient.io, ce qui complique l'assistance et l'apprentissage.

Comparaison GdPicture.NET SDKvs IronPDF

Aspect GdPicture.NET SDK IronPDF
Objectif Suite d'imagerie documentaire (trop pour le PDF) Bibliothèque spécifique aux PDF
Tarifs 2 999 $ - 10 000 $ et plus pour les entreprises Compétitif, évolutif par rapport à l'entreprise
Style API Codes d'état, gestion manuelle Exceptions, IDisposable, modern .NET
Courbe d'apprentissage Steep (concepts SDK d'imagerie) Simple (familier avec HTML/CSS)
Rendu HTML Moteur interne de base Dernière version de Chromium avec CSS3/JS
Indexation des pages 1-indexé 0-indexé (standard .NET)
Sécurité des fils Synchronisation manuelle requise Sécurité des threads dès la conception
Espace de noms Version spécifique (GdPicture14) Stable (IronPdf)

Pour les équipes qui prévoient d'adopter .NET 10 et C# 14 jusqu'en 2025 et 2026,IronPDFconstitue une base à l'épreuve du temps qui s'aligne sur les modèles et conventions .NET modernes.


Évaluation de la complexité de la migration

Estimation de l'effort par fonctionnalité

Fonction Complexité de la migration Notes
HTML vers PDF Faible Mappage direct des méthodes
URLvers PDF Faible Mappage direct des méthodes
Fusionner des PDF Faible Modèles d'API similaires
Diviser les PDF Faible Modèles d'API similaires
Filigranes Faible Approche différente (basée sur HTML)
Extraction de texte Faible Propriété ou méthode
Protection par mot de passe Moyen Structure des paramètres différente
Champs de formulaire Moyen Différences entre les API
Signatures numériques Moyenne-élevée Gestion de différents certificats
OCR Haut IronOCR est un produit distinct
Reconnaissance des codes-barres N/A Non pris en charge dans IronPDF

Matrice de décision de migration

Votre situation Recommandation
Opérations au format PDF uniquement Migration - simplification et économies significatives
Utilisation intensive de l'OCR Considérer IronOCR comme un produit compagnon
Besoins en matière de BarCode/scanning Conservez GdPicture.NET SDKpour ces fonctionnalités, utilisezIronPDF.NET pour les PDF
Imagerie documentaire complète Évaluez si vous utilisez réellement toutes les fonctionnalités

Avant de commencer

Prérequis

  1. <Version .NET :IronPDFprend en charge .NET Framework 4.6.2+ et .NET Core 2.0+ / .NET 5/6/7/8/9+
  2. <Clé de licence : Obtenez votre clé de licenceIronPDFà partir de ironpdf.com
  3. Sauvegarde : Créer une branche pour le travail de migration

Identifier toutes les utilisations du SDK GdPicture.NET

# Find all GdPicture.NET SDKreferences in your codebase
grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" .

# Find all GdPicture package references
grep -r "GdPicture" --include="*.csproj" .
# Find all GdPicture.NET SDKreferences in your codebase
grep -r "GdPicture14\|GdPicturePDF\|GdPictureDocumentConverter\|GdPictureStatus\|LicenseManager\.RegisterKEY" --include="*.cs" .

# Find all GdPicture package references
grep -r "GdPicture" --include="*.csproj" .
SHELL

Modifications du paquet NuGet

# Remove GdPicture.NET SDKpackages
dotnet remove package GdPicture.NET.14
dotnet remove package GdPicture.NET.14.API
dotnet remove package GdPicture
dotnet remove package GdPicture.API

# Install IronPDF
dotnet add package IronPdf
# Remove GdPicture.NET SDKpackages
dotnet remove package GdPicture.NET.14
dotnet remove package GdPicture.NET.14.API
dotnet remove package GdPicture
dotnet remove package GdPicture.API

# Install IronPDF
dotnet add package IronPdf
SHELL

Migration rapide

Étape 1 : Mise à jour de la configuration de la licence

Avant (GdPicture.NET SDK):

// Must be called before any GdPicture.NET SDKoperations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
// Must be called before any GdPicture.NET SDKoperations
LicenseManager.RegisterKEY("YOUR-GDPICTURE-LICENSE-KEY");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
// Set once at application startup
IronPdf.License.LicenseKey = "YOUR-IRONPDF-LICENSE-KEY";

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Étape 2 : mise à jour des importations de l'espace de noms

// Before (GdPicture.NET SDK)
using GdPicture14;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (GdPicture.NET SDK)
using GdPicture14;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Étape 3 : Modèle de conversion de base

Le changement le plus important dans la migration du SDK GdPicture.NET est l'élimination du modèle de vérification d'état verbeux :

Avant (GdPicture.NET SDK):

using GdPicture14;

LicenseManager.RegisterKEY("LICENSE-KEY");

using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
    GdPictureStatus status = converter.LoadFromHTMLString("<h1>Hello World</h1>");

    if (status == GdPictureStatus.OK)
    {
        status = converter.SaveAsPDF("output.pdf");

        if (status != GdPictureStatus.OK)
        {
            Console.WriteLine($"Error: {status}");
        }
    }
    else
    {
        Console.WriteLine($"Load error: {status}");
    }
}
using GdPicture14;

LicenseManager.RegisterKEY("LICENSE-KEY");

using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
{
    GdPictureStatus status = converter.LoadFromHTMLString("<h1>Hello World</h1>");

    if (status == GdPictureStatus.OK)
    {
        status = converter.SaveAsPDF("output.pdf");

        if (status != GdPictureStatus.OK)
        {
            Console.WriteLine($"Error: {status}");
        }
    }
    else
    {
        Console.WriteLine($"Load error: {status}");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

using IronPdf;

IronPdf.License.LicenseKey = "LICENSE-KEY";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
using IronPdf;

IronPdf.License.LicenseKey = "LICENSE-KEY";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Différences Clés :

  • Pas de vérification d'état - exceptions en cas d'erreurs
  • Aucune disposition explicite n'est requise pour le moteur de rendu
  • API moderne et fluide
  • Rendu basé sur Chromium pour une meilleure prise en charge HTML/CSS

Référence API complète

Cartographie des espaces de noms

GdPicture.NET SDK IronPDF
GdPicture14 IronPDF
GdPicture14.PDF IronPDF
GdPicture14.Imaging N/A (pas nécessaire)

Mappage des classes de base

GdPicture.NET SDK IronPDF Description du projet
GdPicturePDF Document PDF Classe du document PDF principal
GdPictureDocumentConverter ChromePdfRenderer Conversion HTML/URL en PDF
LicenseManager IronPdf.License Gestion des licences
GdPictureStatus Exceptions Gestion des erreurs

Méthodes de chargement des documents

GdPicture.NET SDK IronPDF Notes
pdf.LoadFromFile(path, loadInMemory) PdfDocument.FromFile(path) Charger à partir d'un fichier
pdf.LoadFromFile(path, password, loadInMemory) PdfDocument.FromFile(path, password) Protégé par mot de passe
converter.LoadFromHTMLString(html) renderer.RenderHtmlAsPdf(html) Chaîne HTML
converter.LoadFromURL(url) renderer.RenderUrlAsPdf(url) URL

Opérations de la page

GdPicture.NET SDK IronPDF Notes
pdf.GetPageCount() pdf.PageCount Obtenir le nombre de pages
pdf.SelectPage(pageNo) pdf.Pages[index] Sélectionner une page (1-indexé vs 0-indexé)
pdf.GetPageWidth() pdf.Pages[i].Width Largeur de la page
pdf.GetPageHeight() pdf.Pages[i].Height Hauteur de la page

Opérations de fusion et de division

GdPicture.NET SDK IronPDF Notes
pdf1.MergePages(pdf2) PdfDocument.Merge(pdf1, pdf2) Fusionner des PDF
pdf.ExtractPages(start, end) pdf.CopyPages(indices) Extraire des pages

Opérations de filigrane

GdPicture.NET SDK IronPDF Notes
pdf.DrawText(...) boucle pdf.ApplyWatermark(html) Filigrane textuel
pdf.SetTextColor(color) Style CSS Définir la couleur du texte
pdf.SetTextSize(size) Style CSS Définir la taille du texte

Exemples de migration de code

Exemple 1 : Conversion HTML vers PDF

Avant (GdPicture.NET SDK):

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

class Program
{
    static void Main()
    {
        using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
        {
            string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
            GdPictureStatus status = converter.LoadFromHTMLString(htmlContent);

            if (status == GdPictureStatus.OK)
            {
                converter.SaveAsPDF("output.pdf");
            }
        }
    }
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPictureDocumentConverter converter = new GdPictureDocumentConverter())
        {
            string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
            GdPictureStatus status = converter.LoadFromHTMLString(htmlContent);

            if (status == GdPictureStatus.OK)
            {
                converter.SaveAsPDF("output.pdf");
            }
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Le ChromePdfRendererd'IronPDF utilise un moteur Chromium moderne pour un rendu HTML/CSS précis, éliminant ainsi la nécessité de vérifier le code d'état. Pour plus d'options de rendu HTML, consultez la documentation HTML vers PDF.

Exemple 2 : fusionner plusieurs PDF

Avant (GdPicture.NET SDK):

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

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf1 = new GdPicturePDF())
        using (GdPicturePDF pdf2 = new GdPicturePDF())
        {
            pdf1.LoadFromFile("document1.pdf", false);
            pdf2.LoadFromFile("document2.pdf", false);

            pdf1.MergePages(pdf2);
            pdf1.SaveToFile("merged.pdf");
        }
    }
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf1 = new GdPicturePDF())
        using (GdPicturePDF pdf2 = new GdPicturePDF())
        {
            pdf1.LoadFromFile("document1.pdf", false);
            pdf2.LoadFromFile("document2.pdf", false);

            pdf1.MergePages(pdf2);
            pdf1.SaveToFile("merged.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

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

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

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System.Collections.Generic;

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

        var merged = PdfDocument.Merge(new List<PdfDocument> { pdf1, pdf2 });
        merged.SaveAs("merged.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La méthode statique Merge d'IronPDF accepte une liste de documents, ce qui facilite la combinaison de plusieurs PDF en une seule opération. En savoir plus sur la fusion et la division de PDF.

Exemple 3 : Ajouter un filigrane à toutes les pages

Avant (GdPicture.NET SDK):

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

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            pdf.LoadFromFile("input.pdf", false);

            for (int i = 1; i <= pdf.GetPageCount(); i++)
            {
                pdf.SelectPage(i);
                pdf.SetTextColor(Color.Red);
                pdf.SetTextSize(48);
                pdf.DrawText("CONFIDENTIAL", 200, 400);
            }

            pdf.SaveToFile("watermarked.pdf");
        }
    }
}
// NuGet: Install-Package GdPicture.NET
using GdPicture14;
using System;
using System.Drawing;

class Program
{
    static void Main()
    {
        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            pdf.LoadFromFile("input.pdf", false);

            for (int i = 1; i <= pdf.GetPageCount(); i++)
            {
                pdf.SelectPage(i);
                pdf.SetTextColor(Color.Red);
                pdf.SetTextSize(48);
                pdf.DrawText("CONFIDENTIAL", 200, 400);
            }

            pdf.SaveToFile("watermarked.pdf");
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

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

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

        pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Editing;

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

        pdf.ApplyWatermark("<h1 style='color:red;'>CONFIDENTIAL</h1>", 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

        pdf.SaveAs("watermarked.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La migration du SDK GdPicture.NET du dessin de texte basé sur les coordonnées vers le filigrane basé sur HTML simplifie considérablement le code. La méthode ApplyWatermark d'IronPDF utilise le style HTML/CSS, ce qui élimine le besoin d'itération manuelle des pages et de calcul des coordonnées. Consultez la documentation complète watermarking pour des options supplémentaires.

Exemple 4 : Protection par mot de passe et sécurité

Avant (GdPicture.NET SDK):

using GdPicture14;

class Program
{
    static void Main()
    {
        LicenseManager.RegisterKEY("LICENSE-KEY");

        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            GdPictureStatus status = pdf.LoadFromFile("document.pdf", false);

            if (status != GdPictureStatus.OK) return;

            // Save with encryption - many boolean parameters
            status = pdf.SaveToFile(
                "protected.pdf",
                PdfEncryption.PdfEncryption256BitAES,
                "user123",      // User password
                "owner456",     // Owner password
                true,           // Can print
                false,          // Cannot copy
                false,          // Cannot modify
                false,          // Cannot add notes
                true,           // Can fill forms
                false,          // Cannot extract
                false,          // Cannot assemble
                true            // Can print high quality
            );
        }
    }
}
using GdPicture14;

class Program
{
    static void Main()
    {
        LicenseManager.RegisterKEY("LICENSE-KEY");

        using (GdPicturePDF pdf = new GdPicturePDF())
        {
            GdPictureStatus status = pdf.LoadFromFile("document.pdf", false);

            if (status != GdPictureStatus.OK) return;

            // Save with encryption - many boolean parameters
            status = pdf.SaveToFile(
                "protected.pdf",
                PdfEncryption.PdfEncryption256BitAES,
                "user123",      // User password
                "owner456",     // Owner password
                true,           // Can print
                false,          // Cannot copy
                false,          // Cannot modify
                false,          // Cannot add notes
                true,           // Can fill forms
                false,          // Cannot extract
                false,          // Cannot assemble
                true            // Can print high quality
            );
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Après (IronPDF):

using IronPdf;

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

        // Configure security settings with clear property names
        pdf.SecuritySettings.OwnerPassword = "owner456";
        pdf.SecuritySettings.UserPassword = "user123";

        // Set permissions
        pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
        pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
        pdf.SecuritySettings.AllowUserAnnotations = false;
        pdf.SecuritySettings.AllowUserFormData = true;

        pdf.SaveAs("protected.pdf");
    }
}
using IronPdf;

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

        // Configure security settings with clear property names
        pdf.SecuritySettings.OwnerPassword = "owner456";
        pdf.SecuritySettings.UserPassword = "user123";

        // Set permissions
        pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
        pdf.SecuritySettings.AllowUserCopyPasteContent = false;
        pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
        pdf.SecuritySettings.AllowUserAnnotations = false;
        pdf.SecuritySettings.AllowUserFormData = true;

        pdf.SaveAs("protected.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

La propriété SecuritySettings d'IronPDF fournit des propriétés nommées et auto-documentées au lieu de paramètres booléens positionnels.


Notesde migration essentielles

Conversion de l'indexation des pages

L'un des changements les plus importants dans cette migration du SDK GdPicture.NET est la différence d'indexation des pages :

// GdPicture.NET SDK: 1-indexépages
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
    pdf.SelectPage(i);
    // process page
}

// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    // process page
}
// GdPicture.NET SDK: 1-indexépages
for (int i = 1; i <= pdf.GetPageCount(); i++)
{
    pdf.SelectPage(i);
    // process page
}

// IronPDF: 0-indexed pages (standard .NET)
for (int i = 0; i < pdf.PageCount; i++)
{
    var page = pdf.Pages[i];
    // process page
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Codes d'état pour les exceptions

Remplacer le contrôle d'état verbeux par le try-catch standard :

// GdPicture.NET SDK
GdPictureStatus status = converter.LoadFromHTMLString(html);
if (status != GdPictureStatus.OK)
{
    Console.WriteLine($"Error: {status}");
    return;
}

// IronPDF
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}
// GdPicture.NET SDK
GdPictureStatus status = converter.LoadFromHTMLString(html);
if (status != GdPictureStatus.OK)
{
    Console.WriteLine($"Error: {status}");
    return;
}

// IronPDF
try
{
    var pdf = renderer.RenderHtmlAsPdf(html);
    pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Conversion d'unités

GdPicture.NET SDK utilise les pouces pour les marges ;IronPDFutilise des millimètres :

// GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5f, 0.5f, 0.5f, 0.5f);

// IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
// GdPicture.NET SDK: 0.5 inches margin
converter.HtmlSetMargins(0.5f, 0.5f, 0.5f, 0.5f);

// IronPDF: 0.5 inches = 12.7 mm
renderer.RenderingOptions.MarginTop = 12.7;
renderer.RenderingOptions.MarginBottom = 12.7;
renderer.RenderingOptions.MarginLeft = 12.7;
renderer.RenderingOptions.MarginRight = 12.7;
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Formule de conversion : millimètres = pouces × 25,4

Sécurité des threads

GdPicture.NET SDK nécessite une synchronisation manuelle pour les opérations simultanées. Le ChromePdfRendererd'IronPDF est thread-safe de par sa conception, ce qui simplifie la génération de PDF multithread.


Considérations de Performance

Réutiliser ChromePdfRenderer

Pour des performances optimales, réutilisez l'instance du moteur de rendu :

// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
    private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}

// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
    var renderer = new ChromePdfRenderer();  // Wasteful
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}
// GOOD - Reuse renderer (thread-safe)
public class PdfService
{
    private static readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] Generate(string html) => _renderer.RenderHtmlAsPdf(html).BinaryData;
}

// BAD - Creates new instance each time
public byte[] GenerateBad(string html)
{
    var renderer = new ChromePdfRenderer();  // Wasteful
    return renderer.RenderHtmlAsPdf(html).BinaryData;
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Élimination correcte des ressources

// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically
// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Liste de contrôle de la migration

Pré-migration

  • [Inventaire de toutes les utilisations du SDK GdPicture.NET dans la base de code
  • [Identifier les fonctionnalités réellement utilisées (PDF vs OCRvs code-barres)
  • [Déterminer si des fonctionnalités OCR/barcode sont nécessaires (envisager IronOCR/IronBarcode)
  • [ ] Examiner les licences actuelles et les comparer à la tarification d'IronPdf
  • [Obtenir la clé de licence IronPDF
  • [Créer une branche de migration dans le contrôle de version

Migration de code

  • [Supprimer les paquets NuGet de GdPicture.NET SDK: dotnet remove package GdPicture.NET
  • [Installer le paquet NuGet IronPdf : dotnet add package IronPdf
  • [Mise à jour des importations de l'espace de noms (GdPicture14IronPdf)
  • [Remplacer LicenseManager.RegisterKEY() par IronPdf.License.LicenseKey
  • [Convertir les vérifications de code d'état en blocs try-catch
  • [Mise à jour de l'indexation des pages (1-indexé → 0-indexé)
  • [Remplacer GdPicturePDFpar PdfDocument
  • [Remplacer GdPictureDocumentConverterpar ChromePdfRenderer
  • [Convertir un texte basé sur des coordonnées en estampillage HTML
  • [Mise à jour des conversions d'unités (pouces → millimètres)

Testing

  • [Test unitaire de tous les chemins de génération de PDF
  • [Vérifier que la qualité du rendu HTML est égale ou supérieure à celle de la traduction
  • [Tester tous les scénarios de sécurité/chiffrement
  • [Vérifier la fonctionnalité de remplissage des formulaires
  • [Tester les opérations de fusion/séparation
  • [Valider l'apparence du filigrane
  • [La traduction doit rester professionnelle, en préservant la précision technique tout en expliquant les caractéristiques et les avantages de ces outils de développement

Post-Migration

  • [Supprimer les fichiers/clés de licence de GdPicture.NET SDK
  • [Mise à jour de la documentation
  • [Former l'équipe aux modèles d'API d'IronPDF
  • [Suivre la production en cas de problème

Conclusion

La migration de GdPicture.NET SDKversIronPDFélimine la complexité d'un SDK complet d'imagerie documentaire lorsque vous vous concentrez sur la génération de PDF. La migration remplace les modèles de vérification d'état verbeux par une gestion des erreurs propre et basée sur les exceptions, les pages à indexation 1 par des collections standard à indexation 0, et le dessin de texte basé sur les coordonnées par un style HTML/CSS intuitif.

L'approche ciblée d'IronPDF réduit les coûts de licence tout en offrant un rendu HTML moderne basé sur Chromium, des opérations à l'abri des threads et un espace de noms stable qui ne changera pas avec les mises à jour de version. Pour les équipes ayant des besoins en matière d'OCR ou de codes-barres, les produits compagnons IronOCR et IronBarcode offrent ces capacités sans les frais généraux d'un SDK monolithique.

Explorez la documentation complète IronPDF, tutorials, et référence API pour accélérer votre migration vers le SDK GdPicture.NET.

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