Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Wie man von Nutrient.io zu IronPDF in C# migriert

Migrieren Sie von Nutrient.io zu IronPDF: Vollständiger C#-Migrationsleitfaden

Die Migration von Nutrient.io (ehemals PSPDFKit) zuIronPDFvereinfacht Ihren .NET-PDF-Workflow durch den Wechsel von einer komplexen Document-Intelligence-Plattform mit Async-First-Patterns zu einer fokussierten PDF-Bibliothek mit einfachen synchronen APIs. Dieser Leitfaden bietet einen umfassenden, schrittweisen Migrationspfad, der den Plattform-Overhead eliminiert und gleichzeitig alle wesentlichen PDF-Funktionen beibehält.

Warum von Nutrient.io zuIronPDFmigrieren

Das Problem der Plattformkomplexität

Nutrient.io (ehemals PSPDFKit) hat sich von einem PDF-SDK zu einer umfassenden "Document Intelligence Platform" entwickelt Dieser Wandel erweitert zwar die Möglichkeiten, stellt aber Teams, die einfach nur zuverlässige PDF-Vorgänge benötigen, vor große Herausforderungen:

  1. Platform Overengineering: Was einst ein PDF-SDK war, ist jetzt eine vollständige Dokumentenintelligenz-Plattform mit KI-Funktionen und Funktionen für den Dokumenten-Workflow, die für einfache PDF-Aufgaben möglicherweise unnötig sind.

  2. Preisgestaltung für Unternehmen: Nutrient.io richtet sich an große Unternehmen mit undurchsichtigen Preisen, die eine Kontaktaufnahme mit dem Vertrieb erfordern. Dies stellt eine Hürde für kleine bis mittelgroße Teams dar und erschwert die Budgetplanung.

  3. Markenverwirrung: Die Umstellung von PSPDFKit → Nutrient hat zu Problemen in der Dokumentation geführt, wo Verweise auf beide Namen existieren. Paketnamen verwenden möglicherweise immer noch PSPDFKit, und die Migrationspfade während des Übergangs sind unklar.

  4. Async-First-Komplexität: Alles in Nutrient.io erfordert async/await-Muster. Selbst einfache Operationen benötigen PdfProcessor.CreateAsync() für die Initialisierung und asynchrone Methoden für grundlegende Aufgaben, was bei synchronen Arbeitsabläufen einen zusätzlichen Aufwand bedeutet.

  5. Schwere Abhängigkeiten: Die vollständige Plattform erfordert mehr Ressourcen mit einem größeren Paket-Footprint, mehr Initialisierungszeit und zusätzlicher Konfiguration.

Nutrient.io vsIronPDFVergleich

Aspekt Nutrient.io (PSPDFKit) IronPDF
Schwerpunkt Document Intelligence-Plattform PDF-Bibliothek
Preisgestaltung Unternehmen (Kontakt zum Vertrieb) Transparent, veröffentlicht
Architektur Komplexe Plattform Einfache Bibliothek
API-Stil Async-first Syncmit asynchronen Optionen
Abhängigkeiten Schwer Leichtgewichtig
Konfiguration Komplexe Konfigurationsobjekte Unkomplizierte Eigenschaften
Lernkurve Steep (Plattform) Gentle (Bibliothek)
Zielbenutzer Unternehmen Alle Teamgrößen

Für Teams, die die Einführung von .NET 10 und C# 14 bis zum Jahr 2025 bzw. 2026 planen, bietetIronPDFeine einfachere Grundlage, die sich ohne den Overhead einer vollständigen Document Intelligence-Plattform sauber integrieren lässt.


Bevor Sie beginnen

Voraussetzungen

  1. .NET-Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
  2. NuGet Access: Fähigkeit, NuGet-Pakete zu installieren
  3. IronPDF Lizenz: Beziehen Sie Ihren Lizenzschlüssel von ironPdf.com

