Zum Fußzeileninhalt springen
MIGRATIONSLEITFäDEN

Migrieren von Sumatra PDF zu IronPDF in C#

Durch die Migration von Sumatra PDFzuIronPDFwird 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, GPL-Lizenzbeschränkungen und die grundlegende Einschränkung, dass Sumatra PDFein Viewer und keine Entwicklungsbibliothek ist, eliminiert.

Warum von Sumatra PDFzuIronPDFmigrieren

Sumatra verstehen PDF

Sumatra PDF ist in erster Linie ein leichtgewichtiger, quelloffener PDF-Reader, der für seine Einfachheit und Geschwindigkeit bekannt ist. Sumatra PDFbietet jedoch keine Funktionen, die für die Erstellung oder Bearbeitung von PDF-Dateien über die Anzeige hinaus erforderlich sind. Als kostenlose und vielseitige Option zum Lesen von PDFs wird es von vielen Nutzern geschätzt, die ein schnörkelloses Erlebnis suchen. Wenn es jedoch um Entwickler geht, die umfassendere PDF-Funktionen wie die Erstellung und Integration von Bibliotheken in Anwendungen benötigen, ist Sumatra PDFaufgrund seiner inhärenten Designbeschränkungen nicht geeignet.

Sumatra PDF ist eine Desktop-PDF-Viewer-Anwendung, keine Entwicklungsbibliothek. Wenn Sie Sumatra PDFin Ihrer .NET-Anwendung verwenden, sind Sie wahrscheinlich:

  1. Starten als externer Prozess zur Anzeige von PDFs
  2. Verwendung zum Drucken von PDFs über die Befehlszeile
  3. 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 separaten Prozessen
GPL-Lizenz Einschränkend für kommerzielle Software
Benutzerabhängigkeit Die Benutzer müssen Sumatra separat installieren
Keine API Begrenzt auf Befehlszeilenargumente
Nur anzeigen Kann keine PDFs erstellen, bearbeiten oder manipulieren
Keine Web-Unterstützung Reine Desktop-Anwendung

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 GPL 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 Keine 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 die Einführung von .NET 10 und C# 14 bis 2025 und 2026 planen, bietetIronPDFeine native Bibliotheksintegration, die den externen Prozessaufwand und die GPL-Lizenzbeschränkungen von Sumatra PDFüberflüssig macht.


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.

Installation

# Install IronPDF
dotnet add package IronPdf
# Install IronPDF
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: Sumatra PDF(external process)
using System.Diagnostics;
using System.IO;

// After: IronPDF
using IronPdf;
// Before: Sumatra PDF(external process)
using System.Diagnostics;
using System.IO;

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

Kernkapazitätszuordnungen

Sumatra PDF-Ansatz IronPDF-Äquivalent Notizen
Prozess.Start("SumatraPDF.exe", pdfPfad) PdfDocument.FromFile() PDF laden
Befehlszeilenargumente NativeAPI-Methoden Kein CLI erforderlich
Extern pdftotext.exe pdf.ExtractAllText() Textextraktion
Extern wkhtmltopdf.exe renderer.RenderHtmlAsPdf() HTML zu PDF
-print-to-default Argument pdf.Print() Drucken
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):

// NuGet: Install-Package SumatraPDF (Note: Sumatra is primarily a viewer, not a generator)
// Sumatra PDFdoesn't have direct C# integration for HTML zu PDFconversion
// You would need to use external tools or libraries and then open 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);
    }
}
// NuGet: Install-Package SumatraPDF (Note: Sumatra is primarily a viewer, not a generator)
// Sumatra PDFdoesn't have direct C# integration for HTML zu PDFconversion
// You would need to use external tools or libraries and then open 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);
    }
}
$vbLabelText   $csharpLabel

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

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 einen ChromePdfRenderer mit RenderHtmlAsPdf() in nur drei Codezeilen. Keine externen Tools, kein Prozessmanagement, keine Zwischendateien. Die PDF-Datei 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):

