Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Wie man von GdPicture.NET SDK zu IronPDF in C# migriert

Migrieren Sie von GdPicture.NET SDKzu IronPDF: Vollständiger C#-Migrationsleitfaden

Die Migration von GdPicture.NET SDKzuIronPDFbietet .NET-Entwicklern einen fokussierten, optimierten Ansatz für die PDF-Erzeugung. Dieses Handbuch bietet einen umfassenden, schrittweisen Migrationspfad, der komplexe SDK-Muster für die Dokumentenerstellung durch moderne, PDF-spezifische APIs ersetzt, die für eine zeitgemäße .NET-Entwicklung konzipiert sind.

Warum von GdPicture.NET SDKzuIronPDFmigrieren

Die GdPicture.NET SDK-Herausforderungen

GdPicture.NET SDK (jetzt umbenannt in Nutrient) ist ein umfassendes SDK für die Bildbearbeitung von Dokumenten mit mehreren Herausforderungen für die Entwicklung von PDF-Dateien:

  1. Overkill für reine PDF-Projekte: GdPicture.NET SDKist eine vollständige Dokumenten-Imaging-Suite mit OCR, Barcode-Erkennung, Scannen und Bildverarbeitung. Wenn Sie nur PDF-Funktionen benötigen, zahlen Sie für Funktionen, die Sie nie nutzen werden.

  2. Komplexe Lizenzierung: Mehrere Produktstufen (GdPicture.NET 14, GdPicture.API, Ultimate, Professional) mit verwirrenden SKU-Kombinationen und jährlichen Abonnementanforderungen.

  3. Unternehmenspreise: Die Lizenzkosten beginnen bei $2.999 für das PDF-Plugin allein und steigen bis zu $10.000+ für die Ultimate Edition. Die Lizenzierung pro Entwickler bedeutet einen erheblichen Mehraufwand für wachsende Teams.

  4. Steile Lernkurve: Die API wurde auf der Grundlage von Document-Imaging-Konzepten und nicht auf der Grundlage moderner .NET-Muster entwickelt. Methoden wie LicenseManager.RegisterKEY(), GdPictureStatusenum checking und 1-indizierte Seiten wirken im Vergleich zu den heutigen C#-Konventionen veraltet.

  5. Status Code Pattern: Jede Operation gibt ein GdPictureStatusEnum zurück, das überprüft werden muss - bei Fehlern werden keine Ausnahmen ausgelöst, was die Fehlerbehandlung langwierig und repetitiv macht.

  6. Manuelle Ressourcenverwaltung: Erfordert explizite Dispose() oder Release() Aufrufe. Das SDK folgt nicht sauber den Standard-.NET-Entsorgungsmustern.

  7. Version Lock-in: Der Namensraum GdPicture14enthält die Versionsnummer, so dass größere Versions-Upgrades Änderungen des Namensraums in der gesamten Codebasis erfordern.

  8. Rebranding-Verwirrung: Die kürzlich erfolgte Umbenennung in "Nutrient" führt zu einer Fragmentierung der Dokumentation zwischen gdpicture.com und nutrient.io, was den Support und das Lernen erschwert.

GdPicture.NET SDKvsIronPDFVergleich

Aspekt GdPicture.NET SDK IronPDF
Schwerpunkt Document Imaging Suite (Overkill für PDF) PDF-spezifische Bibliothek
Preisgestaltung $2.999-$10.000+ Unternehmensstufe Wettbewerbsfähig, skaliert mit dem Geschäft
API-Stil Statuscodes, manuelle Verwaltung Ausnahmen, IDisposable, modernes .NET
Lernkurve Steep (Bildgebungs-SDK-Konzepte) Einfach (HTML/CSS vertraut)
HTML-Rendering Basis, interner Motor Neuestes Chromium mit CSS3/JS
Indizierung der Seite 1-indiziert 0-indiziert (Standard .NET)
Thread-Sicherheit Manuelle Synchronisation erforderlich Thread-sicher durch Design
Namensraum Versionsspezifisch (GdPicture14) Stabil (IronPdf)

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietetIronPDFeine zukunftssichere Grundlage, die mit modernen .NET-Mustern und -Konventionen übereinstimmt.


