Wie man ein PDF in C# exportiert | IronPDF
Durch die Migration von Sumatra PDFzu IronPDF wird Ihr PDF-Workflow von einer externen Prozessverwaltung mit einer Desktop-Viewer-Anwendung zu einer nativen .NET-Bibliotheksintegration mit vollständigen PDF-Erstellungs-, Manipulations- und Extraktionsfunktionen umgewandelt. Dieser Leitfaden bietet einen vollständigen, schrittweisen Migrationspfad, der externe Abhängigkeiten, AGPLv3-Copyleft-Verpflichtungen und die grundlegende Einschränkung eliminiert, dass Sumatra PDFein Viewer/Drucker ist, keine Entwicklungslibrary.
Warum von Sumatra PDFzu IronPDF migrieren
Sumatra verstehen PDF
Sumatra PDF ist ein leichtgewichtiger, Open-Source WindowsPDF-Leser/Drucker, der für seine Einfachheit und Geschwindigkeit bekannt ist. Es zeigt auch EPUB, MOBI, CBZ/CBR, FB2, CHM, XPS und DjVu Dateien an. Allerdings bietet Sumatra PDFnicht die erforderlichen Funktionen zum Erstellen oder Bearbeiten von PDF-Dateien über das Anzeigen und Drucken hinaus, und es gibt kein offizielles .NET SDK oder NuGet-Paket – Community-Wrapper greifen einfach auf SumatraPDF.exe zurück.
Sumatra PDF ist eine eigenständige Windows-Desktop-Anzeige-/Druckeranwendung, keine Entwicklungslibrary. Wenn Sie Sumatra PDFin Ihrer .NET-Anwendung verwenden, sind Sie wahrscheinlich:
- Starten von
SumatraPDF.exeals externen Prozess zur Anzeige von PDFs - PDFs drucken über die Befehlszeile (
-print-to-default,-print-to "<printer>") - Als Abhängigkeit müssen Ihre Benutzer Folgendes installieren
Schlüsselprobleme bei der Sumatra PDF-Integration
| Problem | Auswirkungen |
|---|---|
| Keine Bibliothek | PDFs können nicht programmatisch erstellt oder bearbeitet werden |
| Externer Prozess | Erfordert das Starten von SumatraPDF.exe; keine In-Prozess-API |
| AGPLv3 License | Starkes Copyleft (einige Dateien BSD-lizenziert); bundling into closed-source products imposes obligations most commercial vendors avoid |
| Benutzerabhängigkeit | Benutzer (oder Ihr Installationsprogramm) müssen SumatraPDF.exe auf der Festplatte platzieren |
| Nur CLI | Beschränkt auf dokumentierte Befehlszeilenargumente |
| Nur anzeigen / drucken | Kann keine PDFs erstellen, bearbeiten oder manipulieren |
| Nur Windows | Keine Linux- oder macOS-Versionen |
Vergleich zwischen Sumatra PDFund IronPDF
| Feature | Sumatra PDF | IronPDF |
|---|---|---|
| Typ | Anwendung | Bibliothek |
| PDF-Lesen | Ja | Ja |
| PDF-Erstellung | Nein | Ja |
| PDF-Bearbeitung | Nein | Ja |
| Integration | Begrenzt (Standalone) | Vollständige Integration in Anwendungen |
| Lizenz | AGPLv3 (einige Dateien BSD) | Kommerziell |
| Erstellen von PDFs | Nein | Ja |
| PDFs bearbeiten | Nein | Ja |
| HTML zu PDF | Nein | Ja |
| Merge/Split | Nein | Ja |
| Wasserzeichen | Nein | Ja |
| Digitale Signaturen | Nein | Ja |
| Formularausfüllen | Nein | Ja |
| Textextraktion | Nein | Ja |
| .NET-Integration | None | Native |
| Webanwendungen | Nein | Ja |
IronPDF ist, anders als Sumatra PDF, nicht an eine bestimmte Desktop-Anwendung oder einen externen Prozess gebunden. Es bietet Entwicklern eine flexible Bibliothek zur dynamischen Erstellung, Bearbeitung und Manipulation von PDF-Dokumenten direkt in C#. Diese Entkopplung von externen Prozessen bietet einen spürbaren Vorteil: Sie ist einfach und anpassungsfähig und eignet sich für eine Vielzahl von Anwendungen, die über das reine Betrachten hinausgehen.
Für Teams, die modernes .NET anstreben, bietet IronPDF eine native Bibliotheksintegration, die den Overhead des externen Prozesses und die AGPLv3-Copyleft-Verpflichtungen von Sumatra PDFeliminiert.
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.
Installation
# Install IronPDF
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: Sumatra PDF(external process)
using System.Diagnostics;
using System.IO;
// After: IronPDF
using IronPdf;Imports System.Diagnostics
Imports System.IO
Imports IronPdfKernkapazitätszuordnungen
| Sumatra PDF-Ansatz | IronPDF-Äquivalent | Notizen |
|---|---|---|
Process.Start("SumatraPDF.exe", pdfPath) | PdfDocument.FromFile() | PDF laden |
| Befehlszeilenargumente | NativeAPI-Methoden | Kein CLI erforderlich |
Externe pdftotext.exe | pdf.ExtractAllText() | Textextraktion |
Externe wkhtmltopdf.exe | renderer.RenderHtmlAsPdf() | HTML zu PDF |
-print-to-default-Argument | pdf.Print() | |
| Nicht möglich | PdfDocument.Merge() | PDFs zusammenführen |
| Nicht möglich | pdf.ApplyWatermark() | Wasserzeichen |
| Nicht möglich | pdf.SecuritySettings | Passwortschutz |
Beispiele für die Code-Migration
Beispiel 1: Konvertierung von HTML in PDF
Vor (Sumatra PDF):
// Sumatra PDFis a standalone Windowsapp (AGPLv3) — there is NO official NuGet package.
// Download SumatraPDF.exe from https://www.sumatrapdfreader.org/and shell out to it.
// Sumatra is a viewer/printer only; it cannot convert HTML to PDF, so you must use a
// separate HTML-to-PDF tool (e.g. wkhtmltopdf) and then view/print with Sumatra.
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
// Sumatra PDFcannot directly convert HTML to PDF
// You'd need to use wkhtmltopdf or similar, then view in Sumatra
string htmlFile = "input.html";
string pdfFile = "output.pdf";
// Using wkhtmltopdf as intermediary
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "wkhtmltopdf.exe",
Arguments = $"{htmlFile} {pdfFile}",
UseShellExecute = false
};
Process.Start(psi)?.WaitForExit();
// Then open with Sumatra
Process.Start("SumatraPDF.exe", pdfFile);
}
}
Nach (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<h1>Hello World</h1><p>This is HTML zu PDFconversion.</p>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully!");
}
}
Dieses Beispiel verdeutlicht den grundlegenden architektonischen Unterschied. Sumatra PDFkann HTML nicht direkt in PDF konvertieren - Sie müssen ein externes Tool wie wkhtmltopdf als Zwischenprodukt verwenden und dann Sumatra als separaten Prozess starten, um das Ergebnis anzuzeigen. Dies erfordert zwei externe ausführbare Dateien und mehrere Prozessstarts.
IronPDF verwendet ein ChromePdfRenderer mit RenderHtmlAsPdf() in nur drei Codezeilen. Keine externen Tools, kein Prozessmanagement, keine Zwischendateien. Das PDF wird direkt im Speicher erstellt und mit SaveAs() gespeichert. Umfassende Beispiele finden Sie in der HTML to PDF Dokumentation.
Beispiel 2: Öffnen und Anzeigen von PDFs
Vor (Sumatra PDF):
// Sumatra PDFis a standalone Windowsapp (AGPLv3) — no official NuGet package.
// Download SumatraPDF.exe from https://www.sumatrapdfreader.org/and call it via Process.Start.
// Useful CLI flags: -page <n>, -print-to-default, -print-to "<printer>", -print-settings, -silent.
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
string pdfPath = "document.pdf";
// Sumatra PDFexcels at viewing PDFs
ProcessStartInfo startInfo = new ProcessStartInfo
{
FileName = "SumatraPDF.exe",
Arguments = $"\"{pdfPath}\"",
UseShellExecute = true
};
Process.Start(startInfo);
// Optional: Open specific page
// Arguments = $"-page 5 \"{pdfPath}\""
}
}
Nach (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Diagnostics;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Extract information
Console.WriteLine($"Page Count: {pdf.PageCount}");
//IronPDF can manipulate and save, then open with default viewer
pdf.SaveAs("modified.pdf");
// Open with default PDF viewer
Process.Start(new ProcessStartInfo("modified.pdf") { UseShellExecute = true });
}
}
Sumatra PDF eignet sich hervorragend zum Anzeigen von PDFs, ist aber auf das Starten eines externen Prozesses mit Befehlszeilenargumenten beschränkt. Sie können nicht programmatisch auf den PDF-Inhalt zugreifen, sondern ihn nur anzeigen.
IronPDF lädt das PDF mit PdfDocument.FromFile() und bietet Ihnen vollen programmatischen Zugriff. Sie können Eigenschaften wie PageCount lesen, das Dokument manipulieren, Änderungen speichern und dann mit dem standardmäßigen PDF-Viewer des Systems öffnen. Der Hauptunterschied besteht darin, dass IronPDF eine echte API bereitstellt und nicht nur Prozessargumente. Erfahren Sie mehr in unseren Tutorials.
Beispiel 3: Extrahieren von Text aus PDFs
Vor (Sumatra PDF):
// Sumatra PDFis a standalone Windowsviewer (AGPLv3) — no official NuGet package
// and no programmatic text-extraction API. To extract text you must shell out to a
// separate tool such as pdftotext (Xpdf / Poppler).
using System;
using System.Diagnostics;
using System.IO;
class Program
{
static void Main()
{
// Sumatra PDFis a viewer, not a text extraction library
// You'd need to use PDFBox, iTextSharp, or similar for extraction
string pdfFile = "document.pdf";
// This would require external tools like pdftotext
ProcessStartInfo psi = new ProcessStartInfo
{
FileName = "pdftotext.exe",
Arguments = $"{pdfFile} output.txt",
UseShellExecute = false
};
Process.Start(psi)?.WaitForExit();
string extractedText = File.ReadAllText("output.txt");
Console.WriteLine(extractedText);
}
}
Nach (IronPDF):
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var pdf = PdfDocument.FromFile("document.pdf");
// Extract text from all pages
string allText = pdf.ExtractAllText();
Console.WriteLine("Extracted Text:");
Console.WriteLine(allText);
// Extract text from specific page
string pageText = pdf.ExtractTextFromPage(0);
Console.WriteLine($"\nFirst Page Text:\n{pageText}");
}
}' NuGet: Install-Package IronPdf
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim pdf = PdfDocument.FromFile("document.pdf")
' Extract text from all pages
Dim allText As String = pdf.ExtractAllText()
Console.WriteLine("Extracted Text:")
Console.WriteLine(allText)
' Extract text from specific page
Dim pageText As String = pdf.ExtractTextFromPage(0)
Console.WriteLine(vbCrLf & "First Page Text:" & vbCrLf & pageText)
End Sub
End ModuleSumatra PDF ist ein Viewer, keine Textextraktionsbibliothek. Um Text zu extrahieren, müssen Sie externe Befehlszeilen-Tools wie pdftotext.exe verwenden, einen Prozess starten, darauf warten, dass er abgeschlossen ist, die Ausgabedatei lesen und alle damit verbundenen Datei-I/O sowie die Bereinigung handhaben.
IronPDF bietet native Textextraktion mit ExtractAllText() für das gesamte Dokument oder ExtractTextFromPage(0) für spezifische Seiten. Keine externen Prozesse, keine temporären Dateien, keine Bereinigung erforderlich.
Funktionsvergleich
| Feature | Sumatra PDF | IronPDF |
|---|---|---|
| Schöpfung : | ||
| URL zu PDF | Nein | Ja |
| Text zu PDF | Nein | Ja |
| Bild zu PDF | Nein | Ja |
| Manipulation | ||
| PDFs teilen | Nein | Ja |
| Seiten rotieren | Nein | Ja |
| Seiten löschen | Nein | Ja |
| Seiten neu ordnen | Nein | Ja |
| : Inhalt : | ||
| Kopfzeilen/Fußzeilen hinzufügen | Nein | Ja |
| Stempel Text | Nein | Ja |
| Stempel-Bilder | Nein | Ja |
| Sicherheit : | ||
| Digitale Signaturen | Nein | Ja |
| Verschlüsselung | Nein | Ja |
| Berechtigungseinstellungen | Nein | Ja |
| Extraktion : | ||
| Bilder extrahieren | Nein | Ja |
| Plattform : | ||
| Linux | Nein | Ja |
| macOS | Nein | Ja |
| Webanwendungen | Nein | Ja |
| Azure/AWS | Nein | Ja |
Neue Funktionen nach der Migration
Nach der Migration zu IronPDF erhalten Sie Funktionen, die Sumatra PDFnicht bieten kann:
PDF-Erstellung aus HTML
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(@"
<html>
<head><style>body { font-family: Arial; }</style></head>
<body>
<h1>Invoice #12345</h1>
<p>Thank you for your purchase.</p>
</body>
</html>");
pdf.SaveAs("invoice.pdf");Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("
<html>
<head><style>body { font-family: Arial; }</style></head>
<body>
<h1>Invoice #12345</h1>
<p>Thank you for your purchase.</p>
</body>
</html>")
pdf.SaveAs("invoice.pdf")PDF-Zusammenführung
var pdf1 = PdfDocument.FromFile("chapter1.pdf");
var pdf2 = PdfDocument.FromFile("chapter2.pdf");
var pdf3 = PdfDocument.FromFile("chapter3.pdf");
var book = PdfDocument.Merge(pdf1, pdf2, pdf3);
book.SaveAs("complete_book.pdf");Dim pdf1 = PdfDocument.FromFile("chapter1.pdf")
Dim pdf2 = PdfDocument.FromFile("chapter2.pdf")
Dim pdf3 = PdfDocument.FromFile("chapter3.pdf")
Dim book = PdfDocument.Merge(pdf1, pdf2, pdf3)
book.SaveAs("complete_book.pdf")Wasserzeichen
var pdf = PdfDocument.FromFile("document.pdf");
pdf.ApplyWatermark(@"
<div style='
font-size: 60pt;
color: rgba(255, 0, 0, 0.3);
transform: rotate(-45deg);
'>
CONFIDENTIAL
</div>");
pdf.SaveAs("watermarked.pdf");Dim pdf = PdfDocument.FromFile("document.pdf")
pdf.ApplyWatermark("
<div style='
font-size: 60pt;
color: rgba(255, 0, 0, 0.3);
transform: rotate(-45deg);
'>
CONFIDENTIAL
</div>")
pdf.SaveAs("watermarked.pdf")Passwortschutz
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>");
pdf.SecuritySettings.OwnerPassword = "owner123";
pdf.SecuritySettings.UserPassword = "user456";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint;
pdf.SaveAs("protected.pdf");Dim renderer As New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sensitive Data</h1>")
pdf.SecuritySettings.OwnerPassword = "owner123"
pdf.SecuritySettings.UserPassword = "user456"
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.NoPrint
pdf.SaveAs("protected.pdf")Migrations-Checkliste
Vor der Migration
- Alle Sumatra-Prozessstarts identifizieren (
Process.Start("SumatraPDF.exe", ...)) - Dokumentdruck-Workflows (
-print-to-defaultArgumente) - Notieren Sie alle verwendeten Sumatra-Befehlszeilenargumente.
- Den IronPDF Lizenzschlüssel erhalten Sie unter IronPDF
Code-Aktualisierungen
IronPdfNuGet-Paket installieren- Sumatra-Prozesscode entfernen
Process.Start("SumatraPDF.exe", pdfPath)mitPdfDocument.FromFile(pdfPath)ersetzen- Externe
wkhtmltopdf.exeAufrufe mitChromePdfRenderer.RenderHtmlAsPdf()ersetzen - Externe
pdftotext.exeAufrufe mitpdf.ExtractAllText()ersetzen -print-to-defaultProzessaufrufe mitpdf.Print()ersetzen- Lizenzinitialisierung beim Anwendungsstart hinzufügen
Testen
- PDF-Generierungsqualität testen
- Druckfunktion überprüfen
- Test auf allen Zielplattformen
- Sicherstellen, dass keine Abhängigkeit von Sumatra mehr besteht
Bereinigung
- Sumatra aus den Installationsprogrammen entfernen
- Dokumentation aktualisieren
- Sumatra aus den Systemanforderungen entfernen

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.