IRONSOFTWAREHOME
VIDEOS

Wie man Seitennummern in PDFs mit C# hinzufügt

Curtis Chau
Curtis Chau
Updated: 19. Juli 2026

Das Migrieren von GemBox.Pdf zu IronPDF transformiert Ihren .NET PDF-Workflow von koordinatebasierter, programmatischer Dokumentenerstellung zu moderner HTML/CSS-basierter Darstellung. Dieser Leitfaden bietet einen umfassenden, schrittweisen Migrationspfad, der die 2-Seiten-Limitierung im Freimodus entfernt und die Dokumenterstellung für professionelle .NET-Entwickler vereinfacht.

Warum von GemBox.Pdf zu IronPDF migrieren

Die Herausforderungen von GemBox.Pdf

GemBox.Pdf ist eine fähige .NET PDF-Komponente, aber es gibt Einschränkungen, die bei der Entwicklung in der Praxis abgewogen werden sollten:

  1. 2-Seiten-Free-Mode-Begrenzung: Die kostenlose Version wirft FreeLimitReachedException beim Laden oder Speichern eines PDFs mit mehr als 2 Seiten, daher erfordert alles über einen einseitigen Beleg oder eine zweiseitige Rechnung hinaus eine kostenpflichtige Lizenz. (Source: gemboxsoftware.com/pdf/free-version.)

  2. Keine HTML-zu-PDF-Konvertierung: GemBox.Pdf kann HTML nicht rendern — PdfDocument.Load öffnet nur bestehende PDF-Dateien. Um HTML in PDF zu konvertieren, müssen Sie das separate GemBox.Document-Produkt kaufen (andere SKU, andere Lizenz).

  3. Koordinatebasierte Layouts: GemBox.Pdf ist eine Low-Level-PDF-Content-Stream-API. Um Text zu platzieren, berechnen Sie X/Y in PDF-User-Space-Einheiten und rufen Sie page.Content.DrawText(formattedText, new PdfPoint(x, y)) auf. Es gibt kein Flusslayout.

  4. Office-zu-PDF erfordert andere SKUs: Word→PDF benötigt GemBox.Document, Excel→PDF benötigt GemBox.Spreadsheet, jede separat lizenziert; das GemBox.Bundle deckt alle ab, kostet aber mehr.

  5. Nur programmatisch: Jede Designänderung erfordert Codeänderungen. Abstände anpassen? Koordinaten neu berechnen. Die Schriftgröße ändern? Justieren Sie die Y-Positionen darunter.

  6. Kommerzielle Lizenzpreise: Einzelentwickler-Lizenz kostet 890 $ (Verlängerung 534 $), kleines Team (10 Entwickler) kostet 4.450 $, großes Team (50 Entwickler) kostet 13.350 $. (Quelle: gemboxsoftware.com/pdf/pricing.)

  7. Lernkurve für das Design: Entwickler müssen in Koordinaten denken anstatt im Dokumentenfluss, was einfache Aufgaben wie "Absatz hinzufügen" überraschend komplex macht.

Vergleich von GemBox.Pdf und IronPDF

AspektGemBox.PdfIronPDF
Grenzen der kostenlosen Version2-Seiten-Maximum (FreeLimitReachedException)Nur Wasserzeichen, kein Seitenlimit
HTML-zu-PDFNicht unterstützt (braucht GemBox.Document)Vollständige Chromium-Engine
Word/Excel → PDFSeparate SKUs (GemBox.Document / GemBox.Spreadsheet)Rendern über HTML-Pipeline
Layout-AnsatzKoordinatenbasiert, manuellHTML/CSS-Flow-Layout
Modernes CSSNicht zutreffendFlexbox, Grid, CSS3-Animationen
JavaScript-UnterstützungNicht zutreffendVollständige Ausführung von JavaScript
Änderungen am DesignKoordinaten neu berechnenHTML/CSS bearbeiten
LernkurvePDF-KoordinatensystemHTML/CSS (mit dem Web vertraut)

IronPDF nutzt bekannte Webtechnologien zur PDF-Erstellung auf modernem .NET.


Migrationskomplexitätsbewertung

Geschätzter Aufwand nach Merkmalen

FeatureKomplexität der Migration
PDFs laden/speichernSehr niedrig
PDFs zusammenführenSehr niedrig
PDFs teilenNiedrig
TextextraktionSehr niedrig
Text hinzufügenMedium
TabellenNiedrig
BilderNiedrig
WasserzeichenNiedrig
PasswortschutzMedium
FormularfelderMedium

Paradigmen-Verschiebung

Die größte Änderung in dieser GemBox.Pdf-Migration ist der Wechsel von koordinatebasiertem Layout zu HTML/CSS-Layout:

