PDF-WERKZEUGE

IronPDF vs EvoPdf: Welche .NET PDF-Bibliothek liefert im Jahr 2026 mehr Wert?

Jacob Mellor, Chief Technology Officer @ Team Iron
Jacob Mellor
Updated: 27. September 2026

Beim Erstellen moderner .NET-Anwendungen, die PDF-Funktionalität benötigen, kann die Wahl der richtigen Bibliothek die Entwicklungsgeschwindigkeit, die Anwendungsleistung und die langfristigen Wartungskosten erheblich beeinflussen. IronPDF und EvoPdf repräsentieren zwei unterschiedliche Ansätze zur PDF-Erstellung und -Bearbeitung im .NET-Ökosystem, wobei jede Bibliothek über einzigartige Stärken verfügt, die auf verschiedene Entwicklungsszenarien zugeschnitten sind.

Dieser Vergleich untersucht beide Bibliotheken anhand kritischer Kriterien wie Rendering-Genauigkeit, API-Design, Performance, Plattformkompatibilität und Gesamtkosten. Egal, ob Sie ein System zur Verarbeitung großer Dokumentenmengen, zur Signierung von Dokumenten oder einfach zur Konvertierung von HTML-Berichten in PDF erstellen – das Verständnis dieser Unterschiede hilft Ihnen, eine fundierte Entscheidung zu treffen, die Ihren technischen Anforderungen und Budgetvorgaben entspricht.

Wie schneiden IronPDF und EvoPdf im Überblick ab?

Bevor wir in die detaillierten Vergleiche eintauchen, hier ein Überblick darüber, wie diese Bibliotheken in den wichtigsten Kategorien abschneiden, die für .NET-Entwickler am wichtigsten sind:

Produktvergleich Übersicht
Vergleich von IronPDF und EvoPdf für .NET PDF-Erstellung
KategorieFunktion/AspektIronPDFEvoPdfHauptvorteil
KernarchitekturDesign-PhilosophieSimplicity-first, intuitive APIsGranulare Kontrolle über KonvertierungseinstellungenAbhängig von Teampräferenz
API-KomplexitätEinfache Methoden wie RenderHtmlAsPdf()Converter-Klasse mit Methoden wie ConvertHtml()Beide: Einfache Konvertierung mit einem Aufruf
PlattformunterstützungCross-PlatformWindows, Linux, macOS über plattformspezifische NuGet-PaketeEvoPdf Next: Windows, Linux, macOS über plattformspezifische NuGet-Pakete; EvoPdf Classic: Windows, plus ein plattformübergreifender Client, der einen separat gehosteten EVO PDF Server ansprichtBeide: Cross-Platform-Rendering lokal (EvoPdf Next)
.NET-Versionen.NET 10, 9, 8, 7, 6, 5, Core 3.1+, Standard 2.0, Framework 4.6.2+Next: .NET 10, 9, 8, 7, 6, Standard 2.0, Framework 4.6.2+; Classic: Framework 2.0+Beide: Moderne Framework-Unterstützung
BetriebssystemeWindows, Linux, macOS, Docker, Azure, AWSWindows, Linux, macOS, Docker, Azure (EvoPdf Next)Beide: Docker- und Cloud-Unterstützung
HTML zu PDFRendering-EngineChromium (CEF 109 im Standardpaket; CEF 131 in IronPdf.UpdatedChrome)Chromium 142 (EvoPdf Next); EVO-eigene Engine (EvoPdf Classic)Beide: Chromium-basiert
CSS3/HTML5-UnterstützungAbhängig von der mitgelieferten Chromium-Version: unter Windows 109 im Standardpaket und 131 in IronPdf.UpdatedChrome (z.B. benötigt Tailwind CSS v4 Chrome 111 oder neuer)Next: flexbox, grid, ES2015+, WebfontsBeide: Abhängig von Engine-Version
JavaScript-AusführungJavaScript-Unterstützung mit Render-VerzögerungJavaScript-Unterstützung mit KonvertierungsverzögerungBeide: Dynamische Inhalte
Sicherheit & VerschlüsselungVerschlüsselungsstufenRC4-128, AES-128, AES-256RC4-40, RC4-128, AES-128, AES-256Beide: AES-256 verfügbar
BerechtigungsoptionenGranulare BerechtigungssteuerungGranulare Berechtigungen (Drucken, Kopieren, Bearbeiten, Kommentieren, Formulare ausfüllen, Zusammenstellen)Beide: Granulare Kontrolle
Digitale SignaturenIntegrierte, visuelle SignaturenSichtbare Signaturen mit Bild- und Zeitstempel-UnterstützungBeide: Visuelle Signaturen
InhaltsbearbeitungRedaktionsmethodeEchte Inhaltsentfernung, Einzeiler-APIKeine Redaktionsfunktion dokumentiertIronPDF: Eingebaute Redaktion
WasserzeichenHTML/CSS-basiert, volle GestaltungsmöglichkeitenHTML-Vorlagen für Wasserzeichen und StempelBeide: HTML-basiert
StempelnEinheitliche Stamper-KlassenHTML-Stempel über VorlagenIronPDF: Dedizierte Stamper-Klassen
DateikonvertierungenDOCX zu PDFEingebauter DocxToPdfRendererIm EVO PDF Toolkit enthalten (aus $650), nicht in der HTML zu PDF-LizenzIronPDF: In Basislizenz enthalten
EntwicklererlebnisCodebeispiele100+ sofort ausführbare BeispieleCodebeispiele auf GitHub, Online-DemoIronPDF: Umfangreiche Ressourcen
DokumentationTutorials, How-Tos, Videos, API-ReferenzDokumentation, API-Referenz, Support-FAQIronPDF: Mehrere Lernpfade
PerformanceParallelitätAsynchrone Rendering-MethodenAsynchrone Methoden (EvoPdf Next); persistenter Renderer für parallele KonvertierungenBeide: Parallele Workloads
Lizenzierung & PreiseEinsteigerLite: $999 (1 Entwickler, 1 Projekt)Deployment: $450 (1 Anwendung auf 1 Server, unbegrenzte Entwickler, keine Weiterverteilung)EvoPdf: Geringere Einstiegskosten
Team-LizenzPlus: $1,499 (3 Entwickler, 3 Projekte)Keine Stufe zählt Entwickler; Company: $1,200 (unbegrenzte Anwendungen und Server)EvoPdf: Preis unabhängig von Teamgröße
Weiterverteilung+$1,999 lizenzfrei (OEM/SaaS); eine öffentliche API, die IronPDF bereitstellt, benötigt eine SDK-LizenzNur Company-Lizenz; nicht als eigenständiger Konvertierungsdienst oder SDKEvoPdf: In Company-Lizenz enthalten
Suite-OptionIron Suite Lite: $2,998 (10 Produkte; 1 Entwickler, 1 Standort, 1 Projekt)EVO PDF Toolkit Company: $1,400Anderer Umfang: Iron Suite enthält OCR, Barcode und Office-Tools
SupportSupport enthaltenJa: 24/5 Live-Chat; 24/7 Support mit Premium Support (während der Testphase enthalten)Ja, erstes Jahr (Standard oder Priority, je nach Lizenz)Beide: Support enthalten
Am besten geeignet fürAnwendungsfälleModerne Web-Apps, komplexe PDFs, RedaktionHTML, Word und Excel zu PDF mit unternehmensweiter LizenzierungKontextabhängig

Hinweis. EvoPdf bietet wettbewerbsfähige Preise für große Teams. IronPDF enthält eingebaute Redaktion und DOCX-zu-PDF-Konvertierung in der Basislizenz.

IronPDF und EvoPdf verstehen: Kernstärken und Philosophie

Was macht IronPDF auf dem .NET-PDF-Bibliotheksmarkt besonders?

IronPDF ist eine .NET-PDF-Bibliothek, die mit Fokus auf Entwicklerproduktivität entwickelt wurde. Basierend auf Einfachheit ohne Verzicht auf Leistungsfähigkeit ermöglicht IronPDF .NET-Entwicklern das Erstellen, Bearbeiten und Manipulieren von PDF-Dokumenten mit intuitiven APIs, die vertrauten Webentwicklungsmustern ähneln. Das herausragende Merkmal der Bibliothek ist ihre Chromium-basierte Rendering-Engine, die JavaScript ausführt und Webfonts lädt; wie viel modernes CSS unterstützt wird, hängt von der ausgelieferten Chromium-Version ab. Das Standardpaket IronPdf enthält Chromium 109 für Kompatibilität mit älteren Windows-Servern; das Windows-exklusive IronPdf.UpdatedChrome Paket enthält Chromium 131 und unterstützt neuere CSS-Features wie subgrid korrekt, unterstützt jedoch keine 32-Bit-Prozesse, Windows Server 2012 oder SingleProcess-Modus, sodass die beiden Pakete nicht auf jedem Zielsystem austauschbar sind.

