Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von PDFView4NET zu IronPDF in C#

Die Migration von PDFView4NETzuIronPDFverwandelt Ihren PDF-Workflow von einer UI-fokussierten Anzeigekomponente in eine umfassende Bibliothek zur PDF-Erzeugung und -Bearbeitung. Dieser Leitfaden bietet einen vollständigen, schrittweisen Migrationspfad, der die serverseitige Verarbeitung, die Unterstützung von Webanwendungen und das vollständige PDF Lifecycle Management ermöglicht, das PDFView4NETnicht bieten kann.

Warum von PDFView4NETzuIronPDFmigrieren

Verstehen Sie PDFView4NET

PDFView4NET ist eine beliebte Wahl für Entwickler, die sich hauptsächlich mit PDF-Anzeigefunktionen in C# beschäftigen. PDFView4NETbietet robuste PDF-Anzeigesteuerelemente, die auf Windows Forms (WinForms) und Windows Presentation Foundation (WPF) Anwendungen zugeschnitten sind. Der Schwerpunkt der Bibliothek liegt auf der nahtlosen Anzeige von PDF-Dateien, was sie zu einer bevorzugten Option für die Entwicklung von Desktop-Anwendungen macht.

Trotz seiner Stärken weist PDFView4NETEinschränkungen auf, die Entwickler dazu veranlassen könnten, sich mit umfassenderen Bibliotheken wieIronPDFzu befassen.IronPDFbietet eine All-in-One-PDF-Lösung, die Funktionen zur Erstellung, Anzeige und Bearbeitung von PDF-Dateien umfasst, ohne auf bestimmte UI-Komponenten beschränkt zu sein.

Die Nur-Ansicht-Beschränkung

PDFView4NET ist in erster Linie eine UI Anzeigekomponente für WinFormsund WPFAnwendungen. Der Schwerpunkt liegt auf der Anzeige von PDFs und nicht auf deren Erstellung oder Bearbeitung. Hauptgründe für die Migration:

  1. Einschränkungen (nur Ansicht): PDFView4NETist für die Anzeige und nicht für die Erstellung von PDFs konzipiert.

  2. Abhängigkeit vom UI-Framework: Erfordert einen WinForms- oder WPF-Kontext. Die Anforderung an WinForms- oder WPF-Umgebungen kann die Verwendung in anderen Kontexten einschränken, wie z.B. Konsolenanwendungen oder Webservices, die von PDFView4NETnicht unterstützt werden.

  3. Kein HTML zu PDF: HTML oder URLs können nicht in PDF konvertiert werden. Die Bibliothek konzentriert sich ausschließlich auf die Anzeige von PDF-Dateien und bietet keine integrierten Funktionen zur Erstellung oder Bearbeitung von PDF-Dateien.

  4. Eingeschränkte Bearbeitungsmöglichkeiten: Grundlegende Bearbeitungsmöglichkeiten im Vergleich zum vollen Funktionsumfang von IronPDF.

  5. Keine serverseitige Unterstützung: Kann nicht in Webdiensten oder AzureFunctions ausgeführt werden.

  6. Legacy-Technologie: Weniger aktive Weiterentwicklung und Aktualisierungen moderner Funktionen.

PDFView4NETvsIronPDFVergleich

Feature PDFView4NET IronPDF
Primärer Schwerpunkt PDF-Ansicht Vollständige PDF-Lösung (Erstellen, Anzeigen, Bearbeiten)
UI-Frameworks erforderlich WinForms, WPF Keine
PDF-Erstellung Nein Ja
PDF-Bearbeitung Begrenzt (Anmerkungen) Ja
Server-Side Nicht unterstützt Volle Unterstützung
Webanwendungen Nein Ja
Konsolenanwendungen Beschränkt Volle Unterstützung
Azure/Docker Nein Ja
HTML zu PDF Nein Ja
Plattformübergreifender Kontext Nein Ja
Leichtigkeit der Integration Medium Hoch

