Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von GemBox PDF zu IronPDF in C#

Durch die Migration von GemBox PDFzuIronPDFwird Ihr .NET-PDF-Workflow von der koordinatenbasierten, programmatischen Dokumentenerstellung auf modernes HTML/CSS-basiertes Rendering umgestellt. Dieses Handbuch bietet einen umfassenden, schrittweisen Migrationspfad, der Absatzbeschränkungen aufhebt und die Dokumentenerstellung für professionelle .NET-Entwickler vereinfacht.

Warum von GemBox PDFzuIronPDFmigrieren

Die GemBox PDF-Herausforderungen

GemBox PDF ist eine leistungsfähige .NET-PDF-Komponente, die jedoch erhebliche Einschränkungen aufweist, die sich auf die praktische Entwicklung auswirken:

  1. Beschränkung auf 20 Absätze in der kostenlosen Version: Die kostenlose Version beschränkt Sie auf 20 Absätze, wobei Tabellenzellen zu dieser Beschränkung hinzugerechnet werden. Eine einfache 10-zeilige, 5-spaltige Tabelle benötigt 50 "Absätze", was die kostenlose Version selbst für einfache Geschäftsdokumente unbrauchbar macht.

  2. Keine HTML-zu-PDF-Konvertierung: GemBox PDFerfordert die programmatische Erstellung des Dokuments. Sie müssen Koordinaten berechnen und jedes Element manuell positionieren - es gibt keine einfache "render this HTML"-Funktion.

  3. Koordinatenbasiertes Layout: Im Gegensatz zu HTML/CSS, wo das Layout natürlich fließt, erfordert GemBox PDFdie Berechnung der genauen X/Y-Positionen für jedes Textelement, Bild und jede Form.

  4. Begrenzter Funktionsumfang: Im Vergleich zu umfassenden PDF-Bibliotheken konzentriert sich GemBox PDFauf grundlegende Operationen – Lesen, Schreiben, Zusammenführen, Aufteilen – ohne fortgeschrittene Funktionen wie HTML-Rendering oder Unterstützung für modernes CSS.

  5. Nur programmatisch: Jede Designänderung erfordert Codeänderungen. Möchten Sie die Abstände optimieren? Koordinaten neu berechnen. Sie möchten eine andere Schriftgröße? Passen Sie alle Y-Positionen darunter an.

  6. Zählung von Tabellenzellen: Die Absatzbegrenzung zählt Tabellenzellen, nicht nur sichtbare Absätze. Dadurch ist die kostenlose Version für Dokumente mit Tabellen praktisch unbrauchbar.

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

Vergleich zwischen GemBox PDFund IronPDF

Aspekt GemBox PDF IronPDF
Grenzen der kostenlosen Version 20 Absätze (einschließlich Tabellenzellen) Nur Wasserzeichen, keine inhaltlichen Einschränkungen
HTML-zu-PDF Nicht unterstützt Vollständige Chromium-Engine
Layout-Ansatz Koordinatenbasiert, manuell HTML/CSS-Flow-Layout
Tabellen Zählt zum Absatzlimit Unbegrenzt, Verwendung von HTML-Tabellen
Modernes CSS Nicht zutreffend Flexbox, Grid, CSS3-Animationen
JavaScript-Unterstützung Nicht zutreffend Vollständige Ausführung von JavaScript
Änderungen am Design Koordinaten neu berechnen HTML/CSS bearbeiten
Lernkurve PDF-Koordinatensystem HTML/CSS (mit dem Web vertraut)

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietetIronPDFeine zukunftssichere Grundlage, die vertraute Webtechnologien für die PDF-Erzeugung nutzt.


Migrationskomplexitätsbewertung

Geschätzter Aufwand nach Merkmalen

Feature Komplexität der Migration Notizen
PDFs laden/speichern Sehr niedrig Direkte Methodenzuordnung
PDFs zusammenführen Sehr niedrig Direkte Methodenzuordnung
PDFs teilen Niedrig Handhabung des Seitenindex
Textextraktion Sehr niedrig Direkte Methodenzuordnung
Text hinzufügen Medium Koordinieren → HTML
Tabellen Niedrig Handbuch → HTML-Tabellen
Bilder Niedrig Koordinieren → HTML
Wasserzeichen Niedrig Verschiedene API
Passwortschutz Medium Unterschiedliche Struktur
Formularfelder Medium API-Unterschiede