GemBox.Pdf: "Text an Position (100, 700) zeichnen"
IronPDF:     "Dieses HTML mit CSS-Styling rendern"
Text

Dieser Paradigmenwechsel ist für Entwickler, die mit Webtechnologien vertraut sind, in der Regel einfacher, erfordert aber eine andere Sichtweise auf PDFs.


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.
  4. HTML/CSS-Kenntnisse: Grundkenntnisse sind hilfreich, aber nicht erforderlich.

Identifizieren aller GemBox.Pdf-Verwendungen

# Find all GemBox.Pdf references
grep -r "GemBox\.Pdf\|PdfDocument\|PdfPage\|PdfFormattedText\|ComponentInfo\.SetLicense" --include="*.cs" .

# Find package references
grep -r "GemBox\.Pdf" --include="*.csproj" .
SHELL

NuGet-Paketänderungen

# Remove GemBox.Pdf
dotnet remove package GemBox.Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Schnellstart Migration

Schritt 1: Lizenzkonfiguration aktualisieren

Before (GemBox.Pdf):

// Must call before any GemBox.Pdf operations
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Or for professional:
ComponentInfo.SetLicense("YOUR-PROFESSIONAL-LICENSE");

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 (GemBox.Pdf)
using GemBox.Pdf;
using GemBox.Pdf.Content;

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

Schritt 3: Grundlegendes Konvertierungsmuster

Before (GemBox.Pdf):

using GemBox.Pdf;
using GemBox.Pdf.Content;

ComponentInfo.SetLicense("FREE-LIMITED-KEY");

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    // PdfFormattedText has no Text property; use Append/AppendLine.
    var formattedText = new PdfFormattedText();
    formattedText.FontSize = 24;
    formattedText.Append("Hello World");

    page.Content.DrawText(formattedText, new PdfPoint(100, 700));
    document.Save("output.pdf");
}

Nach (IronPDF):

using IronPdf;

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

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1 style='font-size:24px;'>Hello World</h1>");
pdf.SaveAs("output.pdf");

Hauptunterschiede:

  • Keine Koordinatenberechnungen erforderlich
  • HTML/CSS anstelle von programmatischem Layout
  • Keine 2-seitige Freimodus-Begrenzung
  • Einfacherer, besser lesbarer Code

Komplette API-Referenz

Namensraum-Zuordnung

GemBox.PdfIronPDF
GemBox.PdfIronPdf
GemBox.Pdf.ContentIronPdf (Inhalt ist HTML)
GemBox.Pdf.SecurityIronPdf (SecuritySettings)
GemBox.Pdf.FormsIronPdf.Forms

Kernklassen-Zuordnung

GemBox.PdfIronPDFBeschreibung
PdfDocumentPdfDocumentHauptklasse des PDF-Dokuments
PdfPagePdfDocument.Pages[i]Darstellung der Seite
PdfContentN/A (HTML verwenden)Inhalt der Seite
PdfFormattedTextN/A (HTML verwenden)Formatierter Text
PdfPointN/A (CSS-Positionierung verwenden)Positionierung koordinieren
ComponentInfo.SetLicense()IronPdf.License.LicenseKeyLizenzverwaltung

Dokumentenoperationen

GemBox.PdfIronPDF
new PdfDocument()new PdfDocument()
PdfDocument.Load(path)PdfDocument.FromFile(path)
PdfDocument.Load(stream)PdfDocument.FromStream(stream)
document.Save(path)pdf.SaveAs(path)
document.Save(stream)pdf.BinaryData (gibt byte[] zurück)

Seitenoperationen

GemBox.PdfIronPDF
document.Pages.Add()Erstellen über HTML-Rendering
document.Pages.Countpdf.PageCount
document.Pages[index]pdf.Pages[index]
document.Pages.AddClone(pages)PdfDocument.Merge()

Text- und Inhaltsoperationen

GemBox.PdfIronPDF
new PdfFormattedText()HTML-Zeichenkette
formattedText.Append(text)In HTML einfügen
formattedText.AppendLine(text)In HTML einfügen
formattedText.FontSize = 12CSS font-size: 12pt
formattedText.Font = ...CSS font-family: ...
page.Content.DrawText(text, point)renderer.RenderHtmlAsPdf(html)
page.Content.GetText()pdf.ExtractTextFromPage(i)

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vorher (GemBox.Pdf) — nicht unterstützt von GemBox.Pdf; erfordert das separate GemBox.Document SKU:

// NuGet: Install-Package GemBox.Document
// NOTE: GemBox.Pdf does NOT support HTML-to-PDF. PdfDocument.Load only opens
// existing PDF files. To convert HTML to PDF you must use the separate
// GemBox.Document product (different SKU, different license).
using GemBox.Document;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        // GemBox.Document loads HTML and saves as PDF.
        var document = DocumentModel.Load("input.html");
        document.Save("output.pdf");
    }
}

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

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