IronPDF zeichnet sich durch seine Vielseitigkeit und seinen umfassenden Funktionsumfang aus, was es besonders für Entwickler interessant macht, die einen ganzheitlichen Ansatz für die PDF-Verarbeitung in C# benötigen. Die Bibliothek unterstützt die Erstellung, Anzeige und Bearbeitung von PDF-Dateien und deckt damit Anwendungsfälle ab, die weit über die Anzeigefunktionen von PDFView4NEThinausgehen.

Für Teams, die die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietetIronPDFKontextunabhängigkeit - es kann in verschiedenen Kontexten verwendet werden, einschließlich Webanwendungen, Diensten und Konsolenanwendungen. Diese Flexibilität ist entscheidend für Projekte, die plattformübergreifende Unterstützung und verschiedene Einsatzszenarien erfordern.


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-Zugriff: Möglichkeit zur Installation von NuGet-Paketen
  3. IronPDF-Lizenz: Ihren Lizenzschlüssel erhalten Sie auf ironpdf.com.

NuGet-Paketänderungen

<!-- Remove PDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />

<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" />
<!-- Remove PDFView4NET-->
<PackageReference Include="O2S.Components.PDFView4NET" Version="*" Remove />

<!-- AddIronPDF-->
<PackageReference Include="IronPdf" Version="2024.*" />
XML

Oder über CLI:

dotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdf
dotnet remove package O2S.Components.PDFView4NET
dotnet add package IronPdf
SHELL

Lizenz-Konfiguration

// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
$vbLabelText   $csharpLabel

Komplette API-Referenz

Namensraumänderungen

// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;

// After: IronPDF
using IronPdf;
// Before: PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using O2S.Components.PDFView4NET.Printing;

// After: IronPDF
using IronPdf;
$vbLabelText   $csharpLabel

Kern-API-Zuordnungen

PDFView4NET IronPDF Notizen
PDFFile.Open(Pfad) PdfDocument.FromFile(path) PDF laden
PDFFile.Open(stream) PdfDocument.FromStream(stream) Vom Stream laden
pdfFile.GetPage(index) pdf.Seiten[index] Seite aufrufen
pdfFile.PageCount pdf.PageCount Anzahl der Seiten
PDFPrintDocument pdf.Print() PDF ausdrucken
pdfFile.Close() pdf.Dispose() Bereinigung
HtmlToPdfConverter ChromePdfRenderer HTML zu PDF
Nicht anwendbar PdfDocument.Merge() PDFs zusammenführen
Nicht anwendbar pdf.ApplyWatermark() Wasserzeichen hinzufügen
Nicht anwendbar pdf.SecuritySettings Passwortschutz

Beispiele für die Code-Migration

Beispiel 1: Konvertierung von URL in PDF