Paradigmen-Verschiebung

Die größte Änderung bei dieser GemBox-PDF-Migration ist der Wechsel von einem koordinatenbasierten Layout zu einem HTML/CSS-Layout:

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

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:IronPDFunterstützt .NET Framework 4.6.2+ und .NET Core 2.0+ / .NET 5/6/7/8/9+
  2. Lizenzschlüssel: Ihren IronPDF-Lizenzschlüssel erhalten Sie auf ironpdf.com.
  3. Datensicherung: Erstellen Sie einen Branch für die Migrationsarbeiten.
  4. HTML/CSS-Kenntnisse: Grundkenntnisse sind hilfreich, aber nicht erforderlich.

Alle GemBox PDF-Verwendung identifizieren

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

# Find package references
grep -r "GemBox\.Pdf" --include="*.csproj" .
# Find all GemBox PDFreferences
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
# Remove GemBox PDF
dotnet remove package GemBox.Pdf

# Install IronPDF
dotnet add package IronPdf
SHELL

Schnellstart Migration

Schritt 1: Lizenzkonfiguration aktualisieren

Vor (GemBox PDF):

// Must call before any GemBox PDFoperations
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Or for professional:
ComponentInfo.SetLicense("YOUR-PROFESSIONAL-LICENSE");
// Must call before any GemBox PDFoperations
ComponentInfo.SetLicense("FREE-LIMITED-KEY");
// Or for professional:
ComponentInfo.SetLicense("YOUR-PROFESSIONAL-LICENSE");
$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" }
$vbLabelText   $csharpLabel

Schritt 2: Aktualisieren der Namensraum-Importe

// Before (GemBox PDF)
using GemBox.Pdf;
using GemBox.Pdf.Content;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
// Before (GemBox PDF)
using GemBox.Pdf;
using GemBox.Pdf.Content;

// After (IronPDF)
using IronPdf;
using IronPdf.Editing;
$vbLabelText   $csharpLabel

Schritt 3: Grundlegendes Konvertierungsmuster

Vor (GemBox PDF):

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

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

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    var formattedText = new PdfFormattedText()
    {
        Text = "Hello World",
        FontSize = 24
    };

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

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

using (var document = new PdfDocument())
{
    var page = document.Pages.Add();
    var formattedText = new PdfFormattedText()
    {
        Text = "Hello World",
        FontSize = 24
    };

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

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");
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");
$vbLabelText   $csharpLabel

Hauptunterschiede:

  • Keine Koordinatenberechnungen erforderlich
  • HTML/CSS anstelle von programmatischem Layout
  • Keine Absatzbegrenzung
  • Einfacherer, besser lesbarer Code

Komplette API-Referenz

Namensraum-Zuordnung

GemBox PDF IronPDF
GemBox.Pdf IronPdf
GemBox.Pdf.Inhalt IronPdf(Inhalt ist HTML)
GemBox.Pdf.Sicherheit IronPdf(SecuritySettings)
GemBox.Pdf.Forms IronPdf.Forms

Kernklassen-Zuordnung

GemBox PDF IronPDF Beschreibung
PdfDocument PdfDocument Hauptklasse des PDF-Dokuments
PdfSeite PdfDocument.Pages[i] Darstellung der Seite
Pdf-Inhalt N/A (HTML verwenden) Inhalt der Seite
PdfFormattedText N/A (HTML verwenden) Formatierter Text
PdfPoint N/A (CSS-Positionierung verwenden) Positionierung koordinieren
ComponentInfo.SetLicense() IronPdf.License.LicenseKey Lizenzverwaltung

Dokumentenoperationen

GemBox PDF IronPDF Notizen
new PdfDocument() new PdfDocument() Neues Dokument erstellen
PdfDocument.Load(Pfad) PdfDocument.FromFile(path) Aus Datei laden
PdfDocument.Load(stream) PdfDocument.FromStream(stream) Vom Stream laden
document.Save(Pfad) pdf.SaveAs(Pfad) In Datei speichern
document.Save(stream) pdf.Stream oder pdf.BinaryData Als Stream/Bytes erhalten

Seitenoperationen

GemBox PDF IronPDF Notizen
document.Pages.Add() Erstellen über HTML-Rendering Neue Seite hinzufügen
document.Pages.Count pdf.PageCount Anzahl der Seiten
document.Pages[index] pdf.Seiten[index] Zugangsseite (beide 0-indiziert)
document.Pages.AddClone(pages) PdfDocument.Merge() Klonen/Zusammenführen von Seiten

Text- und Inhaltsoperationen

GemBox PDF IronPDF Notizen
new PdfFormattedText() HTML-Zeichenkette Inhalt des Textes
formattedText.FontSize = 12 CSS Schriftgröße: 12pt Schriftgröße
formattedText.Font = ... CSS font-family: ... Schriftfamilie
Seite.Inhalt.DrawText(Text, Punkt) renderer.RenderHtmlAsPdf(html) Text rendern
Seite.Inhalt.GetText() pdf.ExtractTextFromPage(i) Text extrahieren

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vor (GemBox PDF):

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

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

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
// NuGet: Install-Package GemBox.Pdf
using GemBox.Pdf;
using GemBox.Pdf.Content;

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

        var document = PdfDocument.Load("input.html");
        document.Save("output.pdf");
    }
}
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