IronPDFs ChromePdfRenderer verwendet eine moderne Chromium-Engine für HTML/CSS/JavaScript-Rendering, sodass ein einzelnes NuGet-Paket HTML-zu-PDF direkt abdeckt — keine separate SKU. Weitere Rendering-Optionen finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: PDF-Dateien zusammenführen

Before (GemBox.Pdf):

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using System.Linq;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");
        
        using (var document = new PdfDocument())
        {
            var source1 = PdfDocument.Load("document1.pdf");
            var source2 = PdfDocument.Load("document2.pdf");
            
            document.Pages.AddClone(source1.Pages);
            document.Pages.AddClone(source2.Pages);
            
            document.Save("merged.pdf");
        }
    }
}

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

Die statische Merge-Methode von IronPDF vereinfacht den Vorgang — es ist nicht notwendig, ein leeres Dokument zu erstellen und Seiten einzeln zu klonen. Erfahren Sie mehr über das Zusammenführen und Aufteilen von PDFs.

Beispiel 3: Text zu PDF hinzufügen

Before (GemBox.Pdf):

// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

class Program
{
    static void Main()
    {
        ComponentInfo.SetLicense("FREE-LIMITED-KEY");

        using (var document = new PdfDocument())
        {
            var page = document.Pages.Add();
            // PdfFormattedText has no Text property; use Append/AppendLine.
            var formattedText = new PdfFormattedText();
            formattedText.FontSize = 24;
            formattedText.Append("Hello World");

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.pdf");
        }
    }
}

Nach (IronPDF):

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf("<p>Original Content</p>");
        
        var stamper = new TextStamper()
        {
            Text = "Hello World",
            FontSize = 24,
            HorizontalOffset = 100,
            VerticalOffset = 700
        };
        
        pdf.ApplyStamp(stamper);
        pdf.SaveAs("output.pdf");
    }
}

Zum Hinzufügen von Text zu bestehenden PDFs bietet IronPDF die TextStamper-Klasse, die präzise Positionskontrolle ermöglicht. Für neue Dokumente fügen Sie den Text einfach in Ihre HTML-Vorlage ein. Weitere Optionen finden Sie in der Dokumentation zum Stempelverfahren .

Beispiel 4: Erstellen von Tabellen (Die größte Verbesserung!)

Vorher (GemBox.Pdf) — koordinatebasiertes Layout, auf 2 Seiten im Freimodus beschränkt:

using GemBox.Pdf;
using GemBox.Pdf.Content;

ComponentInfo.SetLicense("FREE-LIMITED-KEY");

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    double y = 700;
    double[] xPositions = { 50, 200, 300, 400 };

    // Headers
    var headers = new[] { "Product", "Price", "Qty", "Total" };
    for (int i = 0; i < headers.Length; i++)
    {
        var text = new PdfFormattedText();
        text.FontSize = 12;
        text.Append(headers[i]);
        page.Content.DrawText(text, new PdfPoint(xPositions[i], y));
    }
    y -= 20;

    // Data rows — each row requires manual Y advancement,
    // and free mode caps the saved file at 2 pages total.

    document.Save("products.pdf");
}

Nachher (IronPDF) — keine Seitenbegrenzung, richtige HTML-Tabellen:

using IronPdf;

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