Vor (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.NavigateUri = new Uri("https://example.com");
        converter.ConvertHtmlToPdf();
        converter.SavePdf("output.pdf");
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.NavigateUri = new Uri("https://example.com");
        converter.ConvertHtmlToPdf();
        converter.SavePdf("output.pdf");
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("output.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFView4NET verwendet HtmlToPdfConvertermit der NavigateUri-Eigenschaft, die auf ein Uri-Objekt gesetzt ist, gefolgt von einem Aufruf von ConvertHtmlToPdf() und dann SavePdf().IronPDFvereinfacht dies zu einem einzigen ChromePdfRenderermit RenderUrlAsPdf(), der eine String-URL direkt akzeptiert und ein PdfDocument zurückgibt, das Sie mit SaveAs() speichern. Der Ansatz vonIronPDFbietet eine sauberere Syntax und eine bessere Integration in moderne .NET-Anwendungen. Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.

Beispiel 2: Konvertierung von HTML-Strings in PDF

Vor (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.HtmlContent = htmlContent;
        converter.ConvertHtmlToPdf();
        converter.SavePdf("document.pdf");
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using O2S.Components.PDFView4NET.HtmlToPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        HtmlToPdfConverter converter = new HtmlToPdfConverter();
        converter.HtmlContent = htmlContent;
        converter.ConvertHtmlToPdf();
        converter.SavePdf("document.pdf");
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        string htmlContent = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>";
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs("document.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFView4NET verwendet die Eigenschaft HtmlContent, um die HTML-Zeichenfolge zu setzen, und erfordert dann den Aufruf von ConvertHtmlToPdf() gefolgt von SavePdf().IronPDFbietet eine flüssigere API, bei der RenderHtmlAsPdf() den HTML-String direkt akzeptiert und ein PdfDocument zurückgibt. Die Methodennamen sind intuitiver: RenderHtmlAsPdf vs ConvertHtmlToPdf. Erfahren Sie mehr in unseren Tutorials.

Beispiel 3: Textextraktion aus PDF

Vor (PDFView4NET):

// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (FileStream fs = File.OpenRead("document.pdf"))
        {
            PDFDocument document = new PDFDocument(fs);
            string text = "";
            for (int i = 0; i < document.Pages.Count; i++)
            {
                text += document.Pages[i].ExtractText();
            }
            Console.WriteLine(text);
        }
    }
}
// NuGet: Install-Package O2S.Components.PDFView4NET
using O2S.Components.PDFView4NET;
using System;
using System.IO;

class Program
{
    static void Main()
    {
        using (FileStream fs = File.OpenRead("document.pdf"))
        {
            PDFDocument document = new PDFDocument(fs);
            string text = "";
            for (int i = 0; i < document.Pages.Count; i++)
            {
                text += document.Pages[i].ExtractText();
            }
            Console.WriteLine(text);
        }
    }
}
$vbLabelText   $csharpLabel

Nach (IronPDF):

// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var pdf = PdfDocument.FromFile("document.pdf");
        string text = pdf.ExtractAllText();
        Console.WriteLine(text);
    }
}
$vbLabelText   $csharpLabel

Dieses Beispiel verdeutlicht einen bedeutenden API-Unterschied. PDFView4NETerfordert das manuelle Erstellen eines FileStream, das Instanziieren von PDFDocument mit dem Stream, dann das Durchlaufen einer Schleife durch document.Pages.Count und das Verketten von Pages[i].ExtractText() für jede Seite.

IronPDF vereinfacht dies drastisch: PdfDocument.FromFile() lädt die PDF-Datei direkt aus einem Pfad, und ExtractAllText() extrahiert Text aus allen Seiten in einem einzigen Methodenaufruf. Kein manuelles Stream-Management, keine Schleifen, keine String-Verkettung - nur zwei Zeilen Code.


Kritische Hinweise zur Migration

Änderung der Konverterklasse

PDFView4NET verwendet HtmlToPdfConverter;IronPDFverwendet ChromePdfRenderer:

// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
// PDFView4NET
HtmlToPdfConverter converter = new HtmlToPdfConverter();

// IronPDF
var renderer = new ChromePdfRenderer();
$vbLabelText   $csharpLabel

Eigenschaftsbasierte gegenüber methodenbasierter API

PDFView4NET setzt die Eigenschaften vor der Konvertierung:

// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");

// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
// PDFView4NET: Set properties, then convert
converter.HtmlContent = htmlContent;
converter.NavigateUri = new Uri(url);
converter.ConvertHtmlToPdf();
converter.SavePdf("output.pdf");

// IronPDF: Method parameters with fluent API
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");
$vbLabelText   $csharpLabel

Änderung beim Laden des Dokuments

// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
    PDFDocument document = new PDFDocument(fs);
}

// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
// PDFView4NET: Requires FileStream
using (FileStream fs = File.OpenRead("document.pdf"))
{
    PDFDocument document = new PDFDocument(fs);
}

// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");
$vbLabelText   $csharpLabel

Seitenzugriff ändern

// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
    document.Pages[i].ExtractText();
}

// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);
// PDFView4NET: document.Pages.Count and Pages[i]
for (int i = 0; i < document.Pages.Count; i++)
{
    document.Pages[i].ExtractText();
}

// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);
$vbLabelText   $csharpLabel

Methodenänderung speichern

// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");

// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
// PDFView4NET: SavePdf()
converter.SavePdf("output.pdf");

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

Neue Funktionen nach der Migration

Nach der Migration aufIronPDFerhalten Sie Funktionen, die PDFView4NETnicht bieten kann:

PDF-Zusammenführung