NuGet-Paketänderungen

# Remove Nutrient/PSPDFKit packages
dotnet remove package PSPDFKit.NET
dotnet remove package PSPDFKit.PDF
dotnet remove package Nutrient
dotnet remove package Nutrient.PDF

# Install IronPDF
dotnet add package IronPdf
# Remove Nutrient/PSPDFKit packages
dotnet remove package PSPDFKit.NET
dotnet remove package PSPDFKit.PDF
dotnet remove package Nutrient
dotnet remove package Nutrient.PDF

# Install IronPDF
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup (Program.cs or Startup.cs)
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nutrient.io-Verwendung identifizieren

# Find all Nutrient/PSPDFKit references
grep -r "PSPDFKit\|Nutrient\|PdfProcessor\|PdfConfiguration" --include="*.cs" .
# Find all Nutrient/PSPDFKit references
grep -r "PSPDFKit\|Nutrient\|PdfProcessor\|PdfConfiguration" --include="*.cs" .
SHELL

Komplette API-Referenz

Initialisierungs-Zuordnungen

Nutrient.io (PSPDFKit) IronPDF Notizen
Warten Sie PdfProcessor.CreateAsync() new ChromePdfRenderer() Keine Asynchronität erforderlich
processor.Dispose() (automatisch oder manuell)_ Einfacher Lebenszyklus
new PdfConfiguration { ... } renderer.RenderingOptions Eigenschaftsbasiert

Zuordnungen beim Laden von Dokumenten

Nutrient.io (PSPDFKit) IronPDF Notizen
Warte auf processor.OpenAsync(Pfad) PdfDocument.FromFile(path) Standardmäßig synchronisieren
Document.LoadFromStream(stream) PdfDocument.FromStream(stream) Stream-Unterstützung
Document.LoadFromBytes(bytes) new PdfDocument(bytes) Byte-Array

Zuordnungen für die PDF-Erzeugung

Nutrient.io (PSPDFKit) IronPDF Notizen
await processor.GeneratePdfFromHtmlStringAsync(html) renderer.RenderHtmlAsPdf(html) Sync-Methode
await processor.GeneratePdfFromUrlAsync(url) renderer.RenderUrlAsPdf(url) Direkte URL
await processor.GeneratePdfFromFileAsync(path) renderer.RenderHtmlFileAsPdf(path) HTML-Datei

Zuordnungen von Dokumentenoperationen

Nutrient.io (PSPDFKit) IronPDF Notizen
Warten Sie processor.MergeAsync(docs) PdfDocument.Merge(pdfs) Sync
document.PageCount pdf.PageCount Gleiches Muster
await document.SaveAsync(path) pdf.SaveAs(Pfad) Sync
document.ToBytes() pdf.BinaryData Byte-Array

Anmerkungen und Wasserzeichen-Zuordnungen

Nutrient.io (PSPDFKit) IronPDF Notizen
await document.AddAnnotationAsync(index, annotation) pdf.ApplyWatermark(html) HTML-basiert
new TextAnnotation("Text") HTML im Wasserzeichen Mehr Flexibilität
Anmerkung.Deckkraft = 0.5 CSS Deckkraft: 0.5 CSS-Styling
Anmerkung.FontSize = 48 CSS Schriftgröße: 48px CSS-Styling

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von HTML in PDF

Vor (Nutrient.io):

