IRONSOFTWAREHOME
VIDEOS

Wie man PDF-Metadaten in C# setzt und bearbeitet

Curtis Chau
Curtis Chau
Updated: 19. Juli 2026

Die Migration von GdPicture.NET SDKzu IronPDF bietet .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 SDKzu IronPDF migrieren

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. Überdimensioniert für reine PDF-Projekte: Das GdPicture .NET SDK ist eine vollständige Suite inklusive 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. Enterprise Preisgestaltung: Die Lizenzkosten beginnen bei 2.999 US-Dollar für das PDF-Plugin allein und steigen bis auf über 10.000 US-Dollar für die Ultimate Edition. Die Lizenzierung pro Entwickler bedeutet einen erheblichen Mehraufwand für wachsende Teams.

  4. Steile Lernkurve: Die API basiert auf Dokumentenverarbeitungskonzepten und nicht auf modernen .NET Mustern. Methoden wie LicenseManager.RegisterKEY(), GdPictureStatus Enum-Überprüfung, und 1-indizierte Seiten wirken veraltet im Vergleich zu zeitgemäßen C#-Konventionen.

  5. Statuscode-Muster: Jeder Vorgang gibt ein GdPictureStatus Enum zurück, das überprüft werden muss—keine Fehlermeldungen bei Fehlern, was die Fehlerbehandlung ausführlich und wiederholend macht.

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

  7. Versionsabhängigkeit: Der NamensraumGdPicture14 enthält die Versionsnummer, was bedeutet, dass größere Versionsupgrades Namespace-Änderungen in Ihrem gesamten Code erfordern.

  8. Verwirrung durch Rebranding: Das kürzliche Rebranding zu "Nutrient" führt zu einer Fragmentierung der Dokumentation zwischen gdpicture.com und nutrient.io, was Support und Lernprozesse erschwert.

GdPicture.NET SDKvs IronPDF Vergleich

AspektGdPicture.NET SDKIronPDF
SchwerpunktDocument Imaging Suite (Overkill für PDF)PDF-spezifische Bibliothek
Preisgestaltung$2.999-$10.000+ UnternehmensstufeWettbewerbsfähig, skaliert mit dem Geschäft
API-StilStatuscodes, manuelle VerwaltungAusnahmen, IDisposable, modernes .NET
LernkurveSteep (Bildgebungs-SDK-Konzepte)Einfach (HTML/CSS vertraut)
HTML-RenderingBasis, interner MotorNeuestes Chromium mit CSS3/JS
Indizierung der Seite1-indiziert0-indiziert (Standard .NET)
Thread-SicherheitManuelle Synchronisation erforderlichThread-sicher durch Design
NamensraumVersionsspezifisch (GdPicture14)Stabil (IronPdf)

IronPDF passt sich modernen .NET-Mustern und Konventionen an, wodurch es eine unkomplizierte Wahl für Teams in aktuellen .NET-Versionen ist.


Migrationskomplexitätsbewertung

Geschätzter Aufwand nach Merkmalen

FeatureKomplexität der Migration
HTML zu PDFNiedrig
URL zu PDFNiedrig
PDFs zusammenführenNiedrig
PDFs teilenNiedrig
WasserzeichenNiedrig
TextextraktionNiedrig
PasswortschutzMedium
FormularfelderMedium
Digitale SignaturenMittel-Hoch
OCRHoch
BarCode-ErkennungNicht anwendbar

Migrations-Entscheidungsmatrix

Ihre SituationEmpfehlung
Reine PDF-VorgängeMigrieren - erhebliche Vereinfachung und Kosteneinsparungen
Starke OCR-NutzungBetrachten Sie IronOCR als Begleitprodukt
BarCode/Scanning-BedarfBehalten Sie GdPicture.NET SDKfür diese Funktionen, verwenden Sie IronPDF für PDF
Vollständiges Document ImagingBewerten Sie, ob Sie tatsächlich alle Funktionen nutzen