var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("complete_book.pdf");
$vbLabelText   $csharpLabel

Wasserzeichen mit HTML

var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
    <div style='
        font-size: 72pt;
        color: rgba(255, 0, 0, 0.2);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");
pdf.SaveAs("watermarked.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
    <div style='
        font-size: 72pt;
        color: rgba(255, 0, 0, 0.2);
        transform: rotate(-45deg);
    '>
        CONFIDENTIAL
    </div>");
pdf.SaveAs("watermarked.pdf");
$vbLabelText   $csharpLabel

Passwortschutz

var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");
$vbLabelText   $csharpLabel

Formularausfüllen

var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.GetFieldByName("FirstName").Value = "John";
pdf.Form.GetFieldByName("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");
$vbLabelText   $csharpLabel

Server-seitige Verarbeitung

PDFView4NET kann nicht in Serverumgebungen ausgeführt werden.IronPDFleistet hier hervorragende Arbeit:

// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
// ASP.NET Core
[HttpGet]
public IActionResult GeneratePdf()
{
    var renderer = new ChromePdfRenderer();
    var pdf = renderer.RenderHtmlAsPdf(GetReportHtml());
    return File(pdf.BinaryData, "application/pdf", "report.pdf");
}
$vbLabelText   $csharpLabel

Zusammenfassung des Funktionsvergleichs

Feature PDFView4NET IronPDF
PDFs anzeigen Ja (UI) Nein (Viewer verwenden)
PDFs laden Ja Ja
PDFs speichern Beschränkt Ja
HTML zu PDF Nein Ja
URL zu PDF Nein Ja
PDFs zusammenführen Nein Ja
PDFs teilen Beschränkt Ja
Wasserzeichen Nein Ja
Kopf-/Fußzeilen Nein Ja
Passwortschutz Nein Ja
Digitale Signaturen Nein Ja
Textextraktion Beschränkt Ja
Formulare ausfüllen Beschränkt Ja
WinForms Ja Ja
WPF Ja Ja
Konsole Beschränkt Ja
ASP.NET Nein Ja
Azure Nein Ja
Docker Nein Ja

Migrations-Checkliste

Vor der Migration

  • Ermittlung der Anzeigeanforderungen (Feststellen, ob die Funktionen vonIronPDFdie UI-basierte PDF-Anzeige ersetzen können)
  • Dokumentendruck-Workflows
  • Anforderungen an die PDF-Manipulation
  • Ersatz des Planbetrachters, falls erforderlich (IronPDF konzentriert sich auf die Erstellung/Bearbeitung)
  • Besorgen Sie sich den IronPDF-Lizenzschlüssel von ironpdf.com

Paketänderungen

  • Entfernen Sie das NuGet-Paket O2S.Components.PDFView4NET
  • Installieren Sie IronPdf NuGet-Paket: dotnet add package IronPdf

Code-Änderungen

  • Namespace-Importe aktualisieren ( using O2S.Components.PDFView4NET;using IronPdf; )
  • Ersetzen Sie HtmlToPdfConverterdurch ChromePdfRenderer
  • Ersetzen Sie converter.HtmlContent + ConvertHtmlToPdf() durch renderer.RenderHtmlAsPdf(html)
  • Ersetzen Sie converter.NavigateUri + ConvertHtmlToPdf() durch renderer.RenderUrlAsPdf(url)
  • Ersetzen Sie converter.SavePdf() durch pdf.SaveAs()
  • Ersetzen Sie PDFDocument(stream) durch PdfDocument.FromFile(path)
  • Ersetzen Sie die manuelle Seitenschleifenextraktion durch pdf.ExtractAllText()
  • Lizenzinitialisierung beim Anwendungsstart hinzufügen

Nach der Migration

  • PDF-Laden und -Speichern testen
  • Überprüfung der Textextraktionsfunktionalität
  • Test der Konvertierung von HTML in PDF
  • Überprüfen, ob die Serverbereitstellung funktioniert (neue Funktion)
  • Bei Bedarf plattformübergreifend testen (neue Funktion)
  • Entfernen Sie den UI-spezifischen PDF-Code, wenn er nur serverseitig verwendet wird

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