Die Bibliothek richtet sich an Anwendungen, die HTML-Dokumente rendern, bestehende PDFs bearbeiten und Dokumente mit Verschlüsselung, Signaturen und Redaktion schützen. Ihr umfangreiches Funktionsspektrum umfasst nicht nur grundlegende PDF-Erstellung, sondern auch fortgeschrittene Funktionen wie digitale Signaturen, Formularausfüllung, OCR-Integration über IronOCR und Dokumentformat-Konvertierungen wie DOCX zu PDF. Die plattformübergreifende Kompatibilität von IronPDF geht über reine Framework-Unterstützung hinaus und läuft auf Windows, Linux, macOS, Docker-Containern und Cloud-Plattformen wie Azure und AWS.

Wie unterscheidet sich der Ansatz von EvoPdf bei der PDF-Erstellung?

EvoPdf konzentriert sich auf die HTML-zu-PDF-Konvertierung mit Schwerpunkt auf Anpassung und Kontrolle. Die Bibliothek bietet Entwicklern eine granulare Kontrolle über den Konvertierungsprozess und ermöglicht die Feinabstimmung von Rendering-Parametern, Seitenlayouts und Konvertierungseinstellungen. EvoPdf wird in zwei Editionen ausgeliefert: EvoPdf Next, das eine Chromium-basierte Rendering-Engine (Chromium 142 laut EVO PDF) verwendet und auf Windows, Linux und macOS läuft, und EvoPdf Classic, das die eigene Rendering-Engine von EVO nutzt und auf Windows läuft. Das EVO PDF Toolkit erweitert um Word-, Excel-, RTF- und Markdown-zu-PDF-Konvertierung sowie PDF-Bearbeitungskomponenten.

Ein bemerkenswerter Vorteil von EvoPdf ist die Lizenzierung: Keine Lizenzstufe zählt Entwickler, und die Company-Lizenz deckt unbegrenzte Anwendungen und Server ab und beinhaltet die Weiterverteilung innerhalb Ihrer eigenen Anwendungen. Für hochvolumige Server-Workloads dokumentiert EvoPdf Next einen persistenten Renderer-Modus, der die Rendering-Engine zwischen Konvertierungen am Laufen hält. Die Bibliothek unterstützt auch ASP.NET-Szenarien wie das Konvertieren von Seiten, die Authentifizierungs-Cookies benötigen.

Wie vergleichen sich die plattformübergreifenden Fähigkeiten der Bibliotheken?

IronPDFs moderne plattformübergreifende Architektur

IronPDF läuft auf mehreren .NET-Versionen, Betriebssystemen und Cloud-Plattformen:

  • .NET-Versionen:
    • .NET 10, 9, 8, 7, 6, 5 und Core 3.1+
    • .NET Standard 2.0+
    • .NET Framework 4.6.2+
    • Volle Unterstützung für C#, VB.NET und F#
  • Betriebssystem-Kompatibilität:
    • Windows (x64; x86 nur mit dem Standardpaket, da IronPdf.UpdatedChrome keine 32-Bit-Prozesse unterstützt)
    • Linux (Ubuntu, Debian, CentOS; Alpine über den IronPdfEngine-Container)
    • macOS (Intel und Apple Silicon)
    • Docker-Container mit vorkonfigurierten Images
  • Cloud-Plattform-Integration:
    • Azure App Service, Functions und VMs
    • AWS Lambda und EC2
    • Kubernetes-Deployments

IronPDF liefert seine Chromium-Binaries in plattformspezifischen NuGet-Paketen aus (IronPdf für Windows, IronPdf.Linux, IronPdf.MacOs und IronPdf.MacOs.ARM). Unter Linux versucht IronPDF standardmäßig, fehlende Systemabhängigkeiten automatisch zu installieren; dies erfordert Sudo-Rechte, andernfalls erfolgt die Installation manuell. Dadurch bleiben die Deployment-Schritte in den meisten Umgebungen kurz.

EvoPdf Plattformunterstützung

EvoPdf unterstützt einen ähnlichen Bereich an .NET-Versionen, wobei die Plattformunterstützung von der Edition abhängt:

  • .NET Framework-Unterstützung:
    • EvoPdf Next: .NET 10, 9, 8, 7 und 6, .NET Standard 2.0, .NET Framework 4.6.2 bis 4.8.1
    • EvoPdf Classic: .NET 10 bis 6, .NET Standard 2.0, .NET Framework 2.0 und neuer
  • Plattformüberlegungen:
    • EvoPdf Next: Windows (x64, ARM64), Linux (x64, ARM64) und macOS (ARM64), jeweils ein NuGet-Paket pro Plattform
    • EvoPdf Next läuft in Azure App Service, Azure Functions und Docker; die Rendering-Engine wird im Anwendungsprozess gehostet, es muss kein Browser installiert werden
    • EvoPdf Classic: rendert lokal nur auf Windows
    • EvoPdf Classic Client: läuft auf Windows, Linux und macOS und sendet Konvertierungen an einen separat installierten EVO PDF Server (installiert als Azure Cloud Service, IIS-Anwendung oder Windows-Dienst)

EvoPdf Next bietet natives lokales Rendering auf Windows, Linux und macOS. Eine auf EvoPdf Classic basierende Anwendung, die auf Linux oder macOS laufen soll, kann entweder auf EvoPdf Next umsteigen – EVO PDF stellt einen Classic-zu-Next-Migrationsleitfaden bereit – oder das Classic-Rendering auf einem separaten EVO PDF Server belassen und diesen über die Client-Bibliothek ansprechen.

Welche Bibliothek bietet bessere PDF-Funktionalität für typische Aufgaben?

Jedes Codebeispiel in diesem Artikel ist ein vollständiges .NET 8-Konsolenprogramm: Erstellen Sie ein Projekt mit dotnet new console, fügen Sie das im Beispiel genannte NuGet-Paket hinzu und ersetzen Sie Program.cs durch das Beispiel. Die Beispiele deklarieren ihre eigenen using-Direktiven, sodass sie mit oder ohne implizite Usings gebaut werden können. Sie wurden mit IronPdf 2026.9.2, EvoPdf.HtmlToPdf 14.0.2 und EvoPdf.PdfSecurity 14.0.2 kompiliert und ausgeführt. IronPDF benötigt einen Lizenzschlüssel, z.B. einen kostenlosen Testschlüssel, der über IronPdf.License.LicenseKey oder einen IronPdf.LicenseKey-Eintrag in appsettings.json gesetzt wird. EvoPdf läuft ohne Schlüssel und fügt dem Output ein Evaluierungswasserzeichen hinzu.

HTML-zu-PDF-Konvertierung: Rendering-Qualität und Performance

Die grundlegendste Funktion beider Bibliotheken ist die HTML-zu-PDF-Konvertierung, wobei ihre APIs unterschiedliche Ansätze verfolgen.

IronPDF HTML-zu-PDF-Beispiel

// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;
using IronPdf.Rendering;

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        EnableJavaScript = true,

        // Page margins in millimetres
        MarginTop = 20,
        MarginBottom = 20,
        MarginLeft = 15,
        MarginRight = 15,

        CssMediaType = PdfCssMediaType.Print,
        ViewPortWidth = 1920,
        FitToPaperMode = FitToPaperModes.Automatic
    }
};

// Render only after the page calls window.ironpdf.notifyRender(), or after 10 seconds at most
renderer.RenderingOptions.WaitFor.JavaScript(10000);

// The page loads Chart.js and a Google Font from their CDNs, so the renderer needs network access
var htmlContent = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://fonts.googleapis.com/css2?family=Roboto:wght@300;400;700&display=swap' rel='stylesheet'>
    <style>
        body { font-family: 'Roboto', sans-serif; }
        .chart-container { width: 100%; height: 400px; }
        @media print {
            .no-print { display: none; }
        }
    </style>
    <script src='https://cdn.jsdelivr.net/npm/chart.js@4.4.1/dist/chart.umd.min.js'></script>