Der ChromePdfRenderer vonIronPDFverwendet eine moderne Chromium-Engine für eine genaue HTML/CSS/JavaScript-Darstellung. Im Gegensatz zur begrenzten HTML-Unterstützung von GemBox PDFkannIronPDFjeden HTML-Inhalt mit vollständiger CSS3- und JavaScript-Unterstützung darstellen. Weitere Rendering-Optionen finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: PDF-Dateien zusammenführen

Vor (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");
        }
    }
}
// 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");
        }
    }
}
$vbLabelText   $csharpLabel

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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

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

Beispiel 3: Text zu PDF hinzufügen

Vor (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();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

            page.Content.DrawText(formattedText, new PdfPoint(100, 700));
            document.Save("output.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();
            var formattedText = new PdfFormattedText()
            {
                Text = "Hello World",
                FontSize = 24
            };

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

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");
    }
}
// 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");
    }
}
$vbLabelText   $csharpLabel

Für das Hinzufügen von Text zu bestehenden PDFs bietetIronPDFdie Klasse TextStamper, die eine präzise Steuerung der Positionierung 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!)

Vor (GemBox PDF) - Jede Zelle zählt für die Begrenzung auf 20 Absätze:

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 (4 paragraphs)
    var headers = new[] { "Product", "Price", "Qty", "Total" };
    for (int i = 0; i < headers.Length; i++)
    {
        var text = new PdfFormattedText { Text = headers[i], FontSize = 12 };
        page.Content.DrawText(text, new PdfPoint(xPositions[i], y));
    }
    y -= 20;

    // Data rows (4 paragraphs per row!)
    // Can only add a few rows before hitting 20-paragraph limit!

    document.Save("products.pdf");
}
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 (4 paragraphs)
    var headers = new[] { "Product", "Price", "Qty", "Total" };
    for (int i = 0; i < headers.Length; i++)
    {
        var text = new PdfFormattedText { Text = headers[i], FontSize = 12 };
        page.Content.DrawText(text, new PdfPoint(xPositions[i], y));
    }
    y -= 20;

    // Data rows (4 paragraphs per row!)
    // Can only add a few rows before hitting 20-paragraph limit!

    document.Save("products.pdf");
}
$vbLabelText   $csharpLabel

Nach (IronPDF) - Keine Einschränkungen, 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");
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");
$vbLabelText   $csharpLabel

Dies ist die wichtigste Verbesserung bei der GemBox-PDF-Migration. Tabellen, die in der kostenlosen Version von GemBox PDFnicht möglich waren, funktionieren inIronPDFmit voller CSS-Styling-Unterstützung perfekt.