Migrationskomplexitätsbewertung

Geschätzter Aufwand nach Merkmalen

Feature Komplexität der Migration Notizen
HTML zu PDF Niedrig Direkte Methodenzuordnung
URLzu PDF Niedrig Direkte Methodenzuordnung
PDFs zusammenführen Niedrig Ähnliche API-Muster
PDFs teilen Niedrig Ähnliche API-Muster
Wasserzeichen Niedrig Unterschiedlicher Ansatz (HTML-basiert)
Textextraktion Niedrig Eigenschaft vs. Methode
Passwortschutz Medium Unterschiedliche Parameterstruktur
Formularfelder Medium API-Unterschiede
Digitale Signaturen Mittel-Hoch Unterschiedliche Handhabung von Zertifikaten
OCR Hoch IronOCR ist ein separates Produkt
BarCode-Erkennung Nicht anwendbar Nicht inIronPDFunterstützt

Migrations-Entscheidungsmatrix

Ihre Situation Empfehlung
Reine PDF-Vorgänge Migrieren - erhebliche Vereinfachung und Kosteneinsparungen
Starke OCR-Nutzung Betrachten Sie IronOCR als Begleitprodukt
BarCode/Scanning-Bedarf Behalten Sie GdPicture.NET SDKfür diese Funktionen, verwenden SieIronPDFfür PDF
Vollständiges Document Imaging Bewerten Sie, ob Sie tatsächlich alle Funktionen nutzen

Bevor Sie beginnen

Voraussetzungen

  1. .NET Version:IronPDFunterstützt .NET Framework 4.6.2+ und .NET Core 2.0+ / .NET 5/6/7/8/9+
  2. Lizenzschlüssel: Beziehen Sie Ihren IronPDF-Lizenzschlüssel von ironpdf.com
  3. Backup: Erstellen Sie eine Verzweigung für Migrationsarbeiten

Alle GdPicture.NET SDK-Verwendung identifizieren

# 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

NuGet-Paketänderungen

# 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

Schnellstart Migration

Schritt 1: Lizenzkonfiguration aktualisieren