</head>
<body>
    <h1>Dynamic Sales Report</h1>
    <div class='chart-container'>
        <canvas id='salesChart'></canvas>
    </div>
    <script>
        new Chart(document.getElementById('salesChart'), {
            type: 'line',
            data: {
                labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
                datasets: [{
                    label: 'Sales 2025',
                    data: [65, 78, 90, 81, 96],
                    borderColor: 'rgb(75, 192, 192)',
                    tension: 0.4
                }]
            },
            // No animation, so the chart is fully drawn when the constructor returns
            options: { animation: false }
        });
        window.ironpdf.notifyRender();
    </script>
</body>
</html>";

using var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("sales-report.pdf");

Dieses IronPDF-Beispiel zeigt:

  • JavaScript-Ausführung: Das JavaScript der Seite (hier Chart.js) wird vor dem Rendern ausgeführt
  • Explizites Render-Signal: WaitFor.JavaScript() wartet darauf, dass die Seite window.ironpdf.notifyRender() aufruft, anstatt mit einer festen Verzögerung zu raten
  • Webfonts: Von der Seite referenzierte Fonts werden geladen und eingebettet
  • Print Media Queries: CssMediaType.Print wendet die @media print-Regeln der Seite an

EvoPdf HTML-zu-PDF-Beispiel

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
using System.IO;
using EvoPdf;

HtmlToPdfConverter converter = new HtmlToPdfConverter();

// Production use needs a license key. Leave this line out to evaluate:
// the output then carries an evaluation watermark. An invalid key makes the conversion throw.
// converter.LicenseKey = "<your EvoPdf license key>";

converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.PdfDocumentOptions.PdfPageOrientation = PdfPageOrientation.Portrait;

// EvoPdf margins are in points (1/72 inch): 57 pt is about 20 mm, 43 pt about 15 mm,
// matching the IronPDF example above, whose margins are in millimetres
converter.PdfDocumentOptions.TopMargin = 57;
converter.PdfDocumentOptions.BottomMargin = 57;
converter.PdfDocumentOptions.LeftMargin = 43;
converter.PdfDocumentOptions.RightMargin = 43;

converter.JavaScriptEnabled = true;
converter.ConversionDelay = 2; // seconds

// For pages behind HTTP authentication, also set
// converter.AuthenticationOptions.Username and .Password

// Convert HTML string
string htmlString = @"
<html>
<head>
    <style>
        body { font-family: Arial, sans-serif; }
        table { border-collapse: collapse; width: 100%; }
        th, td { border: 1px solid #ddd; padding: 8px; }
    </style>
</head>
<body>
    <h1>Invoice</h1>
    <table>
        <tr>
            <th>Item</th>
            <th>Quantity</th>
            <th>Price</th>
        </tr>
        <tr>
            <td>Product A</td>
            <td>5</td>
            <td>$50.00</td>
        </tr>
    </table>
</body>
</html>";

// Perform conversion
byte[] pdfBytes = converter.ConvertHtml(htmlString, "");

// Save to file
File.WriteAllBytes("invoice.pdf", pdfBytes);

Der Converter von EvoPdf folgt einem Konfigurieren-dann-Konvertieren-Muster: Zuerst PdfDocumentOptions setzen, dann ConvertHtml() oder ConvertUrl() aufrufen. Jedes EvoPdf-Beispiel in diesem Artikel verwendet die EvoPdf Classic API (EvoPdf.HtmlToPdf-Paket), die unter Windows rendert. EvoPdf Next, die Chromium-basierte Edition, ist ein separates Set von NuGet-Paketen mit eigener API: Beispielsweise wird der Lizenzschlüssel pro Prozess einmalig über die statische Eigenschaft Licensing.LicenseKey gesetzt. EVO dokumentiert in Next die Unterstützung für Flexbox, Grid, ES2015+ JavaScript und Webfonts.

PDF-Sicherheit und Verschlüsselung: Schutz sensibler Dokumente

Sicherheit ist beim Umgang mit sensiblen Dokumenten von größter Bedeutung. Beide Bibliotheken bieten Passwortschutz, Berechtigungssteuerung und Verschlüsselung.

IronPDF Erweiterte Sicherheitsimplementierung

// NuGet: Install-Package IronPdf
using System;
using IronPdf;
using IronPdf.Editing;
using IronPdf.Security;
using IronPdf.Signing;
using IronSoftware.Drawing;

using var pdf = PdfDocument.FromFile("confidential-report.pdf");

// Finish every content change before signing
pdf.ApplyWatermark("<h2 style='color:red; opacity:0.5;'>CONFIDENTIAL</h2>",
    45, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Descriptive document properties (these do not restrict access)
pdf.MetaData.Author = "Finance Team";
pdf.MetaData.Title = "Quarterly Report (Internal)";
pdf.MetaData.ModifiedDate = DateTime.UtcNow;

// Owner password: required to change the permissions below
pdf.SecuritySettings.OwnerPassword = "owner-password";

// User password: required to open the document
pdf.SecuritySettings.UserPassword = "user-password";

pdf.SecuritySettings.AllowUserCopyPasteContentForAccessibility = false;
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = true;
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.PrintLowQuality;
pdf.SecuritySettings.EncryptionType = PdfEncryptionType.Aes_256;

// Visible digital signature: image file, page index, and position/size on the page
var signature = new PdfSignature("certificate.pfx", "cert-password")
{
    SigningReason = "Document Approval",
    SigningLocation = "Head Office",
    SigningContact = "security@example.com",
    SignatureImage = new PdfSignatureImage("signature.png", 0, new Rectangle(100, 100, 200, 50))
};
pdf.Sign(signature);

// The signature is applied when the file is saved
pdf.SaveAs("secured-document.pdf");

Die hier gezeigten Sicherheitsfunktionen von IronPDF:

  • Granulare Berechtigungen: Kontrolle über Druckqualität, Kopieren, Kommentare, Formularausfüllung und Bearbeitung
  • Sichtbare digitale Signaturen: Eine Signatur mit Grund, Ort und Signaturbild
  • Dokumenteigenschaften: Autor, Titel und Daten setzen (nur beschreibend)
  • Mehrschichtiger Schutz: Kombination aus Wasserzeichen, Verschlüsselung und Signatur in einem Dokument

EvoPdf Sicherheitskonfiguration

// NuGet: Install-Package EvoPdf.PdfSecurity
// (licensed with the EVO PDF Toolkit; not included in the standalone HTML to PDF license)
using EvoPdf.PdfSecurity;

PdfSecurityOptions securityOptions = new PdfSecurityOptions();

// Set basic security parameters
securityOptions.UserPassword = "user123";
securityOptions.OwnerPassword = "owner456";
securityOptions.EncryptionAlgorithm = EncryptionAlgorithm.AES;
securityOptions.KeySize = EncryptionKeySize.EncryptKey256Bit;

// Configure permissions
securityOptions.CanPrint = true;
securityOptions.CanCopyContent = false;
securityOptions.CanEditContent = false;
securityOptions.CanEditAnnotations = false;
securityOptions.CanFillFormFields = true;
securityOptions.CanAssembleDocument = false;

// Apply security to existing PDF
PdfSecurityManager securityManager = new PdfSecurityManager(securityOptions);
securityManager.SaveSecuredPdfToFile("input.pdf", "secured-output.pdf");

EvoPdf deckt die gleichen Kernfunktionen ab: Benutzer- und Besitzerpasswörter, Verschlüsselung und Berechtigungen für Drucken, Kopieren, Bearbeiten, Kommentare, Formularausfüllung und Dokumentzusammenstellung. EVO dokumentiert den Algorithmus (RC4 oder AES) und die Schlüssellänge (40, 128 oder 256 Bit) als separate Einstellungen; in unseren Tests mit Version 14.0.2 erzeugten RC4 mit 40 oder 128 Bit und AES mit 128 oder 256 Bit die erwartete Verschlüsselung, daher AES-128 oder AES-256 verwenden; RC4 ist ein veralteter Algorithmus. Mit der eigenständigen HTML-zu-PDF-Lizenz wenden die PdfSecurityOptions des Converters denselben Schutz direkt während der PDF-Erstellung an, ohne die separate PDF Security-Komponente.

Inhaltsredaktion: Entfernen sensibler Informationen

Das dauerhafte Entfernen sensibler Texte, bevor ein Dokument weitergegeben wird, ist eine häufige Anforderung in Anwendungen, die mit personenbezogenen Daten arbeiten. Redaktion ist ein Baustein dafür; allein macht sie eine Anwendung jedoch nicht konform mit Vorschriften wie DSGVO, HIPAA oder CCPA.

IronPDF Redaktionsbeispiel

// NuGet: Install-Package IronPdf
using IronPdf;
using IronSoftware.Drawing;

// This example expects a PDF with at least three pages
using var pdf = PdfDocument.FromFile("customer-records.pdf");

// 1. Redact a specific value on every page
pdf.RedactTextOnAllPages("123-45-6789");

// 2. Redact a word on specific pages (zero-based page indexes)
pdf.RedactTextOnPages(new[] { 0, 1, 2 }, "Confidential", CaseSensitive: false);

// 3. Redact a rectangular region on the first page
pdf.RedactRegionOnPage(0, new RectangleF(100, 200, 300, 50));

// 4. Replace a complete sensitive value with a label instead of drawing a black box
pdf.RedactTextOnAllPages("ACCT-0042-7781", DrawRectangles: false, ReplacementText: "[REDACTED]");

pdf.SaveAs("redacted-records.pdf");

Die Redaktionsfunktionen von IronPDF umfassen:

  • Inhaltsentfernung: Gefundener Text wird aus dem Seiteninhalt entfernt, sodass er nicht mehr extrahiert werden kann, nicht nur überdeckt
  • Abgleichsoptionen: Groß-/Kleinschreibung und ganze Wörter abgleichen
  • Redaktionsdarstellung: Schwarze Kästen zeichnen oder Ersatztext einfügen
  • Selektive Redaktion: Bestimmte Seiten oder Bereiche gezielt bearbeiten

Textredaktion gleicht Text im Seiteninhalt ab. Text in Bildern, wie z.B. einer gescannten Seite, wird nicht erkannt; eine Bereichsredaktion deckt einen festen Bereich ab, unabhängig vom Inhalt. EvoPdf dokumentiert keine Redaktionsfunktion.

Formularverarbeitung: Interaktive PDFs erstellen

Beide Bibliotheken unterstützen PDF-Formulare, aber mit unterschiedlichen Ansätzen zur Erstellung und Bearbeitung.

IronPDF Formularbeispiel

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

// Create a new PDF with an HTML form
var html = @"
<html>
<body>
    <h2>Employee Information Form</h2>
    <form>
        <label>Full Name:</label>
        <input type='text' name='fullName' required />
        
        <label>Email:</label>
        <input type='email' name='email' required />
        
        <label>Department:</label>
        <select name='department'>
            <option value=''>Select Department</option>
            <option value='IT'>Information Technology</option>
            <option value='HR'>Human Resources</option>
            <option value='Sales'>Sales</option>
        </select>
        
        <label>Start Date:</label>
        <input type='text' name='startDate' placeholder='YYYY-MM-DD' />
        
        <label>
            <input type='checkbox' name='agreement' />
            I agree to the terms and conditions
        </label>
        
        <button type='submit'>Submit</button>
    </form>
</body>
</html>";

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        CreatePdfFormsFromHtml = true // Enable form field creation
    }
};