Bevor Sie beginnen

Voraussetzungen

  1. **.NET Version:**IronPDF supports .NET Framework 4.6.2+ and .NET Core 2.0+ / .NET 5+
  2. Lizenzschlüssel: Ihren IronPDF-Lizenzschlüssel erhalten Sie unter IronPDF.
  3. Datensicherung: Erstellen Sie einen Branch für die 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" .
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
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");

Nach (IronPDF):

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

// Or in appsettings.json:
// { "IronPdf.License.LicenseKey": "YOUR-LICENSE-KEY" }

Schritt 2: Aktualisieren der Namensraum-Importe

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

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;

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("YOUR-GDPICTURE-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}");
    }
}

Nach (IronPDF):

using IronPdf;

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

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

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 SDKIronPDF
GdPicture14IronPdf
GdPicture14.PDFIronPdf
GdPicture14.ImagingNicht anwendbar (nicht erforderlich)

Kernklassen-Zuordnung

GdPicture.NET SDKIronPDFBeschreibung
GdPicturePDFPdfDocumentHauptklasse des PDF-Dokuments
GdPictureDocumentConverterChromePdfRendererKonvertierung von HTML/URL in PDF
LicenseManagerIronPdf.LicenseLizenzverwaltung
GdPictureStatusAusnahmenFehlerbehandlung

Methoden zum Laden von Dokumenten

GdPicture.NET SDKIronPDF
pdf.LoadFromFile(path, loadInMemory)PdfDocument.FromFile(path)
pdf.LoadFromFile(path, password, loadInMemory)PdfDocument.FromFile(path, password)
converter.LoadFromHTMLString(html)renderer.RenderHtmlAsPdf(html)
converter.LoadFromURL(url)renderer.RenderUrlAsPdf(url)

Seitenoperationen

GdPicture.NET SDKIronPDF
pdf.GetPageCount()pdf.PageCount
pdf.SelectPage(pageNo)pdf.Pages[index]
pdf.GetPageWidth()pdf.Pages[i].Width
pdf.GetPageHeight()pdf.Pages[i].Height

Merge- und Split-Operationen

GdPicture.NET SDKIronPDF
pdf1.MergePages(pdf2)PdfDocument.Merge(pdf1, pdf2)
pdf.ExtractPages(start, end)pdf.CopyPages(indices)

Wasserzeichenoperationen

GdPicture.NET SDKIronPDF
pdf.DrawText(...) Schleifepdf.ApplyWatermark(html)
pdf.SetTextColor(color)CSS-Styling
pdf.SetTextSize(size)CSS-Styling

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");
            }
        }
    }
}

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");
    }
}

Die ChromePdfRenderer von IronPDF verwendet eine moderne Chromium-Engine für präzises HTML/CSS-Rendering und beseitigt die Notwendigkeit für Statuscode-Überprüfungen. 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");
        }
    }
}

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");
    }
}

Die statische Merge Methode von IronPDF akzeptiert eine Liste von Dokumenten und ermöglicht so einfaches Kombinieren mehrerer PDFs in einem einzigen Vorgang. 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");
        }
    }
}

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");
    }
}

Die Migration des GdPicture.NET SDKvon koordinatenbasierter Textzeichnung zu HTML-basiertem Wasserzeichen vereinfacht den Code erheblich. Die ApplyWatermark Methode von IronPDF verwendet HTML/CSS-Styling, wodurch die manuelle Seiteniteration und Koordinatenberechnungen entfallen. 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("YOUR-GDPICTURE-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
            );
        }
    }
}

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");
    }
}

Die SecuritySettings Eigenschaft von IronPDF bietet benannte, selbstdokumentierende Eigenschaften anstelle von Positions-basierten booleschen Parametern.


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
}

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}");
}

Einheitsumwandlung

GdPicture.NET SDK verwendet Zoll für Ränder;IronPDF arbeitet 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;

Umrechnungsformel: millimeters = inches × 25.4