// NuGet: Install-Package PSPDFKit.Dotnet
using PSPDFKit.Pdf;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        using var processor = await PdfProcessor.CreateAsync();
        var document = await processor.GeneratePdfFromHtmlStringAsync(htmlContent);
        await document.SaveAsync("output.pdf");
    }
}
// NuGet: Install-Package PSPDFKit.Dotnet
using PSPDFKit.Pdf;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        using var processor = await PdfProcessor.CreateAsync();
        var document = await processor.GeneratePdfFromHtmlStringAsync(htmlContent);
        await document.SaveAsync("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var htmlContent = "<html><body><h1>Hello World</h1></body></html>";

        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("output.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Der Ansatz von Nutrient.io erfordert mehrere asynchrone Schritte: das Erstellen eines PdfProcessors mit await PdfProcessor.CreateAsync(), dann der Aufruf von await processor.GeneratePdfFromHtmlStringAsync() und schließlich await document.SaveAsync(). Die gesamte Methode muss als async Task gekennzeichnet sein, und der Prozessor benötigt eine using-Anweisung zur ordnungsgemäßen Entsorgung.

IronPDF vereinfacht dies dramatisch. Erstellen Sie einen ChromePdfRenderer, rufen Sie RenderHtmlAsPdf() auf, und speichern Sie mit SaveAs(). Kein async/await erforderlich, kein Prozessor-Lebenszyklus zu verwalten und keine benutzen Blöcke für einfache Operationen erforderlich. Dieses Muster ist für Entwickler, die keine asynchronen Muster für ihren PDF-Workflow benötigen, intuitiver. Weitere Rendering-Optionen finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Zusammenführen mehrerer PDFs

Vor (Nutrient.io):

// NuGet: Install-Package PSPDFKit.Dotnet
using PSPDFKit.Pdf;
using System.Threading.Tasks;
using System.Collections.Generic;

class Program
{
    static async Task Main()
    {
        using var processor = await PdfProcessor.CreateAsync();

        var document1 = await processor.OpenAsync("document1.pdf");
        var document2 = await processor.OpenAsync("document2.pdf");

        var mergedDocument = await processor.MergeAsync(new List<PdfDocument> { document1, document2 });
        await mergedDocument.SaveAsync("merged.pdf");
    }
}
// NuGet: Install-Package PSPDFKit.Dotnet
using PSPDFKit.Pdf;
using System.Threading.Tasks;
using System.Collections.Generic;

class Program
{
    static async Task Main()
    {
        using var processor = await PdfProcessor.CreateAsync();

        var document1 = await processor.OpenAsync("document1.pdf");
        var document2 = await processor.OpenAsync("document2.pdf");

        var mergedDocument = await processor.MergeAsync(new List<PdfDocument> { document1, document2 });
        await mergedDocument.SaveAsync("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(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(pdf1, pdf2);
        merged.SaveAs("merged.pdf");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Der Nutrient.io-Zusammenführungsvorgang erfordert die Erstellung eines Prozessors mit await PdfProcessor.CreateAsync(), das Öffnen jedes Dokuments mit separaten await processor.OpenAsync()-Aufrufen, die Erstellung einer Liste<PdfDocument>, den Aufruf von await processor.MergeAsync() mit dieser Liste und schließlich await mergedDocument.SaveAsync(). Das sind fünf asynchrone Operationen für eine einfache Zusammenführung.

IronPDF reduziert dies auf vier synchrone Zeilen: Laden jedes PDF mit PdfDocument.FromFile(), Zusammenführen mit der statischen Methode PdfDocument.Merge() und Speichern. Kein Prozessor-Lebenszyklus, keine Listenerstellung erforderlich (Sie können Dokumente direkt übergeben) und kein asynchroner Overhead. Erfahren Sie mehr über das Zusammenführen und Aufteilen von PDFs.

Beispiel 3: Hinzufügen von Wasserzeichen

Vor (Nutrient.io):

// NuGet: Install-Package PSPDFKit.Dotnet
using PSPDFKit.Pdf;
using PSPDFKit.Pdf.Annotation;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var processor = await PdfProcessor.CreateAsync();
        var document = await processor.OpenAsync("document.pdf");

        for (int i = 0; i < document.PageCount; i++)
        {
            var watermark = new TextAnnotation("CONFIDENTIAL")
            {
                Opacity = 0.5,
                FontSize = 48
            };
            await document.AddAnnotationAsync(i, watermark);
        }

        await document.SaveAsync("watermarked.pdf");
    }
}
// NuGet: Install-Package PSPDFKit.Dotnet
using PSPDFKit.Pdf;
using PSPDFKit.Pdf.Annotation;
using System.Threading.Tasks;

class Program
{
    static async Task Main()
    {
        using var processor = await PdfProcessor.CreateAsync();
        var document = await processor.OpenAsync("document.pdf");

        for (int i = 0; i < document.PageCount; i++)
        {
            var watermark = new TextAnnotation("CONFIDENTIAL")
            {
                Opacity = 0.5,
                FontSize = 48
            };
            await document.AddAnnotationAsync(i, watermark);
        }

        await document.SaveAsync("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("document.pdf");

        pdf.ApplyWatermark("<h1 style='color:gray;opacity:0.5;'>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("document.pdf");

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

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

Dieses Beispiel verdeutlicht einen grundlegenden architektonischen Unterschied. Nutrient.io verwendet einen anmerkungsbasierten Ansatz: Sie erstellen ein TextAnnotation-Objekt mit Eigenschaften wie Opacity und FontSize und rufen dann in einer Schleife jede Seite auf, indem Sie await document.AddAnnotationAsync(i, watermark) für jede Seite aufrufen. Dazu ist es erforderlich, das Anmerkungssystem zu verstehen und die Schleife selbst zu verwalten.

IronPDF verwendet einen HTML-basierten Ansatz: Die Methode ApplyWatermark() akzeptiert einen HTML-String mit CSS-Styling. Das Wasserzeichen wird automatisch auf alle Seiten in einem einzigen Aufruf angewendet. Sie steuern das Erscheinungsbild über bekannte CSS-Eigenschaften (Farbe, Deckkraft, Schriftgröße) und nicht über annotationsspezifische Objekteigenschaften. Dieser Ansatz bietet mehr Flexibilität bei der Gestaltung - Sie können beliebiges HTML/CSS verwenden, einschließlich Farbverläufen, Bildern und komplexen Layouts. Siehe die Wasserzeichen-Dokumentation für fortgeschrittene Beispiele.


Kritische Hinweise zur Migration

Async zu SyncKonvertierung

Die wichtigste Änderung ist das Entfernen unnötiger async/await-Muster:

// Nutrient.io: Async-first
using var processor = await PdfProcessor.CreateAsync();
var document = await processor.GeneratePdfFromHtmlStringAsync(html);
await document.SaveAsync("output.pdf");

// IronPDF: Standardmäßig synchronisieren(async available when needed)
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
// Nutrient.io: Async-first
using var processor = await PdfProcessor.CreateAsync();
var document = await processor.GeneratePdfFromHtmlStringAsync(html);
await document.SaveAsync("output.pdf");

// IronPDF: Standardmäßig synchronisieren(async available when needed)
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Wenn Sie asynchrone Operationen benötigen, bietetIronPDFasynchrone Varianten wie RenderHtmlAsPdfAsync().

Prozessor-Lebenszyklus-Eliminierung

Nutrient.io erfordert die Erstellung und Entsorgung von Prozessoren:

// Nutrient.io: Processor lifecycle management
using var processor = await PdfProcessor.CreateAsync();
// ... use processor ...
// Processor disposed at end of using block

// IronPDF: No processor lifecycle
var renderer = new ChromePdfRenderer();
// Reuse renderer, no complex lifecycle management
// Nutrient.io: Processor lifecycle management
using var processor = await PdfProcessor.CreateAsync();
// ... use processor ...
// Processor disposed at end of using block

// IronPDF: No processor lifecycle
var renderer = new ChromePdfRenderer();
// Reuse renderer, no complex lifecycle management
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Änderung von Konfigurationsmustern

Nutrient.io verwendet Konfigurationsobjekte;IronPDFverwendet Eigenschaften:

// Nutrient.io: Config object
var config = new PdfConfiguration
{
    PageSize = PageSize.A4,
    Margins = new Margins(20, 20, 20, 20)
};
var doc = await processor.GeneratePdfFromHtmlStringAsync(html, config);

// IronPDF: Properties on RenderingOptions
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);
// Nutrient.io: Config object
var config = new PdfConfiguration
{
    PageSize = PageSize.A4,
    Margins = new Margins(20, 20, 20, 20)
};
var doc = await processor.GeneratePdfFromHtmlStringAsync(html, config);

// IronPDF: Properties on RenderingOptions
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
renderer.RenderingOptions.MarginTop = 20;
renderer.RenderingOptions.MarginBottom = 20;
renderer.RenderingOptions.MarginLeft = 20;
renderer.RenderingOptions.MarginRight = 20;
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Anmerkungen zu HTML-Wasserzeichen

Ersetzen Sie Anmerkungsobjekte durch HTML-Strings:

// Nutrient.io: Annotation object with properties
new TextAnnotation("CONFIDENTIAL") { Opacity = 0.5f, FontSize = 48 }

// IronPDF: HTML with CSS
"<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>"
// Nutrient.io: Annotation object with properties
new TextAnnotation("CONFIDENTIAL") { Opacity = 0.5f, FontSize = 48 }

// IronPDF: HTML with CSS
"<h1 style='opacity:0.5; font-size:48px;'>CONFIDENTIAL</h1>"
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Behandlung von Seitenzahlen

Nutrient.io erfordert eine manuelle Seitenzählung;IronPDFverfügt über integrierte Platzhalter:

// Nutrient.io: Manual loop and page counting
for (int i = 0; i < doc.PageCount; i++)
{
    var footer = new TextAnnotation($"Page {i + 1} of {doc.PageCount}");
    await doc.AddAnnotationAsync(i, footer);
}

// IronPDF: Built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "Page {page} of {total-pages}"
};
// Nutrient.io: Manual loop and page counting
for (int i = 0; i < doc.PageCount; i++)
{
    var footer = new TextAnnotation($"Page {i + 1} of {doc.PageCount}");
    await doc.AddAnnotationAsync(i, footer);
}

// IronPDF: Built-in placeholders
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = "Page {page} of {total-pages}"
};
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Fehlerbehebung

Ausgabe 1: PdfProcessor nicht gefunden

Problem: die Klasse PdfProcessor existiert nicht in IronPDF.

Lösung: Verwenden Sie ChromePdfRenderer:

// Nutrient.io
using var processor = await PdfProcessor.CreateAsync();

// IronPDF
var renderer = new ChromePdfRenderer();
// Nutrient.io
using var processor = await PdfProcessor.CreateAsync();

// IronPDF
var renderer = new ChromePdfRenderer();
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ausgabe 2: GeneratePdfFromHtmlStringAsync nicht gefunden

Problem: Die Methode Async HTML existiert nicht.

Lösung: Verwenden Sie RenderHtmlAsPdf():

// Nutrient.io
var document = await processor.GeneratePdfFromHtmlStringAsync(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
// Nutrient.io
var document = await processor.GeneratePdfFromHtmlStringAsync(html);

// IronPDF
var pdf = renderer.RenderHtmlAsPdf(html);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ausgabe 3: TextAnnotation nicht gefunden

Problem: InIronPDFgibt es keine Annotationsklassen.

Lösung: Verwenden Sie HTML-basierte Wasserzeichen:

// Nutrient.io
var watermark = new TextAnnotation("DRAFT") { Opacity = 0.5 };
await document.AddAnnotationAsync(0, watermark);

// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>");
// Nutrient.io
var watermark = new TextAnnotation("DRAFT") { Opacity = 0.5 };
await document.AddAnnotationAsync(0, watermark);

// IronPDF
pdf.ApplyWatermark("<div style='opacity:0.5;'>DRAFT</div>");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Ausgabe 4: MergeAsync nicht gefunden

Problem: Async merge method doesn't exist.

Lösung: Verwenden Sie static PdfDocument.Merge():

// Nutrient.io
var mergedDocument = await processor.MergeAsync(documentList);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
// Nutrient.io
var mergedDocument = await processor.MergeAsync(documentList);

// IronPDF
var merged = PdfDocument.Merge(pdf1, pdf2);
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Migrations-Checkliste

Vor der Migration

  • [Inventarisierung aller Verwendungen von PSPDFKit/Nutrient in der Codebasis
  • [Dokumentieren Sie asynchrone Muster, die möglicherweise angepasst werden müssen
  • [Auflistung aller Konfigurationsobjekte und ihrer Eigenschaften
  • [Identifizieren von annotationsbasierten Merkmalen (Wasserzeichen, Kopfzeilen)
  • [Anforderungen an die Formularbearbeitung überprüfen
  • [IronPDF-Lizenzschlüssel erhalten

Paketänderungen

  • [Entfernen Sie das NuGet-Paket PSPDFKit.NET
  • [Entfernen Sie das NuGet-Paket Nutrient
  • [Installieren Sie das NuGet-Paket IronPdf: dotnet add package IronPdf
  • [Namespace-Importe aktualisieren

Code-Änderungen

  • [Lizenzschlüsselkonfiguration beim Starten hinzufügen
  • [Ersetzen Sie PdfProcessor.CreateAsync() durch new ChromePdfRenderer()
  • [Ersetzen Sie processor.GeneratePdfFromHtmlStringAsync() mit renderer.RenderHtmlAsPdf()
  • [Ersetzen Sie processor.MergeAsync() mit PdfDocument.Merge()
  • [Konvertieren von TextAnnotation-Wasserzeichen in HTML-Wasserzeichen
  • [Ersetzen Sie Konfigurationsobjekte durch RenderingOptions-Eigenschaften
  • [Kopf-/Fußzeile aktualisieren, um HtmlHeaderFooter mit Platzhaltern zu verwenden
  • [Entfernen Sie unnötige async/await-Muster

Post-Migration

  • [Entfernen Sie async/await, wo es nicht mehr benötigt wird
  • [Regressionstests durchführen und PDF-Ausgabe vergleichen
  • [Überprüfen Sie Kopf- und Fußzeilen mit Seitenzahlen
  • [Wasserzeichen-Rendering testen
  • [CI/CD-Pipeline aktualisieren

Abschluss

Die Migration von Nutrient.io zuIronPDFvereinfacht Ihren PDF-Workflow, indem eine komplexe Document Intelligence-Plattform durch eine fokussierte PDF-Bibliothek ersetzt wird. Die Migration beseitigt die async-first-Komplexität, die Verwaltung des Lebenszyklus von Prozessoren und annotationsbasierte Ansätze zugunsten von einfachen synchronen APIs und HTML-basiertem Styling.

Die wichtigsten Änderungen bei dieser Migration sind:

  1. Architektur: Document Intelligence Platform → Fokussierte PDF-Bibliothek
  2. API-Stil: Async-first→ Syncmit asynchronen Optionen
  3. Initialisierung: Warten Sie PdfProcessor.CreateAsync()new ChromePdfRenderer()
  4. HTML zu PDF: GeneratePdfFromHtmlStringAsync()RenderHtmlAsPdf()
  5. Merging: processor.MergeAsync(list)PdfDocument.Merge(pdf1, pdf2)
  6. Wasserzeichen: TextAnnotation-Objekte → HTML-Strings mit CSS
  7. Seitenzahlen: Manuelle Schleifen → {page}und {total-pages}Platzhalter

Entdecken Sie die vollständige IronPDF-Dokumentation, Tutorials und API-Referenz, um Ihre Nutrient.io-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