using var pdf = renderer.RenderHtmlAsPdf(html);

// Programmatically fill form fields
pdf.Form.FindFormField("fullName").Value = "John Doe";
pdf.Form.FindFormField("email").Value = "john.doe@example.com";
// A dropdown takes one of its displayed choices, not the HTML option value ("IT")
pdf.Form.FindFormField("department").Value = "Information Technology";
pdf.Form.FindFormField("startDate").Value = DateTime.Now.ToString("yyyy-MM-dd");
// "Yes" is the checkbox's checked state
pdf.Form.FindFormField("agreement").Value = "Yes";

// Make specific fields read-only
pdf.Form.FindFormField("email").ReadOnly = true;

// Save as fillable form
pdf.SaveAs("fillable-form.pdf");

// Or flatten the form (convert to static content)
pdf.Flatten();
pdf.SaveAs("completed-form.pdf");

IronPDFs Formularfunktionen:

  • Automatische Formularerstellung: Wandelt HTML-Formulare in PDF-Formulare um
  • Programmgesteuerte Bearbeitung: Formularfelder per API ausfüllen, lesen und ändern
  • Feldtypen: Textfelder (inkl. E-Mail, Nummer und Telefon) und Textareas werden zu Textfeldern; Checkboxen, Radiobuttons und Dropdowns behalten ihren Typ. HTML-Date-Felder werden nicht in Formularfelder umgewandelt, daher verwendet das Startdatum oben ein Textfeld.
  • Feldeigenschaften: Werte und Schreibschutz setzen
  • Formular-„Flattening“: Ausgefüllte Formulare in statische PDFs umwandeln

Performance-Überlegungen

Die Performance variiert je nach Dokumentenkomplexität und Anwendungsfall erheblich:

Zeitmessung für einen Dokumentenstapel

// NuGet: Install-Package IronPdf
using System;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using IronPdf;

// Timing harness for a batch of documents. Replace the generated HTML with your own templates.
const int documentCount = 100;
const int maxConcurrency = 4;

var htmlDocuments = Enumerable.Range(1, documentCount)
    .Select(i => $"<html><body><h1>Invoice {i}</h1><p>Amount due: {i * 10} USD</p></body></html>")
    .ToList();

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        EnableJavaScript = false // static content only
    }
};

// Cap how many renders run at once instead of starting every render immediately
using var gate = new SemaphoreSlim(maxConcurrency);
var stopwatch = Stopwatch.StartNew();

var tasks = htmlDocuments.Select(async (html, index) =>
{
    await gate.WaitAsync();
    try
    {
        using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
        pdf.SaveAs($"invoice-{index + 1}.pdf");
    }
    finally
    {
        gate.Release();
    }
});
await Task.WhenAll(tasks);

stopwatch.Stop();
Console.WriteLine($"Documents: {documentCount}, at most {maxConcurrency} at a time");
Console.WriteLine($"Total elapsed: {stopwatch.ElapsedMilliseconds} ms");
// Elapsed time divided by the document count: an amortized figure, not the latency of one request
Console.WriteLine($"Amortized time per document: {stopwatch.ElapsedMilliseconds / (double)documentCount:F1} ms");
// Resident memory of this process only, sampled once at the end; the Chromium helper
// processes are not included, and this is not the peak
Console.WriteLine($"Working set of this process at end: {Process.GetCurrentProcess().WorkingSet64 / 1024 / 1024} MB");

Dieser Artikel enthält keinen direkten Benchmark: Die Ergebnisse hängen von Vorlagen, Hardware und Deployment ab, daher sollten Sie selbst messen. Dokumentierte Stellschrauben für jede Bibliothek:

  • IronPDF Engine-Version: Bei langsamen Renderings moderner, JavaScript-lastiger oder tief verschachtelter Seiten, einschließlich Seiten auf Basis von Bootstrap oder Tailwind, empfiehlt IronPDF das IronPdf.UpdatedChrome-Paket, das Chromium 131 statt Chromium 109 des Standardpakets enthält
  • IronPDF Parallelität: Asynchrone Rendering-Methoden wie RenderHtmlAsPdfAsync, mit eigener Begrenzung, wie viele Renderings gleichzeitig laufen
  • EvoPdf Next Rendering-Modi: GlobalSettings.HtmlRendererMode auf PersistentProcess (Standard) hält einen Rendering-Engine-Prozess zwischen Konvertierungen am Laufen, ProcessPerConversion startet pro Konvertierung einen neuen; Konvertierungen können parallel laufen, jeweils mit eigenem Converter, und GlobalSettings.MaxParallelConversions begrenzt die gleichzeitigen Konvertierungen
  • EvoPdf Next asynchrone Methoden: ConvertHtmlAsync und ConvertUrlAsync für async/await-Code

Wie vergleichen sich die Preismodelle für verschiedene Teamgrößen?

IronPDF Lizenzstruktur

