CSHTML in PDF in ASP.NET Core MVC mit IronPDF konvertieren
Die Migration von PDFView4NETzu IronPDF verlagert Ihren PDF-Workflow von einer WinForms/WPF-Anzeigekomponente zu einer headless PDF-Erstellungs- und Manipulationsbibliothek. Dieser Leitfaden bietet einen schrittweisen Migrationspfad, der serverseitige Verarbeitung, Webanwendungsunterstützung und ein umfassenderes PDF-Lifecycle-Management ermöglicht, das über den Anzeige/Render/Drucken-Bereich von PDFView4NEThinausgeht.
Warum von PDFView4NETzu IronPDF migrieren
Verstehen Sie PDFView4NET
PDFView4NET (O2 Solutions, o2sol.com) ist ein Werkzeugset zum Anzeigen/Rendern/Drucken für WinForms- und WPF-Anwendungen. Es wird als zwei NuGet-Pakete ausgeliefert — O2S.Components.PDFView4NET.Win und O2S.Components.PDFView4NET.WPF — und enthält eine eigene PDF-Darstellungs-Engine. O2 Solutions verkauft eine separate Bibliothek, PDF4NET, für die programmgesteuerte Erstellung/Manipulation; dieser Leitfaden behandelt nur PDFView4NET.
Teams, die PDF-Erstellung, HTML-zu-PDF-Rendering oder serverseitige Workflows benötigen, kombinieren PDFView4NEThäufig mit einer anderen Bibliothek, oder wechseln direkt zu einem Toolkit wie IronPDF, das Erstellung und Bearbeitung sowie headless Deployment-Szenarien abdeckt.
Der Anzeige / Render / Druckbereich
PDFView4NET ist rund um das Anzeigen, Rendern und Drucken von PDFs aufgebaut, sowie um Anmerkungen und Formularausfüllungen. Häufige Gründe für eine Migration:
-
Anzeige / Render / Druck-Fokus: PDFView4NETlädt vorhandene PDFs zur Anzeige, zum Drucken oder Bildrendern. Es generiert keine PDFs aus HTML oder URLs.
-
UI-Framework-Abhängigkeit: Bereitgestellt in WinForms- und WPF-Editionen; beide zielen auf Windows-Desktops ab, was den Einsatz in Konsolenarbeiter- oder serverseitigen Hosts einschränkt.
-
Kein HTML zu PDF: Es gibt keine
HtmlToPdfConverteroder HTML-Rendering-API inO2S.Components.PDFView4NET. -
Eingeschränkte Manipulation: Die Manipulation konzentriert sich auf Anmerkungen und Formularfelder statt auf vollständige Inhaltserstellung.
-
Kein Linux / Docker/Server-Pfad: Das Toolkit ist nur über WinForms/WPF unter Windows verfügbar und nicht für ASP.NET-Hosts auf Linux oder Container-Workloads konzipiert.
-
Aktiv, aber eng begrenzt: O2 Solutions liefert weiterhin Versionen; das Produkt wird gewartet, aber der Umfang ist bewusst eng gehalten.
PDFView4NETvs IronPDF Vergleich
| Feature | PDFView4NET | IronPDF |
|---|---|---|
| Primärer Schwerpunkt | PDF-Ansicht | Vollständige PDF-Lösung (Erstellen, Anzeigen, Bearbeiten) |
| UI-Frameworks erforderlich | WinForms, WPF | None |
| 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 deckt die PDF-Erstellung, Manipulation und das Rendering an einem Arbeitsplatz neben Anzeige-bezogenen Workflows ab, was Einsatzmöglichkeiten ermöglicht, die über den Anzeige/Render/Drucken-Bereich von PDFView4NEThinausgehen.
IronPDF ist auch kontextunabhängig — es läuft in Webanwendungen, Diensten und Konsolenanwendungen unter Windows, Linux, macOS, Dockerund Azure, was für Projekte entscheidend sein kann, die plattformübergreifende Unterstützung oder serversseitige Hosting benötigen.
Bevor Sie beginnen
Voraussetzungen
- .NET -Umgebung: .NET Framework 4.6.2+ oder .NET Core 3.1+ / .NET 5/6/7/8/9+
- NuGet -Zugriff: Möglichkeit zur Installation von NuGet -Paketen
- IronPDF -Lizenz: Ihren Lizenzschlüssel erhalten Sie unter IronPDF.
NuGet-Paketänderungen
<!-- Remove PDFView4NET(the actual NuGet IDs are split by UI framework) -->
<PackageReference Include="O2S.Components.PDFView4NET.Win" Version="*" Remove />
<!-- or for WPF: O2S.Components.PDFView4NET.WPF -->
<!-- Add IronPDF-->
<PackageReference Include="IronPdf" Version="*" />
Oder über CLI:
dotnet remove package O2S.Components.PDFView4NET.Win
# (use O2S.Components.PDFView4NET.WPF for the WPFedition)
dotnet add package IronPdf
Lizenz-Konfiguration
// Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";' Add at application startup
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"Komplette API-Referenz
Namensraumänderungen
// Before: PDFView4NET
using O2S.Components.PDFView4NET;
// After: IronPDF
using IronPdf;Imports IronPdfKern-API-Zuordnungen
| PDFView4NET | IronPDF |
|---|---|
new PDFDocument(); doc.Load(path) | PdfDocument.FromFile(path) |
new PDFDocument(); doc.Load(stream) | PdfDocument.FromStream(stream) |
document.Pages[index] | pdf.Pages[index] |
document.PageCount | pdf.PageCount |
document.Print(...) | pdf.Print() |
document.Close() | pdf.Dispose() |
| N/A in PDFView4NET | ChromePdfRenderer (HTML zu PDF) |
| N/A in PDFView4NET | PdfDocument.Merge() |
| N/A in PDFView4NET | pdf.ApplyWatermark() |
document.SecurityManager | pdf.SecuritySettings |
Beispiele für die Code-Migration
Beispiel 1: Konvertierung von URL in PDF
Vor (PDFView4NET):
// NuGet: Install-Package O2S.Components.PDFView4NET.Win
using O2S.Components.PDFView4NET;
using System;
class Program
{
static void Main()
{
// PDFView4NETcannot fetch a URL and emit a PDF; it can only consume one.
PDFDocument document = new PDFDocument();
document.Load("input.pdf");
Console.WriteLine($"Loaded {document.PageCount} page(s) for view/print.");
document.Close();
}
}
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");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
pdf.SaveAs("output.pdf")
End Sub
End ClassPDFView4NET hat keine HTML/URL-Darstellungsoberfläche — es gibt keine HtmlToPdfConverter in O2S.Components.PDFView4NET, daher muss eine URL zuerst von einem anderen Tool in PDF gerendert und dann zum Ansehen/Drucken geladen werden.IronPDF erledigt die gesamte Konvertierung mit einem einzelnen ChromePdfRenderer.RenderUrlAsPdf()-Aufruf, der ein PdfDocument zurückgibt, das Sie mit SaveAs() speichern. 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.Win
using O2S.Components.PDFView4NET;
using System;
class Program
{
static void Main()
{
// The HTML string cannot be rendered by PDFView4NET. Assume an upstream
// tool produced "document.pdf"; PDFView4NETcan then display or print it.
PDFDocument document = new PDFDocument();
document.Load("document.pdf");
Console.WriteLine($"Document ready for viewing — {document.PageCount} page(s).");
document.Close();
}
}
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");
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim htmlContent As String = "<html><body><h1>Hello World</h1><p>This is a PDF document.</p></body></html>"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("document.pdf")
End Sub
End ClassEs gibt keine HtmlContent-Eigenschaft oder HTML-Rendering-API in O2S.Components.PDFView4NET, daher muss die HTML-Zeichenkette zuerst als PDF produziert und dann in den Viewer geladen werden.IronPDF akzeptiert die HTML-Zeichenkette direkt über RenderHtmlAsPdf() und gibt ein PdfDocument zurück. Erfahren Sie mehr in unseren Tutorials.
Beispiel 3: Textextraktion aus PDF
Vor (PDFView4NET):
// NuGet: Install-Package O2S.Components.PDFView4NET.Win
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();
document.Load(fs);
string text = "";
for (int i = 0; i < document.PageCount; i++)
{
text += document.Pages[i].ExtractText();
}
Console.WriteLine(text);
document.Close();
}
}
}Imports O2S.Components.PDFView4NET
Imports System
Imports System.IO
Class Program
Shared Sub Main()
Using fs As FileStream = File.OpenRead("document.pdf")
Dim document As New PDFDocument()
document.Load(fs)
Dim text As String = ""
For i As Integer = 0 To document.PageCount - 1
text &= document.Pages(i).ExtractText()
Next
Console.WriteLine(text)
document.Close()
End Using
End Sub
End ClassNach (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);
}
}Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
Dim text As String = pdf.ExtractAllText()
Console.WriteLine(text)
End Sub
End ClassDieses Beispiel verdeutlicht einen bedeutenden API-Unterschied. PDFView4NETerfordert das Erstellen eines FileStream, das Instanziieren von PDFDocument und den Aufruf von Load(fs), dann das Iterieren von document.PageCount und das Zusammenfügen von Pages[i].ExtractText() pro Seite.
IronPDF vereinfacht dies drastisch: PdfDocument.FromFile() lädt das PDF direkt von einem Pfad, und ExtractAllText() extrahiert Text von allen Seiten mit einem einzigen Methodenaufruf. Kein manuelles Stream-Management, keine Schleifen, keine String-Verkettung - nur zwei Zeilen Code.
Kritische Hinweise zur Migration
HTML-Rendering-Oberfläche
PDFView4NET hat keine HTML-zu-PDF-API.IronPDF führt ChromePdfRenderer für HTML/URL-Eingaben ein:
// IronPDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// or: renderer.RenderUrlAsPdf(url);
pdf.SaveAs("output.pdf");Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
' or: renderer.RenderUrlAsPdf(url)
pdf.SaveAs("output.pdf")Änderung beim Laden des Dokuments
// PDFView4NET: instantiate then Load(path) or Load(stream)
PDFDocument document = new PDFDocument();
document.Load("document.pdf");
// IronPDF: Direct file path
var pdf = PdfDocument.FromFile("document.pdf");' PDFView4NET: instantiate then Load(path) or Load(stream)
Dim document As New PDFDocument()
document.Load("document.pdf")
' IronPDF: Direct file path
Dim pdf = PdfDocument.FromFile("document.pdf")Seitenzugriff ändern
// PDFView4NET: document.PageCount and document.Pages[i]
for (int i = 0; i < document.PageCount; i++)
{
document.Pages[i].ExtractText();
}
// IronPDF: pdf.PageCount and Pages[i] or ExtractAllText()
string text = pdf.ExtractAllText();
// Or per-page: pdf.ExtractTextFromPage(0);Imports PDFView4NET
Imports IronPDF
' PDFView4NET: document.PageCount and document.Pages(i)
For i As Integer = 0 To document.PageCount - 1
document.Pages(i).ExtractText()
Next
' IronPDF: pdf.PageCount and Pages(i) or ExtractAllText()
Dim text As String = pdf.ExtractAllText()
' Or per-page: pdf.ExtractTextFromPage(0)Methodenänderung speichern
// PDFView4NEThas no save-from-HTML path; saving applies after edits on a loaded document.
// IronPDF: SaveAs()
pdf.SaveAs("output.pdf");
Neue Funktionen nach der Migration
Nach der Migration auf IronPDF erhalten 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");Dim pdf1 = PdfDocument.FromFile("chapter1.pdf")
Dim pdf2 = PdfDocument.FromFile("chapter2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("complete_book.pdf")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");Dim 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")Passwortschutz
var pdf = PdfDocument.FromFile("document.pdf");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SaveAs("protected.pdf");Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user456"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SaveAs("protected.pdf")Formularausfüllen
var pdf = PdfDocument.FromFile("form.pdf");
pdf.Form.FindFormField("FirstName").Value = "John";
pdf.Form.FindFormField("LastName").Value = "Doe";
pdf.SaveAs("filled_form.pdf");Dim pdf = PdfDocument.FromFile("form.pdf")
pdf.Form.FindFormField("FirstName").Value = "John"
pdf.Form.FindFormField("LastName").Value = "Doe"
pdf.SaveAs("filled_form.pdf")Server-seitige Verarbeitung
PDFView4NET kann nicht in Serverumgebungen ausgeführt werden.IronPDF leistet 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");
}<HttpGet>
Public Function GeneratePdf() As IActionResult
Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(GetReportHtml())
Return File(pdf.BinaryData, "application/pdf", "report.pdf")
End FunctionZusammenfassung 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 von IronPDF die 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)
- Den IronPDF Lizenzschlüssel erhalten Sie unter IronPDF
Paketänderungen
- Entfernen Sie das
O2S.Components.PDFView4NET.Win(oder.WPF) NuGet-Paket - Installieren Sie das
IronPdfNuGet-Paket:dotnet add package IronPdf
Code-Änderungen
- Aktualisieren Sie die Namespace-Importe (
using O2S.Components.PDFView4NET;→using IronPdf;) - Führen Sie
ChromePdfRendererfür jegliche HTML- oder URL-Inputs ein (kein PDFView4NET-Äquivalent) - Ersetzen Sie
new PDFDocument(); document.Load(path)withPdfDocument.FromFile(path) - Ersetzen Sie
new PDFDocument(); document.Load(stream)withPdfDocument.FromStream(stream) - Ersetzen Sie das manuelle
for (int i = 0; i < document.PageCount; i++)(orpdf.ExtractTextFromPage(i)) - Ersetzen Sie
document.Close()durchpdf.Dispose()(oder einenusing-Block) - 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 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.