Thread-Sicherheit

GdPicture.NET SDK erfordert eine manuelle Synchronisation für gleichzeitige Operationen. Der ChromePdfRenderer von IronPDF ist von Haus aus thread-sicher, was die mehrspurige PDF-Erzeugung 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;
}

Ressourcen richtig entsorgen

// Use using statements for automatic cleanup
using (var pdf = PdfDocument.FromFile("large.pdf"))
{
    string text = pdf.ExtractAllText();
}  // pdf is disposed automatically

Migrations-Checkliste

Vor der Migration

  • Erfassung aller GdPicture .NET SDK-Nutzungen im Quellcode
  • Ermitteln Sie, welche Funktionen tatsächlich verwendet werden (PDF vs. OCRvs. Barcode).
  • Prüfen, ob OCR-/Barcode-Funktionen benötigt werden (erwägen Sie IronOCR/IronBarcode)
  • Ü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

  • Entfernen Sie das GdPicture.NET SDKNuGet-Pakete: dotnet remove package GdPicture.NET
  • Installieren Sie das IronPDF NuGet-Paket: dotnet add package IronPdf
  • Aktualisieren Sie die Namespace-Importe (GdPicture14IronPdf)
  • Ersetzen Sie LicenseManager.RegisterKEY() durch IronPdf.License.LicenseKey
  • Statuscodeprüfungen in try-catch-Blöcke umwandeln
  • Aktualisierung der Seitenindizierung (1-indexiert → 0-indexiert)
  • Ersetzen Sie GdPicturePDF durch PdfDocument
  • Ersetzen Sie GdPictureDocumentConverter durch ChromePdfRenderer
  • Konvertierung von koordinatenbasiertem Text in HTML-Stempel
  • Einheitenumrechnungen aktualisieren (Zoll → Millimeter)

Testen

  • Alle PDF-Generierungspfade einem Unit-Test unterziehen
  • Überprüfen Sie, ob die HTML-Rendering-Qualität den Anforderungen entspricht oder diese übertrifft.
  • Alle Sicherheits-/Verschlüsselungsszenarien testen
  • Überprüfung der Formularausfüllfunktion
  • Testen von Zusammenführungs-/Aufteilungsoperationen
  • Überprüfung des Wasserzeichen-Erscheinungsbilds
  • Leistungsbenchmark kritische Pfade

Nach der Migration

  • GdPicture .NET SDK-Lizenzdateien/-schlüssel entfernen
  • Dokumentation aktualisieren
  • Das Team in IronPDF API-Mustern schulen
  • Die Produktion auf etwaige Probleme überwachen

Hinweis:: GdPicture.NET und Nutrient sind eingetragene Marken der jeweiligen Inhaber. Diese Seite ist in keiner Weise mit Nutrient, ORPALIS oder PSPDFKit verbunden, gesponsert oder unterstützt. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich zugängliche Informationen zum Zeitpunkt des Schreibens wider.
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 Handbücher.

...
Weiterlesen

Verwandte Artikel

Key in blue circle

Holen Sie sich sofort Ihren kostenlosen 30-Tage-Testschlüssel.

Your trial license will be sent to your email address

Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.

bullet_checkedIhr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.Keine Einschränkungen. 100 % freigeschaltet. Keine Kreditkarte.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Buchen Sie Ihre kostenlose Live-Demo
Booking Badge

Von Millionen von Ingenieur*innen weltweit vertraut

Kundenlogos von Iron Software
Erhalten Sie Ihre unverbindliche Beratung
Füllen Sie das Formular unten aus oder senden Sie eine E-Mail an sales@ironsoftware.com
Ihre Daten werden immer vertraulich behandelt.
Von Millionen von Ingenieur*innen weltweit vertraut
Kundenlogos von Iron Software
Erhalten Sie sofort Ihren kostenlosen 30-Tage-Testschlüssel.
Ihr Testlizenzschlüssel wurde Ihnen per E-Mail gesendet.