IronPDF bietet verschiedene Preisoptionen, darunter Lite-, Plus- und Professional-Lizenzen, mit der Option auf lizenzfreie Weiterverteilung. Das Lizenzmodell ist darauf ausgelegt, mit Ihrem Team und Ihren Projekten zu skalieren (Preise Stand September 2026):

  • Lite-Lizenz: $999
    • 1 Entwickler
    • 1 Standort
    • 1 Projekt
    • E-Mail-Support
    • Ideal für: Einzelentwickler, kleine Projekte
  • Plus-Lizenz: $1,499
    • 3 Entwickler
    • 3 Standorte
    • 3 Projekte
    • E-Mail (48h SLA) und Live-Chat-Support
    • Ideal für: Kleine Teams, mehrere Projekte
  • Professional-Lizenz: $2,999
    • 10 Entwickler
    • 10 Standorte
    • 10 Projekte
    • E-Mail (24h SLA), Live-Chat, Telefon- und Screensharing-Support
    • Ideal für: Mittlere bis große Teams
  • Zusätzliche Optionen:
    • Lizenzfreie Weiterverteilung (OEM/SaaS): +$1,999, für kommerzielle Software und SaaS, bei denen Endnutzer IronPDF-APIs nicht direkt aufrufen
    • SDK-Lizenz: erforderlich, wenn ein Produkt IronPDF-Funktionalität über eine öffentliche API anderen Entwicklern bereitstellt
    • Support- und Updateverlängerungen: 1, 3 oder 5 Jahre, preislich nach Lizenzstufe gestaffelt
    • Iron Suite: alle 10 Iron Software-Produkte, lizenziert in denselben Stufen; Iron Suite Lite (1 Entwickler, 1 Standort, 1 Projekt) kostet $2,998

EvoPdf Lizenzoptionen

EVO PDF Toolkit und der eigenständige HTML-zu-PDF-Konverter bieten jeweils zwei Lizenzstufen, Deployment und Company (Preise Stand September 2026; aktuelle Preise unter evopdf.com/buy prüfen). Die HTML-zu-PDF-Lizenz deckt sowohl die Next- als auch die Classic-Konverter ab; die anderen Komponenten wie PDF Security sind nur im Toolkit enthalten.

  • Deployment-Lizenz:
    • EVO HTML to PDF: $450
    • EVO PDF Toolkit: $650
    • Eine Anwendung auf einem Server, genutzt vom eigenen Unternehmen
    • Unbegrenzte Entwickler für diese Anwendung
    • Lastverteilte, containerisierte oder autoskalierte Deployments benötigen eine Company-Lizenz
    • Keine Weiterverteilung
    • Standard-Support im ersten Jahr
  • Company-Lizenz:
    • EVO HTML to PDF: $1,200
    • EVO PDF Toolkit: $1,400
    • Unbegrenzte Entwickler, Anwendungen und Server
    • Weiterverteilung an eigene Kunden innerhalb der eigenen Anwendungen; die Lizenzvereinbarung erlaubt nicht, die Konvertierungsfunktionalität als eigenständigen Dienst, gehostete API oder SDK ohne schriftliche Genehmigung von EVO anzubieten
    • Priority-Support im ersten Jahr

Analyse der Gesamtkosten

Jedes Szenario unten nennt seine Deployment-Annahmen, da beide Anbieter nach Umfang und Teamgröße lizenzieren:

Szenario 1: Zwei Entwickler, eine interne Anwendung auf einem Server

  • IronPDF Plus: $1,499 (Lite deckt 1 Entwickler ab, ein 2er-Team benötigt Plus, das bis zu 3 abdeckt)
  • EvoPdf Deployment: $450 (eine Anwendung auf einem Server; Entwickler werden nicht gezählt)
  • Läuft die Anwendung auf mehreren Servern, hinter einem Load Balancer oder in autoskalierten Containern, benötigt EvoPdf die Company-Lizenz ($1,200)
  • Günstigere Lizenz: EvoPdf

Szenario 2: Fünf Entwickler, mehrere interne Anwendungen

  • IronPDF Professional: $2,999 (bis zu 10 Entwickler, 10 Standorte, 10 Projekte; Plus deckt nur 3 Entwickler ab)
  • EvoPdf Company: $1,200 (mehr als eine Anwendung benötigt die Company-Lizenz)
  • Günstigere Lizenz: EvoPdf

Szenario 3: Zehn Entwickler benötigen PDF- und andere Dokumenten-Tools

  • Iron Suite Professional: 10 Entwickler, 10 Standorte, 10 Projekte, alle 10 Iron Software-Produkte (siehe Iron Suite Lizenzseite für den aktuellen Preis)
  • EVO PDF Toolkit Company: $1,400 (unbegrenzte Entwickler, Anwendungen und Server; PDF-fokussiert, ohne OCR- oder Barcode-Tools)
  • Anderer Umfang: Das EVO PDF Toolkit ist günstiger, wenn Sie nur PDF-Tools benötigen. Iron Suite enthält zusätzlich OCR, Barcode, Excel, Word und andere Bibliotheken, die das Toolkit nicht ersetzt. Vergleichen Sie beide nur bei gleichem Entwickler- und Deployment-Umfang.

Szenario 4: Kommerzielles SaaS-Produkt, das PDFs für seine Kunden generiert

  • IronPDF Professional + OEM-Weiterverteilung: $2,999 + $1,999 (deckt SaaS ab, bei denen Endbenutzer die IronPDF-APIs nicht direkt aufrufen)
  • EvoPdf Company: $1,200 (inklusive Weiterverteilung; die PDF-Erstellung muss ein Feature Ihres Produkts sein und darf kein allgemeiner Konvertierungsdienst sein)
  • Niedrigere Lizenzkosten: EvoPdf, sofern das Produkt die Konvertierungsfunktionalität nicht als Dienst oder öffentliche API bereitstellt; beide Anbieter lizenzieren diesen Fall separat

Wie beeinflussen moderne CSS-Frameworks Ihre Auswahl?

Ein oft unterschätzter Faktor bei der Auswahl einer PDF-Bibliothek ist die Unterstützung moderner CSS-Frameworks. Da Bootstrap, Tailwind CSS und Foundation in der Webentwicklung weit verbreitet sind, wirkt sich die Fähigkeit Ihrer Bibliothek, diese Frameworks zu verarbeiten, direkt auf die Entwicklungseffizienz und die Ausgabequalität aus.

IronPDF: Framework-Unterstützung hängt von der Chromium-Version ab

Die Chromium-Engine von IronPDF rendert CSS-Frameworks so, wie es die mitgelieferte Chromium-Version tut. Prüfen Sie daher die Browser-Anforderungen eines Frameworks im Vergleich zu dem Paket, das Sie ausliefern:

  • Bootstrap 5: Flexbox- und CSS-Grid-Layouts werden unterstützt
  • Tailwind CSS: Tailwind CSS v4 erfordert Chrome 111 oder neuer, was neuer ist als das Chromium 109 des Standard-Windows-Pakets. Unter Windows benötigen v4-Layouts daher das IronPdf.UpdatedChrome-Paket (Chromium 131). Tailwind empfiehlt, bei v3.4 zu bleiben, wenn ältere Browser unterstützt werden müssen. Testen Sie Ihre eigenen Vorlagen mit dem Paket, das Sie bereitstellen.
  • Modernes CSS3: Transforms und benutzerdefinierte Eigenschaften werden unterstützt
  • Engine-Version ist entscheidend: Einige neuere CSS-Features wie subgrid, overflow: hidden-Randfälle und benutzerdefinierte Zeilenhöhen werden nur mit IronPdf.UpdatedChrome korrekt gerendert. IronPDF empfiehlt dieses Paket auch, wenn Bootstrap- oder Tailwind-Seiten langsam gerendert werden. IronPdf.UpdatedChrome unterstützt keine 32-Bit-Prozesse, Windows Server 2012 oder den SingleProcess-Modus. Prüfen Sie daher Ihre Zielumgebungen, bevor Sie wechseln.

Codebeispiel: Bootstrap Timeline-Komponente

// NuGet: Install-Package IronPdf
using IronPdf;

var renderer = new ChromePdfRenderer();

string bootstrapTimeline = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .timeline { position: relative; padding: 20px 0; }
        .timeline::before {
            content: '';
            position: absolute;
            left: 50%;
            width: 2px;
            height: 100%;
            background: #dee2e6;
        }
        .timeline-item { position: relative; margin: 20px 0; }
    </style>
</head>
<body>
    <div class='container py-5'>
        <h2 class='text-center mb-5'>Project Timeline</h2>
        <div class='timeline'>
            <div class='timeline-item'>
                <div class='row'>
                    <div class='col-md-6'>
                        <div class='card shadow-sm'>
                            <div class='card-body'>
                                <h5 class='card-title'>Phase 1: Planning</h5>
                                <p class='text-muted'>Q1 2025</p>
                                <p class='card-text'>Initial project scope and requirements gathering completed.</p>
                                <span class='badge bg-success'>Completed</span>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
            <!-- Additional timeline items... -->
        </div>
    </div>
</body>
</html>";

// The page loads Bootstrap from a CDN, so the renderer needs network access
using var pdf = renderer.RenderHtmlAsPdf(bootstrapTimeline);
pdf.SaveAs("project-timeline.pdf");