Kritische Hinweise zur Migration

Koordinate zu CSS-Positionierung

Wenn Sie eine pixelgenaue Positionierung benötigen (ähnlich dem Koordinatensystem von GemBox PDF), verwenden Sie die absolute CSS-Positionierung:

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

Seitenindizierung

Sowohl GemBox PDFals auchIronPDFverwenden 0-indizierte Seiten, so dass dieser Aspekt der Migration einfach zu bewerkstelligen ist:

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

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

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

Sicherheitseinstellungen

// GemBox PDF
document.SaveOptions.SetPasswordEncryption(userPassword, ownerPassword);

// IronPDF
pdf.SecuritySettings.UserPassword = "userPassword";
pdf.SecuritySettings.OwnerPassword = "ownerPassword";
// GemBox PDF
document.SaveOptions.SetPasswordEncryption(userPassword, ownerPassword);

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

Fehlerbehebung

Ausgabe 1: PdfFormattedText nicht gefunden

Problem: PdfFormattedTextexistiert nicht in IronPDF.

Lösung: HTML mit CSS-Styling verwenden:

// GemBox PDF
var text = new PdfFormattedText { Text = "Hello", FontSize = 24 };

// IronPDF
var html = "<p style='font-size:24px;'>Hello</p>";
var pdf = renderer.RenderHtmlAsPdf(html);
// GemBox PDF
var text = new PdfFormattedText { Text = "Hello", FontSize = 24 };

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

Ausgabe 2: DrawText-Methode nicht gefunden

Problem: page.Content.DrawText() ist 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);
// 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);
$vbLabelText   $csharpLabel

Thema 3: Unterschiede beim Laden von Dokumenten

Problem: PdfDocument.Load() nicht gefunden.

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

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

// IronPDF
var pdf = PdfDocument.FromFile("input.pdf");
// GemBox PDF
var doc = PdfDocument.Load("input.pdf");

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

Ausgabe 4: Unterschiede zwischen den Speichermethoden

Problem: Die Signatur document.Save() Methode ist unterschiedlich.

Lösung: Verwenden Sie SaveAs() :

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

// IronPDF
pdf.SaveAs("output.pdf");
// GemBox PDF
document.Save("output.pdf");

// IronPDF
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • Erfassung aller GemBox-PDF-Verwendungen im Quellcode
  • Identifizieren Sie koordinatenbasierte Layouts, die eine HTML-Konvertierung benötigen.
  • Prüfen Sie die aktuellen Absatzbegrenzungen, die Ihren Code beeinflussen.
  • IronPDF-Lizenzschlüssel erhalten
  • Migrationszweig in der Versionskontrolle erstellen

Code-Migration

  • Entfernen Sie das GemBox PDFNuGet-Paket: dotnet remove package GemBox.Pdf
  • Installieren Sie das IronPdf NuGet-Paket: dotnet add package IronPdf
  • Namespace-Importe aktualisieren
  • Ersetzen Sie ComponentInfo.SetLicense()durch IronPdf.License.LicenseKey
  • Konvertiere PdfDocument.Load() in PdfDocument.FromFile()
  • Konvertiere document.Save() in pdf.SaveAs()
  • Ersetzen Sie koordinatenbasierten Text durch HTML-Inhalt
  • Konvertierung PdfFormattedTextin HTML mit CSS-Styling
  • Aktualisieren Sie die Zusammenführungsoperationen, sodass sie PdfDocument.Merge()verwenden.

Testen

  • Überprüfen Sie, ob alle Dokumente korrekt generiert wurden.
  • Sicherstellen, dass das Erscheinungsbild des Dokuments den Erwartungen entspricht
  • Generierung von Testtabellen (bisher durch die 20-Absatz-Regel 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

  • GemBox PDF-Lizenzschlüssel entfernen
  • Dokumentation aktualisieren
  • Schulung des Teams zum HTML/CSS-Ansatz für PDFs
  • Genießen Sie unbegrenzte Inhalte ohne Absatzbegrenzung!

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