var html = @"
    <html>
    <head>
        <style>
            table { border-collapse: collapse; width: 100%; }
            th, td { border: 1px solid #ddd; padding: 8px; text-align: left; }
            th { background-color: #4CAF50; color: white; }
            tr:nth-child(even) { background-color: #f2f2f2; }
        </style>
    </head>
    <body>
        <table>
            <thead>
                <tr>
                    <th>Product</th>
                    <th>Price</th>
                    <th>Qty</th>
                    <th>Total</th>
                </tr>
            </thead>
            <tbody>
                <tr><td>Widget A</td><td>$19.99</td><td>5</td><td>$99.95</td></tr>
                <tr><td>Widget B</td><td>$29.99</td><td>3</td><td>$89.97</td></tr>
                <!-- Add hundreds or thousands of rows - no limit! -->
            </tbody>
        </table>
    </body>
    </html>";

var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("products.pdf");
C#

Das ist die bedeutendste Verbesserung in der GemBox.Pdf-Migration. Tabellen, die ein Freimodus-GemBox.Pdf-Dokument über die 2-Seiten-Begrenzung hinausschieben würden, rendern ohne diese Begrenzung in IronPDF mit voller CSS-Styling-Unterstützung.


Kritische Hinweise zur Migration

Koordinate zu CSS-Positionierung

Wenn Sie pixelgenaue Positionierung benötigen (ähnlich dem Koordinatensystem von GemBox.Pdf), verwenden Sie CSS absolute Positionierung:

<div style="position:absolute; left:50px; top:750px; font-size:24px;">
    Text positioned at specific coordinates
</div>
HTML

Seitenindizierung

Sowohl GemBox.Pdf als auch IronPDF verwenden 0-indexierte Seiten, was diesen Aspekt der Migration einfach macht:

// GemBox.Pdf
var page = document.Pages[0];

// IronPDF
var page = pdf.Pages[0];

Sicherheitseinstellungen

// GemBox.Pdf
var encryption = document.SaveOptions.SetPasswordEncryption();
encryption.DocumentOpenPassword = "userPassword";
encryption.PermissionsPassword = "ownerPassword";

// IronPDF
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";

Fehlerbehebung

Ausgabe 1: PdfFormattedText nicht gefunden

Problem: PdfFormattedText existiert nicht in IronPDF.

Lösung: HTML mit CSS-Styling verwenden:

// GemBox.Pdf
var text = new PdfFormattedText();
text.FontSize = 24;
text.Append("Hello");

// IronPDF
var html = "<p style='font-size:24px;'>Hello</p>";
var pdf = renderer.RenderHtmlAsPdf(html);

Ausgabe 2: DrawText-Methode nicht gefunden

Problem: page.Content.DrawText() nicht verfügbar.

Lösung: Inhalte über HTML-Rendering erstellen oder Stamper verwenden:

// For new documents - render HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Content</h1>");

// For existing documents - use stampers
var stamper = new TextStamper() { Text = "Added Text" };
pdf.ApplyStamp(stamper);

Thema 3: Unterschiede beim Laden von Dokumenten

Problem: PdfDocument.Load() not found.

Lösung: Verwenden Sie PdfDocument.FromFile() oder FromStream():

// GemBox.Pdf
var doc = PdfDocument.Load("input.pdf");

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

Ausgabe 4: Unterschiede zwischen den Speichermethoden

Problem: document.Save() Methodensignatur unterscheidet sich.

Lösung: Verwenden Sie SaveAs():

// GemBox.Pdf
document.Save("output.pdf");

// IronPDF
pdf.SaveAs("output.pdf");

Migrations-Checkliste

Vor der Migration

  • Inventarisieren Sie alle GemBox.Pdf-Verwendung in der Codebasis
  • Identifizieren Sie koordinatenbasierte Layouts, die eine HTML-Konvertierung benötigen.
  • Bewerten Sie, wo die 2-seitige Freimodus-Begrenzung Ihren Code beeinflusst -IronPDF-Lizenzschlüssel erhalten
  • Migrationszweig in der Versionskontrolle erstellen

Code-Migration

  • Entfernen Sie GemBox.Pdf NuGet-Paket: dotnet remove package GemBox.Pdf
  • Installieren Sie IronPDF NuGet-Paket: dotnet add package IronPdf
  • Namespace-Importe aktualisieren
  • Ersetzen Sie ComponentInfo.SetLicense() durch IronPdf.License.LicenseKey
  • Konvertieren Sie PdfDocument.Load() zu PdfDocument.FromFile()
  • Konvertieren Sie document.Save() zu pdf.SaveAs()
  • Ersetzen Sie koordinatenbasierten Text durch HTML-Inhalt
  • Konvertieren Sie PdfFormattedText zu HTML mit CSS-Styling
  • Aktualisieren Sie Zusammenführungsoperationen, um PdfDocument.Merge() zu verwenden

Testen

  • Überprüfen Sie, ob alle Dokumente korrekt generiert wurden.
  • Sicherstellen, dass das Erscheinungsbild des Dokuments den Erwartungen entspricht
  • Testen Sie die Ausgabe mit mehreren Seiten (zuvor im Freimodus auf 2 Seiten beschränkt)
  • Überprüfen Sie, ob die Textextraktion korrekt funktioniert.
  • Testen von Zusammenführungs- und Aufteilungsoperationen
  • Sicherheits-/Verschlüsselungsfunktionalität überprüfen

Nach der Migration

  • Entfernen Sie GemBox.Pdf Lizenzschlüssel
  • Dokumentation aktualisieren
  • Schulung des Teams zum HTML/CSS-Ansatz für PDFs
  • Genießen Sie unbegrenzte Seitenzahlen ohne Freimodusbegrenzung!

Hinweis:: GemBox.Pdf ist eine eingetragene Marke ihres jeweiligen Eigentümers. Diese Seite ist nicht verbunden, unterstützt oder gesponsert von GemBox Software Ltd. 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.