EvoPdf: Chromium in Next, EVO-eigene Engine in Classic

Die beiden Editionen von EvoPdf gehen unterschiedlich mit modernem CSS um:

  • EvoPdf Next: Chromium-basierte Engine (Chromium 142 laut EVO PDF) mit dokumentierter Unterstützung für Flexbox, Grid, ES2015+ JavaScript und Webfonts
  • EvoPdf Classic: EVOs eigene Rendering-Engine, die laut EVO CSS3, SVG, Webfonts und JavaScript unterstützt; die New Edition ergänzt ECMAScript 6, WOFF 2, HTTP/2 und TLS 1.3

Auswirkung auf die Entwicklung: Wenn Ihre Anwendung Bootstrap oder Tailwind intensiv nutzt und Sie PDFs benötigen, die Ihrer Weboberfläche entsprechen, testen Sie Ihre echten Vorlagen mit der Testversion jeder Bibliothek. Bei Chromium-basierten Engines auf beiden Seiten (IronPDF und EvoPdf Next) hängen Unterschiede eher von der Engine-Version und Konfiguration als von der Framework-Unterstützung ab.

Weitere Informationen zur Kompatibilität mit CSS-Frameworks finden Sie im Bootstrap & Flexbox CSS Guide.

Welche Dokumentations- und Supportoptionen unterstützen Entwickler besser?

IronPDFs Entwicklerressourcen

IronPDF bietet Dokumentation, 24/5 Live-Chat, 24/7 technischen Support mit Premium Support, Video-Tutorials und regelmäßige Updates. Das Support-Ökosystem umfasst:

  • Dokumentationsqualität:
  • Support-Kanäle:
    • 24/7 technischer Support mit Premium Support, verfügbar für bezahlte Lizenzen; Testnutzer erhalten Premium Support während der Testphase
    • E-Mail-Antwortzeiten: 48 Stunden (Plus), 24 Stunden (Professional), 12 Stunden (Unlimited)
    • Live-Chat in allen Lizenzstufen, 24/5
    • Telefonsupport für Professional- und Unlimited-Lizenzen
    • Bildschirmfreigabe für Professional- und Unlimited-Lizenzen
  • Lernressourcen:
    • Einstiegshilfen
    • Leitfäden zur Leistungsoptimierung
    • Sicherheitsbest-Practices
    • Leitfäden zur Cloud-Bereitstellung

EvoPdf's Support-Struktur

EvoPdf bietet Dokumentation und Support über:

  • Dokumentation:
    • API-Referenzdokumentation
    • Codebeispiele für gängige Szenarien sowie Codebeispiele auf GitHub
    • Online-Demo-Anwendung
    • Support-FAQ zu Lizenzierung, Bereitstellung und Konvertierung
  • Support-Optionen:
    • Technischer Support im ersten Jahr enthalten und kostenlos während der Evaluierung
    • Standard-Support (Deployment-Lizenz) oder Priority-Support (Company-Lizenz)
    • Wartungsverlängerungen nach dem ersten Jahr verfügbar

Der Hauptunterschied liegt im Umfang der Lerninhalte von IronPDF (Tutorials, Anleitungen und Videos) sowie im 24/5 Live-Chat und 24/7 Support mit Premium Support.

Was sind die besten Anwendungsfälle für jede Bibliothek?

Wann sollte man IronPDF wählen?

IronPDF überzeugt in Szenarien, die Folgendes erfordern:

1. Integration moderner Webanwendungen

  • SaaS-Plattformen, die dynamische Berichte generieren
  • E-Commerce-Seiten, die Rechnungen mit Diagrammen erstellen
  • Business-Intelligence-Dashboards, die als PDFs exportiert werden
  • Anwendungen mit React, Angular oder Vue.js

2. Dokumente mit sensiblen Inhalten

  • Entfernen persönlicher Daten aus Dokumenten vor der Weitergabe
  • Verschlüsseln und Passwortschutz für generierte Berichte
  • Signieren von Dokumenten, um spätere Änderungen erkennbar zu machen
  • Verwaltung juristischer Dokumente mit Schwärzung

3. Komplexe Dokumentenverarbeitung

  • Multi-Format-Dokumentenkonvertierung (DOCX, HTML, Bilder)
  • OCR für gescannte Dokumente über IronOCR
  • Stapelverarbeitung mit paralleler Ausführung
  • Dokumente mit digitalen Signaturen

4. Plattformübergreifende Bereitstellung

  • Docker-containerisierte Anwendungen
  • Cloud-Bereitstellungen auf Linux-Basis
  • Microservices-Architekturen
  • Serverlose Funktionen (AWS Lambda, Azure Functions)

Beispiel: Schutz eines generierten Berichts

// NuGet: Install-Package IronPdf
using System.Net;
using IronPdf;
using IronPdf.Security;
using IronPdf.Signing;

var patient = new PatientRecord("P-10442", "Jane <Q.> Doe & Family", "123-45-6789", "open-sesame");

// HTML-encode text values, so characters such as & and < print as text instead of changing the markup
var html = $@"
<html>
<body>
    <h1>Patient Summary</h1>
    <p>Patient ID: {WebUtility.HtmlEncode(patient.PatientId)}</p>
    <p>Name: {WebUtility.HtmlEncode(patient.Name)}</p>
    <p>SSN: {WebUtility.HtmlEncode(patient.Ssn)}</p>
</body>
</html>";

var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(html);

// Remove the SSN from the page content wherever it appears
pdf.RedactTextOnAllPages(patient.Ssn);

// Descriptive document properties
pdf.MetaData.Author = "Records System";
pdf.MetaData.Title = $"Patient Summary {patient.PatientId}";

// Require a password to open the file, restrict copying, and encrypt with AES-256
pdf.SecuritySettings.UserPassword = patient.AccessCode;
pdf.SecuritySettings.OwnerPassword = "records-owner-password";
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.EncryptionType = PdfEncryptionType.Aes_256;

// Sign last, so changes made to the file after signing can be detected
pdf.Sign(new PdfSignature("records-cert.pfx", "password")
{
    SigningReason = "Record export",
    SigningLocation = "Records Department"
});

pdf.SaveAs("patient-summary.pdf");

record PatientRecord(string PatientId, string Name, string Ssn, string AccessCode);

Dies sind Bausteine der Dokumentenverarbeitung. Ob eine Anwendung eine Vorschrift wie HIPAA erfüllt, hängt auch davon ab, wie sie Daten speichert, überträgt und den Zugriff steuert – keine PDF-Einstellung allein stellt dies sicher.

Wann sollte man EvoPdf wählen?

EvoPdf eignet sich besonders für:

1. HTML-zu-PDF-Konvertierung

  • Berichte aus HTML-Vorlagen
  • Modernes HTML, CSS und JavaScript mit dem Chromium-basierten EvoPdf Next
  • Rechnungen und Quittungen
  • Massendokumentenerstellung mit konsistenten Vorlagen

2. Kostenbewusste Teams

  • Unbegrenzte Entwickler mit einer einzigen Lizenz
  • Geringere Einstiegskosten ($450 Deployment-Lizenz)
  • Projekte, die keine integrierte Schwärzung benötigen

3. Spezifische Serverumgebungen

  • Legacy .NET Framework-Anwendungen (EvoPdf Classic unterstützt .NET Framework 2.0 und neuer)
  • Pro-Server-Lizenzierung für eine einzelne Anwendung
  • Integration in Altsysteme

4. Hochvolumige Konvertierungen

  • Statische Berichtserstellung
  • Dokumentationssysteme
  • Druckfertige Dokumentenerstellung

Praxisbeispiel: Rechnungserstellungssystem

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
using System;
using System.Globalization;
using System.IO;
using System.Net;
using EvoPdf;

var invoice = new InvoiceData("INV-2026-0042", new DateTime(2026, 9, 1), "Smith & Sons <Ltd>", 1250.00m);

var converter = new HtmlToPdfConverter
{
    // LicenseKey = "<your EvoPdf license key>",
    JavaScriptEnabled = false, // not needed for static invoices
    ConversionDelay = 0
};
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.PdfDocumentOptions.TopMargin = 30;    // points
converter.PdfDocumentOptions.BottomMargin = 30; // points

string template =
    "<html><body><h1>Invoice {{InvoiceNumber}}</h1>" +
    "<p>Date: {{Date}}</p><p>Customer: {{CustomerName}}</p><p>Total: {{Total}}</p></body></html>";