// NuGet: Install-Package SumatraPDF.CommandLine (or direct executable)
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}\""
    }
}
// NuGet: Install-Package SumatraPDF.CommandLine (or direct executable)
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}\""
    }
}
$vbLabelText   $csharpLabel

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}");

        //IronPDFcan 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 });
    }
}
// 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}");

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

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 die PDF-Datei mit PdfDocument.FromFile()und bietet Ihnen vollen programmatischen Zugriff. Sie können Eigenschaften wie Seitenzahl lesen, das Dokument bearbeiten, Änderungen speichern und dann mit dem Standard-PDF-Viewer des Systems öffnen. Der Hauptunterschied besteht darin, dassIronPDFeine echte API bereitstellt und nicht nur Prozessargumente. Erfahren Sie mehr in unseren Tutorials.

Beispiel 3: Extrahieren von Text aus PDFs

Vor (Sumatra PDF):

// Sumatra PDFdoesn't provide C# API for text extraction
// You would need to use command-line tools or other libraries
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);
    }
}
// Sumatra PDFdoesn't provide C# API for text extraction
// You would need to use command-line tools or other libraries
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);
    }
}
$vbLabelText   $csharpLabel

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

Sumatra PDF ist ein Viewer, keine Textextraktionsbibliothek. Um Text zu extrahieren, müssen Sie externe Befehlszeilentools wie pdftotext.exe verwenden, einen Prozess starten, auf dessen Beendigung warten, die Ausgabedatei lesen und alle damit verbundenen Dateieingaben und -ausgaben sowie Aufräumarbeiten erledigen.

IronPDF bietet native Textextraktion mit ExtractAllText() für das gesamte Dokument oder ExtractTextFromPage(0) für bestimmte Seiten. Keine externen Prozesse, keine temporären Dateien, keine Bereinigung erforderlich.


Funktionsvergleich

Feature Sumatra PDF IronPDF
Kreation
HTML zu PDF Nein Ja
URL zu PDF Nein Ja
Text zu PDF Nein Ja
Bild zu PDF Nein Ja
Manipulation
PDFs zusammenführen Nein Ja
PDFs teilen Nein Ja
Seiten rotieren Nein Ja
Seiten löschen Nein Ja
Seiten neu ordnen Nein Ja
Inhalt
Wasserzeichen hinzufügen Nein Ja
Kopfzeilen/Fußzeilen hinzufügen Nein Ja
Stempel Text Nein Ja
Stempel-Bilder Nein Ja
Sicherheit
Passwortschutz Nein Ja
Digitale Signaturen Nein Ja
Verschlüsselung Nein Ja
Berechtigungseinstellungen Nein Ja
Extraktion
Text extrahieren Nein Ja
Bilder extrahieren Nein Ja
Plattform
Windows Ja Ja
Linux Nein Ja
macOS Nein Ja
Webanwendungen Nein Ja
Azure/AWS Nein Ja

Neue Funktionen nach der Migration

Nach der Migration zuIronPDFerhalten 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");
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");
$vbLabelText   $csharpLabel

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

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

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

Migrations-Checkliste

Vor der Migration

  • Alle Sumatra-Prozessstarts identifizieren ( Process.Start(&quot;SumatraPDF.exe&quot;, ...) )
  • Dokumentdruck-Workflows ( -print-to-default Argumente)
  • Notieren Sie alle verwendeten Sumatra-Befehlszeilenargumente.
  • Besorgen Sie sich den IronPDF-Lizenzschlüssel von ironpdf.com

Code-Aktualisierungen

  • Installieren Sie IronPdf NuGet-Paket
  • Sumatra-Prozesscode entfernen
  • Ersetzen Sie Process.Start(&quot;SumatraPDF.exe&quot;, pdfPath) durch PdfDocument.FromFile(pdfPath)
  • Ersetzen Sie externe wkhtmltopdf.exe -Aufrufe durch ChromePdfRenderer.RenderHtmlAsPdf()
  • Ersetzen Sie externe Aufrufe pdftotext.exe durch pdf.ExtractAllText()
  • Ersetzen Sie die Aufrufe -print-to-default process durch pdf.Print()
  • 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
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