Vor (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

Nach (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

Schritt 2: Aktualisieren der Namensraum-Importe

// 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

Schritt 3: Grundlegendes Konvertierungsmuster

Die wichtigste Änderung bei der Migration des GdPicture.NET SDKist die Abschaffung des ausführlichen Statusprüfungsmusters:

Vor (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

Nach (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

Hauptunterschiede:

  • Keine Statusüberprüfung - Ausnahmen bei Fehlern
  • Keine explizite Verfügung für Renderer erforderlich
  • Moderne, fließende API
  • Chromium-basiertes Rendering für bessere HTML/CSS-Unterstützung

Komplette API-Referenz

Namensraum-Zuordnung

GdPicture.NET SDK IronPDF
GdPicture14 IronPdf
GdPicture14.PDF IronPdf
GdPicture14.Imaging Nicht anwendbar (nicht erforderlich)

Kernklassen-Zuordnung

GdPicture.NET SDK IronPDF Beschreibung
GdPicturePDF PdfDocument Hauptklasse des PDF-Dokuments
GdPictureDocumentConverter ChromePdfRenderer Konvertierung von HTML/URL in PDF
LicenseManager IronPdf.Lizenz Lizenzverwaltung
GdPictureStatus Ausnahmen Fehlerbehandlung

Methoden zum Laden von Dokumenten

GdPicture.NET SDK IronPDF Notizen
pdf.LoadFromFile(path, loadInMemory) PdfDocument.FromFile(path) Aus Datei laden
pdf.LoadFromFile(Pfad, Passwort, loadInMemory) PdfDocument.FromFile(Pfad, Passwort) Passwort-geschützt
converter.LoadFromHTMLString(html) renderer.RenderHtmlAsPdf(html) HTML-Zeichenkette
converter.LoadFromURL(url) renderer.RenderUrlAsPdf(url) URL

Seitenoperationen

GdPicture.NET SDK IronPDF Notizen
pdf.GetPageCount() pdf.PageCount Seitenzahl abrufen
pdf.SelectPage(pageNo) pdf.Seiten[index] Seite auswählen (1-indiziert vs. 0-indiziert)
pdf.GetPageWidth() pdf.Pages[i].Width Breite der Seite
pdf.GetPageHeight() pdf.Pages[i].Height Seitenhöhe

Merge- und Split-Operationen

GdPicture.NET SDK IronPDF Notizen
pdf1.MergePages(pdf2) PdfDocument.Merge(pdf1, pdf2) PDFs zusammenführen
pdf.ExtractPages(start, end) pdf.CopyPages(indices) Seiten extrahieren

Wasserzeichenoperationen

GdPicture.NET SDK IronPDF Notizen
pdf.DrawText(...) Schleife pdf.ApplyWatermark(html) Text-Wasserzeichen
pdf.SetTextColor(Farbe) CSS-Styling Textfarbe einstellen
pdf.SetTextSize(Größe) CSS-Styling Textgröße festlegen

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vor (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

Nach (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

Der ChromePdfRenderervonIronPDFverwendet eine moderne Chromium-Engine für präzises HTML/CSS-Rendering, so dass eine Überprüfung des Statuscodes nicht erforderlich ist. Weitere HTML-Rendering-Optionen finden Sie in der HTML to PDF-Dokumentation.

Beispiel 2: Mehrere PDFs zusammenführen

Vor (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

Nach (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

Die statische Merge-Methode vonIronPDFakzeptiert eine Liste von Dokumenten und macht es einfach, mehrere PDFs in einem einzigen Vorgang zu kombinieren. Erfahren Sie mehr über das Zusammenführen und Aufteilen von PDFs.

Beispiel 3: Hinzufügen eines Wasserzeichens auf allen Seiten

Vor (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

Nach (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

Die Migration des GdPicture.NET SDKvon koordinatenbasierter Textzeichnung zu HTML-basiertem Wasserzeichen vereinfacht den Code erheblich. Die ApplyWatermark-Methode vonIronPDFverwendet HTML/CSS-Styling, so dass keine manuellen Seiteniterationen und Koordinatenberechnungen erforderlich sind. Weitere Optionen finden Sie in der vollständigen Wasserzeichen-Dokumentation.

Beispiel 4: Passwortschutz und Sicherheit

Vor (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

Nach (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

Die SecuritySettings-Eigenschaft vonIronPDFbietet benannte, selbstdokumentierende Eigenschaften anstelle von booleschen Positionsparametern.


Kritische Hinweise zur Migration

Konvertierung der Seitenindizierung

Eine der wichtigsten Änderungen bei dieser Migration des GdPicture.NET SDKist der Unterschied bei der Seitenindexierung:

// GdPicture.NET SDK: 1-indiziertpages
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-indiziertpages
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

Status-Codes zu Ausnahmen

Ersetzen Sie die ausführliche Statusprüfung durch das Standard-Try-Catch-Verfahren:

// 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

Einheitsumwandlung

GdPicture.NET SDK verwendet Zoll für Ränder;IronPDFarbeitet mit Millimetern:

// 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

Umrechnungsformel: Millimeter = Zoll × 25,4

Thread-Sicherheit

GdPicture.NET SDK erfordert eine manuelle Synchronisation für gleichzeitige Operationen. Der ChromePdfRenderervonIronPDFist von Haus aus thread-sicher, was die PDF-Erzeugung mit mehreren Threads vereinfacht.


Erwägungen zur Leistung

Wiederverwendung von ChromePdfRenderer

Für eine optimale Leistung sollten Sie die Renderer-Instanz wiederverwenden:

// 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

Ressourcen richtig entsorgen

// 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

Migrations-Checkliste

Vor der Migration

  • [Inventarisierung der Verwendung des GdPicture.NET SDKin der Codebasis
  • [Identifizieren Sie, welche Funktionen tatsächlich verwendet werden (PDF vs. OCRvs. Barcode)
  • [Bestimmen Sie, ob OCR-/Barcode-Funktionen benötigt werden (ziehen Sie IronOCR/IronBarcode in Betracht)
  • [Überprüfen Sie die aktuelle Lizenzierung und vergleichen Sie sie mit den Preisen von IronPDF
  • [IronPDF-Lizenzschlüssel erhalten
  • [Migrationszweig in der Versionskontrolle erstellen

Code-Migration

  • [GdPicture.NET SDK NuGet-Pakete entfernen: dotnet remove package GdPicture.NET
  • [IronPdf NuGet-Paket installieren: dotnet add package IronPdf
  • [Aktualisierung von Namensraum-Importen (GdPicture14IronPdf)
  • [Ersetzen Sie LicenseManager.RegisterKEY() durch IronPdf.License.LicenseKey
  • [Statuscode-Prüfungen in try-catch-Blöcke umwandeln
  • [Aktualisierung der Seitenindizierung (1-indiziert → 0-indiziert)
  • [Ersetzen Sie GdPicturePDFdurch PdfDocument
  • [Ersetzen Sie GdPictureDocumentConvertermit ChromePdfRenderer
  • [Koordinatenbasierter Text in HTML-Stempel umwandeln
  • [Aktualisierung von Einheitenumrechnungen (Zoll → Millimeter)

Testing

  • [Unit-Test aller PDF-Erzeugungspfade
  • [Prüfen Sie, ob die Qualität der HTML-Darstellung mindestens den Anforderungen entspricht
  • [Testen Sie alle Sicherheits-/Verschlüsselungsszenarien
  • [Überprüfen Sie die Funktionalität des Ausfüllens von Formularen
  • [Test von Merge/Split-Vorgängen
  • [Erscheinungsbild des Wasserzeichens validieren
  • [Leistungsbenchmark kritische Pfade

Post-Migration

  • [GdPicture.NET SDK Lizenzdateien/Schlüssel entfernen
  • [Dokumentation aktualisieren
  • [Schulung des Teams zuIronPDFAPI-Mustern
  • [Überwachen Sie die Produktion auf etwaige Probleme

Abschluss

Durch die Migration von GdPicture.NET SDKzuIronPDFentfällt die Komplexität eines vollständigen SDK für die Dokumentenerstellung, wenn Ihr Schwerpunkt auf der PDF-Erzeugung liegt. Durch die Migration werden umständliche Statusprüfungsmuster durch eine saubere, ausnahmebasierte Fehlerbehandlung, 1-indizierte Seiten durch standardmäßige 0-indizierte Sammlungen und koordinatenbasierte Textzeichnung durch intuitives HTML/CSS-Styling ersetzt.

Der fokussierte Ansatz vonIronPDFreduziert die Lizenzkosten und bietet gleichzeitig modernes HTML-Rendering auf Chromium-Basis, thread-sichere Operationen und einen stabilen Namespace, der sich bei Versions-Upgrades nicht ändert. Für Teams mit OCR- oder Barcode-Anforderungen bieten die Begleitprodukte IronOCR und IronBarcode diese Funktionen ohne den Overhead eines monolithischen SDKs.

Nutzen Sie die vollständige IronPDF-Dokumentation, die Tutorials und die API-Referenz, um Ihre GdPicture.NET SDK-Migration zu beschleunigen.

Curtis Chau
Technischer Autor

Curtis Chau hat einen Bachelor-Abschluss in Informatik von der Carleton University und ist spezialisiert auf Frontend-Entwicklung mit Expertise in Node.js, TypeScript, JavaScript und React. Leidenschaftlich widmet er sich der Erstellung intuitiver und ästhetisch ansprechender Benutzerschnittstellen und arbeitet gerne mit modernen Frameworks sowie der Erstellung gut strukturierter, optisch ansprechender ...

Weiterlesen