// HTML-encode text values, so characters such as & and < print as text instead of changing the markup
string html = template
    .Replace("{{InvoiceNumber}}", WebUtility.HtmlEncode(invoice.InvoiceNumber))
    .Replace("{{Date}}", invoice.Date.ToString("yyyy-MM-dd"))
    .Replace("{{CustomerName}}", WebUtility.HtmlEncode(invoice.CustomerName))
    .Replace("{{Total}}", invoice.Total.ToString("C", CultureInfo.GetCultureInfo("en-US")));

File.WriteAllBytes($"invoice-{invoice.InvoiceNumber}.pdf", converter.ConvertHtml(html, ""));

record InvoiceData(string InvoiceNumber, DateTime Date, string CustomerName, decimal Total);

Erweiterte Implementierungsmuster und Best Practices

Performance-Optimierung im Produktivbetrieb

Beide Bibliotheken profitieren von richtiger Konfiguration und Nutzungsmustern:

IronPDF Performance-Optimierung

// NuGet: Install-Package IronPdf
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using IronPdf;
using IronPdf.Engines.Chrome;
using IronPdf.Rendering;

// Global engine settings: set once at startup, before the first render
Installation.ChromeGpuMode = ChromeGpuModes.Disabled; // servers usually have no GPU
// Set to false only if the Linux dependencies are already installed in your image
Installation.LinuxAndDockerDependenciesAutoConfig = false;

var service = new PdfService(maxConcurrency: 4);
var pages = Enumerable.Range(1, 8).Select(i => $"<h1>Report {i}</h1>");
byte[][] results = await Task.WhenAll(pages.Select(service.GeneratePdfAsync));

for (int i = 0; i < results.Length; i++)
    File.WriteAllBytes($"report-{i + 1}.pdf", results[i]);
Console.WriteLine($"Generated {results.Length} PDFs");

public class PdfService
{
    private readonly ChromePdfRenderer _renderer;
    private readonly SemaphoreSlim _gate;

    public PdfService(int maxConcurrency)
    {
        // Caps how many renders run at once
        _gate = new SemaphoreSlim(maxConcurrency);

        _renderer = new ChromePdfRenderer
        {
            RenderingOptions = new ChromePdfRenderOptions
            {
                EnableJavaScript = false, // only if the pages need no JavaScript
                CssMediaType = PdfCssMediaType.Screen,
                Timeout = 30 // seconds
            }
        };
    }

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        await _gate.WaitAsync();
        try
        {
            using var pdf = await _renderer.RenderHtmlAsPdfAsync(html);
            return pdf.BinaryData;
        }
        finally
        {
            _gate.Release();
        }
    }
}

EvoPdf Performance-Muster

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
using System;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using EvoPdf;

var service = new EvoPdfService(maxConcurrency: 4);
var pages = Enumerable.Range(1, 8).Select(i => $"<h1>Report {i}</h1>");
byte[][] results = await Task.WhenAll(pages.Select(service.GeneratePdfAsync));

for (int i = 0; i < results.Length; i++)
    File.WriteAllBytes($"evopdf-report-{i + 1}.pdf", results[i]);
Console.WriteLine($"Generated {results.Length} PDFs");

public class EvoPdfService
{
    private readonly SemaphoreSlim _gate;

    // Caps how many conversions run at once
    public EvoPdfService(int maxConcurrency) => _gate = new SemaphoreSlim(maxConcurrency);

    public async Task<byte[]> GeneratePdfAsync(string html)
    {
        await _gate.WaitAsync();
        try
        {
            // A new converter for each conversion, as EVO documents for parallel conversions
            var converter = new HtmlToPdfConverter
            {
                // LicenseKey = "<your EvoPdf license key>",
                JavaScriptEnabled = false,
                ConversionDelay = 0
            };

            // The Classic API is synchronous, so run it on a thread-pool thread
            return await Task.Run(() => converter.ConvertHtml(html, ""));
        }
        finally
        {
            _gate.Release();
        }
    }
}

Das Semaphore begrenzt in beiden Beispielen die Parallelität. In EvoPdf Next setzt GlobalSettings.MaxParallelConversions die gleiche Art von Limit innerhalb der Bibliothek, und der persistente Renderer hält den Rendering-Engine-Prozess zwischen den Konvertierungen am Laufen.

Fehlerbehandlung und Debugging

Produktivcode muss Rendering-Fehler behandeln, etwa wenn eine Seite nicht geladen werden kann:

IronPDF Fehlerbehandlung

// NuGet: Install-Package IronPdf
using System;
using System.IO;
using System.Threading.Tasks;
using IronPdf;
using IronPdf.Exceptions;

// Write IronPDF's own diagnostics to a log file
IronPdf.Logging.Logger.LogFilePath = "ironpdf.log";
IronPdf.Logging.Logger.LoggingMode = IronPdf.Logging.Logger.LoggingModes.All;

var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.Timeout = 60; // seconds

byte[] page = await TryRenderUrlAsync(renderer, "https://example.com/");
if (page != null)
{
    File.WriteAllBytes("example.pdf", page);
    Console.WriteLine($"Rendered {page.Length} bytes");
}

// A host that does not resolve makes the render throw, which exercises the error path
byte[] missing = await TryRenderUrlAsync(renderer, "https://nonexistent.invalid/");
Console.WriteLine(missing == null ? "Second render failed and was handled" : "Second render succeeded");

// Returns the PDF bytes, or null if the page could not be rendered
static async Task<byte[]> TryRenderUrlAsync(ChromePdfRenderer renderer, string url)
{
    try
    {
        using var pdf = await renderer.RenderUrlAsPdfAsync(url);
        if (pdf.PageCount == 0)
        {
            Console.Error.WriteLine($"No pages rendered for {url}");
            return null;
        }
        return pdf.BinaryData;
    }
    catch (IronPdfNativeException ex)
    {
        // Raised by the rendering engine, for example when the page cannot be loaded
        Console.Error.WriteLine($"Rendering failed for {url}: {ex.Message}");
        return null;
    }
}

Branchenspezifische Implementierungsbeispiele

Finanzberichte: Signierte, schreibgeschützte Auszüge

Ein Auszug, der nach der Freigabe nicht mehr verändert werden soll, kann Wasserzeichen, eingeschränkte Berechtigungen und eine Signatur kombinieren:

// NuGet: Install-Package IronPdf
using System;
using IronPdf;
using IronPdf.Editing;
using IronPdf.Security;
using IronPdf.Signing;
using IronSoftware.Drawing;

var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf(
    "<h1>Quarterly Statement: Q3 2026</h1>" +
    "<table><tr><td>Revenue</td><td>1,250,000</td></tr><tr><td>Expenses</td><td>980,000</td></tr></table>");

// Mark the document as a draft
pdf.ApplyWatermark(@"
    <div style='color: rgba(0,0,0,0.1); font-size: 120px; transform: rotate(-45deg); font-family: Arial;'>
        DRAFT
    </div>", 30, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Descriptive document properties: useful for search and filing, not a record of who changed what
pdf.MetaData.Author = "Financial Reporting System";
pdf.MetaData.Keywords = "Quarterly Statement, Q3 2026";
pdf.MetaData.CustomProperties.Add("ReportPeriod", "2026-Q3");
pdf.MetaData.CustomProperties.Add("GeneratedAt", DateTime.UtcNow.ToString("O"));

// Restrict editing; the owner password is needed to change these permissions
pdf.SecuritySettings.OwnerPassword = "finance-owner-password";
pdf.SecuritySettings.AllowUserEdits = PdfEditSecurity.NoEdit;
pdf.SecuritySettings.AllowUserCopyPasteContent = true;
pdf.SecuritySettings.AllowUserPrinting = PdfPrintSecurity.FullPrintRights;
pdf.SecuritySettings.EncryptionType = PdfEncryptionType.Aes_256;

// Sign last: readers can then detect changes made after signing
pdf.Sign(new PdfSignature("financial-cert.pfx", "password")
{
    SigningReason = "Statement approval",
    SigningLocation = "Finance Department",
    // Visible signature image on the first page
    SignatureImage = new PdfSignatureImage("cfo-signature.png", 0, new Rectangle(50, 50, 200, 60))
});

pdf.SaveAs("quarterly-statement.pdf");

Die Signatur macht spätere Änderungen erkennbar und die Berechtigungen erschweren das Bearbeiten; keine dieser Maßnahmen allein ist ein Compliance-Kontrollmechanismus oder ein Audit-Trail, wer was getan hat.

E-Commerce: Dynamische Rechnungserstellung

E-Commerce-Plattformen benötigen eine schnelle, zuverlässige Rechnungserstellung:

// NuGet: Install-Package IronPdf
using System;
using System.Globalization;
using System.Linq;
using System.Net;
using IronPdf;
using IronPdf.Rendering;

var order = new Order("INV-1001", new DateTime(2026, 9, 1), new[]
{
    new OrderItem("Widget <Deluxe> & Co. edition", 2, 19.99m),
    new OrderItem("Gift wrap", 1, 4.50m)
});

var renderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        MarginTop = 10,    // millimetres
        MarginBottom = 10,
        PaperSize = PdfPaperSize.A4
    }
};

var usd = CultureInfo.GetCultureInfo("en-US");

// HTML-encode text values, so characters such as & and < print as text instead of changing the markup
string rows = string.Concat(order.Items.Select(item => $@"
        <tr>
            <td>{WebUtility.HtmlEncode(item.Name)}</td>
            <td>{item.Quantity}</td>
            <td>{item.Price.ToString("C", usd)}</td>
            <td>{item.Total.ToString("C", usd)}</td>
        </tr>"));

var html = $@"
<html>
<head>
    <style>
        body {{ font-family: Arial, sans-serif; }}
        .invoice-header {{ background: #f0f0f0; padding: 20px; }}
        table {{ width: 100%; border-collapse: collapse; }}
        th, td {{ padding: 10px; border-bottom: 1px solid #ddd; text-align: left; }}
    </style>
</head>
<body>
    <div class='invoice-header'>
        <h1>Invoice #{WebUtility.HtmlEncode(order.InvoiceNumber)}</h1>
        <p>Date: {order.Date:yyyy-MM-dd}</p>
    </div>
    <table>
        <tr><th>Item</th><th>Quantity</th><th>Price</th><th>Total</th></tr>
        {rows}
        <tr><td colspan='3'><strong>Total</strong></td><td><strong>{order.Total.ToString("C", usd)}</strong></td></tr>
    </table>
    <p>Thank you for your business!</p>
</body>
</html>";

using var pdf = await renderer.RenderHtmlAsPdfAsync(html);
pdf.SaveAs($"invoice-{order.InvoiceNumber}.pdf");

record OrderItem(string Name, int Quantity, decimal Price)
{
    public decimal Total => Price * Quantity;
}

record Order(string InvoiceNumber, DateTime Date, OrderItem[] Items)
{
    public decimal Total => Items.Sum(item => item.Total);
}

Migrationsstrategien: Wechsel zwischen Bibliotheken

Wenn Sie einen Wechsel zwischen Bibliotheken erwägen, hier ein Migrationsansatz:

Migration von EvoPdf zu IronPDF

// NuGet: Install-Package EvoPdf.HtmlToPdf  (EvoPdf Classic, Windows)
// NuGet: Install-Package IronPdf
using System.IO;
using EvoPdf;
using IronPdf;
using IronPdf.Rendering;

string url = "https://example.com/";

// EvoPdf pattern
HtmlToPdfConverter evoPdfConverter = new HtmlToPdfConverter();
evoPdfConverter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
File.WriteAllBytes("evopdf.pdf", evoPdfConverter.ConvertUrl(url));

// Equivalent IronPDF pattern
var ironPdfRenderer = new ChromePdfRenderer
{
    RenderingOptions = new ChromePdfRenderOptions
    {
        PaperSize = PdfPaperSize.A4
    }
};
using (var pdf = ironPdfRenderer.RenderUrlAsPdf(url))
{
    File.WriteAllBytes("ironpdf.pdf", pdf.BinaryData);
}

// During a gradual migration, both libraries can sit behind one interface
IPdfConverter converter = new IronPdfAdapter();
File.WriteAllBytes("adapter.pdf", converter.ConvertUrlToPdf(url));

public interface IPdfConverter
{
    byte[] ConvertHtmlToPdf(string html);
    byte[] ConvertUrlToPdf(string url);
}

public class IronPdfAdapter : IPdfConverter
{
    private readonly ChromePdfRenderer _renderer = new ChromePdfRenderer();

    public byte[] ConvertHtmlToPdf(string html)
    {
        using var pdf = _renderer.RenderHtmlAsPdf(html);
        return pdf.BinaryData;
    }

    public byte[] ConvertUrlToPdf(string url)
    {
        using var pdf = _renderer.RenderUrlAsPdf(url);
        return pdf.BinaryData;
    }
}

public class EvoPdfAdapter : IPdfConverter
{
    private readonly HtmlToPdfConverter _converter = new HtmlToPdfConverter();
    
    public byte[] ConvertHtmlToPdf(string html)
    {
        return _converter.ConvertHtml(html, "");
    }
    
    public byte[] ConvertUrlToPdf(string url)
    {
        return _converter.ConvertUrl(url);
    }
}

Fazit: Die richtige Wahl für Ihr Projekt treffen

Sowohl IronPDF als auch EvoPdf spielen wichtige Rollen im .NET-PDF-Bibliotheks-Ökosystem, richten sich aber an unterschiedliche Anwendungsfälle und Entwicklungsphilosophien.

Wählen Sie IronPDF, wenn Sie Folgendes benötigen:

  • Unterstützung moderner Webstandards (CSS3, JavaScript-Frameworks)
  • PDF-Bearbeitung über die reine Erstellung hinaus, z. B. Zusammenführen, Formulare, Schwärzung und Signieren
  • Sicherheitsfunktionen wie Verschlüsselung, Signaturen und Schwärzung
  • Plattformübergreifende Bereitstellungsflexibilität
  • Umfangreiche Dokumentation und direkten technischen Support
  • Integration mit anderen Dokumentenverarbeitungstools

Wählen Sie EvoPdf, wenn Sie Folgendes benötigen:

  • HTML-zu-PDF-Konvertierung zu geringeren Lizenzkosten
  • Lizenzierung pro Anwendung (Deployment) oder unternehmensweite Lizenzierung (Company), mit Weiterverteilung in eigenen Anwendungen in der Company-Lizenz enthalten
  • Lizenzen, die keine Entwickler zählen
  • Wahl zwischen einer Chromium-basierten Engine (EvoPdf Next) und einer Windows-Engine, die .NET Framework 2.0 und neuer unterstützt (EvoPdf Classic)

Die Entscheidung hängt letztlich von Ihren spezifischen Anforderungen, Budgetbeschränkungen und langfristigen Skalierbarkeitsbedürfnissen ab. Für moderne Anwendungen, die PDF-Bearbeitung über die reine Erstellung hinaus benötigen – etwa integrierte Schwärzung und DOCX-Konvertierung – machen Funktionsumfang und Dokumentation von IronPDF die Investition lohnenswert. EvoPdf ist ebenfalls eine sinnvolle Option, insbesondere für Teams, die Wert auf unternehmensweite Lizenzierung und enthaltene Weiterverteilung legen.

Erwägen Sie, mit der 30-tägigen kostenlosen Testversion von IronPDF zu starten, um die Fähigkeiten in Ihrem konkreten Anwendungsfall zu evaluieren. Die Testversion bietet Zugriff auf die IronPDF-Funktionen, sodass Sie eine fundierte Entscheidung auf Basis der tatsächlichen Leistung in Ihrer Umgebung treffen können.

Denken Sie daran, dass die tatsächlichen Kosten einer PDF-Bibliothek über den Lizenzpreis hinausgehen – berücksichtigen Sie Entwicklungszeit, Wartungsaufwand und den potenziellen Bedarf an zusätzlichen Funktionen, wenn Ihre Anwendung wächst. Wählen Sie die Bibliothek, die nicht nur Ihre aktuellen Anforderungen erfüllt, sondern auch mit Ihren zukünftigen Anforderungen skalieren kann.

Hinweis:: EvoPdf ist eine Marke des jeweiligen Eigentümers. Diese Seite steht in keiner Verbindung zu, wird nicht unterstützt oder gesponsert von EvoPdf. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Inhaber. Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich verfügbare Informationen zum Zeitpunkt der Erstellung wider.

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der Pionierarbeit in der C# PDF-Technologie leistet. Als der ursprüngliche Entwickler hinter der Kern-Codebasis von Iron Software hat er die Produktarchitektur des Unternehmens seit seiner Gründung geprägt und es zusammen mit CEO Cameron Rimington in ein Unternehmen mit mehr als 50 Mitarbeitern verwandelt, das die NASA, Tesla und globale Regierungsbehörden beliefert.

Weiterlesen

Verwandte Artikel