Zum Fußzeileninhalt springen
PRODUKTVERGLEICHE

IronPDF vs PDFSharpCore: Welche .NET-PDF-Bibliothek sollten Sie im Jahr 2025 wählen?

Bei der Entwicklung moderner .NET-Anwendungen, die PDF-Generierungs- und Manipulationsfunktionen erfordern, kann die Wahl der richtigen Bibliothek den Erfolg Ihres Projekts erheblich beeinflussen. Zwei prominente Optionen im .NET-Ökosystem sind IronPDF und PDFSharpCore, die jeweils unterschiedliche Ansätze zur PDF-Verarbeitung bieten. Dieser umfassende Vergleich wird Ihnen helfen, eine fundierte Entscheidung basierend auf Ihren spezifischen Anforderungen, Budget und technischen Bedürfnissen zu treffen.

Kurzer Überblick über den Vergleich

Bevor wir in die technischen Details eintauchen, hier eine umfassende Vergleichstabelle, die die wesentlichen Unterschiede zwischenIronPDFund PDFSharpCore zusammenfasst:

Überblick über den Produktvergleich
Vergleich vonIronPDFund PDFSharpCore für die .NET PDF-Verarbeitung
Kategorie Merkmal/Aspekt IronPDF PDFSharpCore Hauptvorteil
Kernarchitektur Design-Philosophie Chrome-basiertes Rendering, intuitive APIs Leichter, manueller PDF-Aufbau IronPDF: Schnellere Entwicklung
API-Komplexität Einfache Methoden wie RenderHtmlAsPdf() Manuelles Zeichnen mit XGraphics IronPDF: 70 % weniger Code
Lernkurve typisch 1-2 Tage 3-5 Tage typisch IronPDF: Schnellere Akzeptanz
Plattform-Unterstützung Plattformübergreifend Native Unterstützung, keine zusätzlichen Pakete Vollständige plattformübergreifende Unterstützung Beides: Moderner Einsatz
.NET-Versionen .NET 10, 9, 8, 7, 6, 5, Core 3.1+, Framework 4.6.2+ .NET 6+, .NET Standard 2.0 IronPDF: Größere Kompatibilität
Betriebssysteme Windows, Linux, macOS, Docker, Azure, AWS Windows, Linux, macOS IronPDF: Cloud-optimiert
HTML zu PDF Rendering-Engine Vollständige Chrome V8-Engine Keine native HTML-Unterstützung IronPDF: HTML-Fähigkeit
CSS3/HTML5-Unterstützung Vollständige Unterstützung Erfordert Bibliotheken von Drittanbietern IronPDF: Moderne Webstandards
JavaScript-Ausführung Volle JavaScript-Unterstützung N/V IronPDF: Dynamischer Inhalt
Kernfunktionen Textextraktion Eingebaute ExtractAllText() Begrenzte Unterstützung IronPDF: Überlegene Extraktion
Wasserzeichen HTML/CSS-basiert, vollständiges Styling Manuelles Zeichnen erforderlich IronPDF: Reichhaltige Wasserzeichen
Digitale Signaturen Integrierte, visuelle Signaturen Not supported IronPDF: Sicherheit für Unternehmen
Verschlüsselung AES-256, benutzerdefinierte Handler Grundlegende Verschlüsselungsunterstützung IronPDF: Erweiterte Sicherheit
Kopfzeilen/Fußzeilen HTML-basierter, dynamischer Inhalt Manuelle Positionierung IronPDF: Dynamische Kopfzeilen
Leistung HTML-Rendering-Geschwindigkeit 0.8-2s typisch (Chrome-Engine) N/V IronPDF: HTML-Wiedergabe
Verarbeitung großer Dokumente Optimiert für Skalierung Effizienter Speicher PDFSharpCore: Niedrigerer Speicher
Threading-Unterstützung Native async/await, parallele Verarbeitung Thread-sichere Operationen IronPDF: Bessere Skalierbarkeit
Erfahrung des Entwicklers Dokumentation Umfangreiche Tutorials, API-Dokumente, Videos Grundlegende Dokumentation IronPDF: Bessere Ressourcen
Codebeispiele 100+ fertige Beispiele Beispiele aus der Gemeinschaft IronPDF: Umfangreiche Beispiele
IntelliSense-Unterstützung Vollständige IntelliSense, XML-Dokumente Standard IntelliSense Beides: IDE-Integration
Licensing & Pricing Lizenz-Typ Kommerziell, unbefristet MIT-Lizenz (frei) PDFSharpCore: Keine Kosten
Einstiegspreis Lite: $799 (1 dev, 1 project) Kostenlos PDFSharpCore: Null Kosten
Unterstützung 24/5 technische Unterstützung inklusive Nur Community-Unterstützung IronPDF: Professionelle Unterstützung
Best für Anwendungsfälle Webanwendungen, Berichte, Unternehmen Einfache PDFs, Budget-Projekte Kontextabhängig
Hinweis. PDFSharpCore ist eine Open-Source-Bibliothek, die sich für die grundlegende PDF-Erstellung eignet, währendIronPDFumfassende Funktionen wie HTML-Rendering und Unterstützung für Unternehmen bietet. Die Wahl hängt von der Projektkomplexität und den Budgeteinschränkungen ab.

Einführung inIronPDFund PDFSharpCore

Was ist IronPDF?

IronPDF ist eine umfassende kommerzielle .NET-Bibliothek, die entwickelt wurde, um die PDF-Erstellung, -Bearbeitung und -Manipulation für Entwickler mühelos zu machen. Auf einem Chrome-basierten Rendering-Engine aufgebaut, ist es hervorragend darin, HTML-, CSS- und JavaScript-Inhalte in pixelgenaue PDFs zu konvertieren. Die Bibliothek bietet ein umfangreiches Funktionsset, das HTML-zu-PDF-Konvertierung, digitale Signaturen, Wasserzeichenerstellung, PDF-Verschlüsselung und Formularverwaltung umfasst.

IronPDF unterstützt moderne .NET-Versionen, einschließlich .NET 10, 9, 8, 7, 6, 5, Core 3.1+ und Framework 4.6.2+, wodurch es vielseitig für neue und ältere Anwendungen ist. Seine cloud-optimierte Architektur gewährleistet nahtlose Bereitstellung in Azure-, AWS- und Docker-Umgebungen.

Was ist PDFSharpCore?

PDFSharpCore ist eine Open-Source-Bibliothek, die als .NET Core-Port der ursprünglichen PDFsharp-Bibliothek dient. Veröffentlicht unter der MIT-Lizenz, konzentriert es sich auf die programmgesteuerte PDF-Erstellung und grundlegende Manipulation ohne die Verwendung von Windows-spezifischen Bibliotheken. Dies macht es zu einer hervorragenden Wahl für plattformübergreifende Projekte, die auf Linux, macOS und Windows laufen.

Während PDFSharpCore keine native HTML-zu-PDF-Konvertierung bietet, bietet es präzise Kontrolle über die Erstellung von PDF-Dokumenten durch seine Zeichen-API. Entwickler können PDF-Dokumente manuell konstruieren, indem sie Text, Bilder und Grafiken mit koordinatenbasierten Zeichenbefehlen positionieren.

Installation und Einrichtung

Installation von IronPDF

UmIronPDFin Ihrem Projekt zu nutzen, können Sie es einfach über den NuGet-Paket-Manager installieren. Folgen Sie diesen Schritten:

  1. Öffnen Sie Ihr Projekt in Visual Studio.
  2. Gehen Sie zu Tools > NuGet-Paket-Manager > NuGet-Pakete für die Lösung verwalten.
  3. Suchen Sie nach IronPdf im NuGet-Manager.
  4. Wählen Sie Ihr Projekt aus und klicken Sie dann auf Installieren, umIronPDFzu Ihrem Projekt hinzuzufügen.

Ein Vergleich zwischenIronPDF& PDFSharpCore: Abbildung 1 - Installation vonIronPDFüber den NuGet-Paket-Manager Installation vonIronPDFüber die NuGet-Paket-Manager-Oberfläche von Visual Studio

Alternativ können Sie die Paket-Manager-Konsole verwenden, umIronPDFmit dem folgenden Befehl zu installieren:

Install-Package IronPdf

Installation von PDFSharpCore

Um PDFSharpCore mit NuGet zu installieren, befolgen Sie diese Anweisungen:

  1. Stellen Sie sicher, dass Ihr Visual Studio-Projekt geöffnet ist.
  2. Gehen Sie zu Tools > NuGet-Paket-Manager > NuGet-Pakete für die Lösung verwalten.
  3. Suchen Sie im NuGet-Paket-Manager nach PDFSharpCore.
  4. Wählen Sie Ihr Projekt aus und klicken Sie auf Installieren, um PDFSharpCore zu integrieren.

Ein Vergleich zwischenIronPDF& PDFSharpCore: Abbildung 2 - Installation von PDFSharpCore über NuGet Installation von PDFSharpCore über den NuGet-Paket-Manager

Für Entwickler, die die Paket-Manager-Konsole bevorzugen, kann PDFSharpCore mit diesem Befehl installiert werden:

Install-Package PdfSharpCore

Erstellen von PDF-Dateien:IronPDFvs. PDFSharpCore

IronPDF: Moderner HTML-basierter Ansatz

IronPDF revolutioniert die PDF-Erstellung, indem es auf Webtechnologien setzt, die Entwickler bereits kennen. Sein Chrome-basiertes Rendering-Engine stellt sicher, dass Ihr HTML, CSS und JavaScript genau so gerendert werden, wie sie in einem modernen Browser erscheinen würden.

HTML String zu PDF mit erweiterten Funktionen

Die HTML-zu-PDF-Konvertierungsfunktionen vonIronPDFgehen weit über einfaches Text-Rendering hinaus. Hier ein erweitertes Beispiel, das seine Leistungsfähigkeit demonstriert:

using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main(string[] args)
    {
        // Apply your license key (required for production)
        License.LicenseKey = "Your-License-Key";

        // Create renderer with optimized settings
        var renderer = new ChromePdfRenderer()
        {
            RenderingOptions = new ChromePdfRenderOptions()
            {
                // Set margins for professional appearance
                MarginTop = 25,
                MarginBottom = 25,
                MarginLeft = 20,
                MarginRight = 20,

                // Enable JavaScript execution for dynamic content
                EnableJavaScript = true,

                // Wait for AJAX/animations to complete
                RenderDelay = 500,

                // Set paper orientation and size
                PaperOrientation = PdfPaperOrientation.Portrait,
                PaperSize = PdfPaperSize.A4,

                // Enable printing of background colors and images
                PrintHtmlBackgrounds = true
            }
        };

        // HTML with Bootstrap styling and charts
        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css' rel='stylesheet'>
                <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
                <style>
                    body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
                    .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; }
                    .chart-container { width: 100%; height: 300px; margin: 20px 0; }
                </style>
            </head>
            <body>
                <div class='header text-center'>
                    <h1>2024 Sales Performance Report</h1>
                    <p class='lead'>Comprehensive Analysis & Insights</p>
                </div>

                <div class='container mt-4'>
                    <div class='row'>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Q1 Performance Metrics</h5>
                                    <table class='table table-striped'>
                                        <thead>
                                            <tr>
                                                <th>Month</th>
                                                <th>Revenue</th>
                                                <th>Growth</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>
                                                <td>January</td>
                                                <td>$50,000</td>
                                                <td><span class='badge bg-success'>+12%</span></td>
                                            </tr>
                                            <tr>
                                                <td>February</td>
                                                <td>$55,000</td>
                                                <td><span class='badge bg-success'>+10%</span></td>
                                            </tr>
                                            <tr>
                                                <td>March</td>
                                                <td>$60,000</td>
                                                <td><span class='badge bg-success'>+9%</span></td>
                                            </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Revenue Trend</h5>
                                    <canvas id='revenueChart'></canvas>
                                </div>
                            </div>
                        </div>
                    </div>

                    <div class='alert alert-info mt-4'>
                        <strong>Key Insight:</strong> Q1 showed consistent growth across all months, 
                        with total revenue reaching $165,000, representing a 31% increase YoY.
                    </div>
                </div>

                <script>
                    // Create an interactive chart
                    const ctx = document.getElementById('revenueChart').getContext('2d');
                    new Chart(ctx, {
                        type: 'line',
                        data: {
                            labels: ['January', 'February', 'March'],
                            datasets: [{
                                label: 'Revenue',
                                data: [50000, 55000, 60000],
                                borderColor: '#667eea',
                                backgroundColor: 'rgba(102, 126, 234, 0.1)',
                                tension: 0.4
                            }]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false
                        }
                    });
                </script>
            </body>
            </html>";

        // Render the HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Add metadata for better document management
        pdf.MetaData.Author = "Sales Department";
        pdf.MetaData.Title = "Q1 2024 Sales Report";
        pdf.MetaData.Subject = "Quarterly Performance Analysis";
        pdf.MetaData.Keywords = "sales, performance, Q1, 2024";
        pdf.MetaData.CreationDate = DateTime.Now;

        // Save the PDF
        pdf.SaveAs("sales-report-q1-2024.pdf");
        Console.WriteLine("Professional sales report generated successfully!");
    }
}
using IronPdf;
using IronPdf.Rendering;

class Program
{
    static void Main(string[] args)
    {
        // Apply your license key (required for production)
        License.LicenseKey = "Your-License-Key";

        // Create renderer with optimized settings
        var renderer = new ChromePdfRenderer()
        {
            RenderingOptions = new ChromePdfRenderOptions()
            {
                // Set margins for professional appearance
                MarginTop = 25,
                MarginBottom = 25,
                MarginLeft = 20,
                MarginRight = 20,

                // Enable JavaScript execution for dynamic content
                EnableJavaScript = true,

                // Wait for AJAX/animations to complete
                RenderDelay = 500,

                // Set paper orientation and size
                PaperOrientation = PdfPaperOrientation.Portrait,
                PaperSize = PdfPaperSize.A4,

                // Enable printing of background colors and images
                PrintHtmlBackgrounds = true
            }
        };

        // HTML with Bootstrap styling and charts
        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css' rel='stylesheet'>
                <script src='https://cdn.jsdelivr.net/npm/chart.js'></script>
                <style>
                    body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; }
                    .header { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; padding: 30px; }
                    .chart-container { width: 100%; height: 300px; margin: 20px 0; }
                </style>
            </head>
            <body>
                <div class='header text-center'>
                    <h1>2024 Sales Performance Report</h1>
                    <p class='lead'>Comprehensive Analysis & Insights</p>
                </div>

                <div class='container mt-4'>
                    <div class='row'>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Q1 Performance Metrics</h5>
                                    <table class='table table-striped'>
                                        <thead>
                                            <tr>
                                                <th>Month</th>
                                                <th>Revenue</th>
                                                <th>Growth</th>
                                            </tr>
                                        </thead>
                                        <tbody>
                                            <tr>
                                                <td>January</td>
                                                <td>$50,000</td>
                                                <td><span class='badge bg-success'>+12%</span></td>
                                            </tr>
                                            <tr>
                                                <td>February</td>
                                                <td>$55,000</td>
                                                <td><span class='badge bg-success'>+10%</span></td>
                                            </tr>
                                            <tr>
                                                <td>March</td>
                                                <td>$60,000</td>
                                                <td><span class='badge bg-success'>+9%</span></td>
                                            </tr>
                                        </tbody>
                                    </table>
                                </div>
                            </div>
                        </div>
                        <div class='col-md-6'>
                            <div class='card'>
                                <div class='card-body'>
                                    <h5 class='card-title'>Revenue Trend</h5>
                                    <canvas id='revenueChart'></canvas>
                                </div>
                            </div>
                        </div>
                    </div>

                    <div class='alert alert-info mt-4'>
                        <strong>Key Insight:</strong> Q1 showed consistent growth across all months, 
                        with total revenue reaching $165,000, representing a 31% increase YoY.
                    </div>
                </div>

                <script>
                    // Create an interactive chart
                    const ctx = document.getElementById('revenueChart').getContext('2d');
                    new Chart(ctx, {
                        type: 'line',
                        data: {
                            labels: ['January', 'February', 'March'],
                            datasets: [{
                                label: 'Revenue',
                                data: [50000, 55000, 60000],
                                borderColor: '#667eea',
                                backgroundColor: 'rgba(102, 126, 234, 0.1)',
                                tension: 0.4
                            }]
                        },
                        options: {
                            responsive: true,
                            maintainAspectRatio: false
                        }
                    });
                </script>
            </body>
            </html>";

        // Render the HTML to PDF
        var pdf = renderer.RenderHtmlAsPdf(htmlContent);

        // Add metadata for better document management
        pdf.MetaData.Author = "Sales Department";
        pdf.MetaData.Title = "Q1 2024 Sales Report";
        pdf.MetaData.Subject = "Quarterly Performance Analysis";
        pdf.MetaData.Keywords = "sales, performance, Q1, 2024";
        pdf.MetaData.CreationDate = DateTime.Now;

        // Save the PDF
        pdf.SaveAs("sales-report-q1-2024.pdf");
        Console.WriteLine("Professional sales report generated successfully!");
    }
}
$vbLabelText   $csharpLabel

Dieses Beispiel zeigt mehrere erweiterte Funktionen von IronPDF:

  • Bootstrap-Integration: Nutzt gängige CSS-Frameworks für professionelles Styling
  • JavaScript-Diagramme: Rendert dynamische Chart.js-Visualisierungen im PDF
  • Responsives Design: Geht intelligent mit responsiven Layouts um
  • Metadatenverwaltung: Fügt durchsuchbare Metadaten für Dokumentenmanagementsysteme hinzu
  • Renderverzögerungen: Stellt sicher, dass JavaScript-Inhalte vollständig geladen werden, bevor sie gerendert werden.

Die ChromePdfRenderer-Klasse bietet umfangreiche Kontrolle über den Rendering-Prozess. Wichtige Optionen sind:

  • EnableJavaScript: Führt JavaScript-Code vor dem Rendering aus
  • RenderDelay: Wartet auf das Laden asynchroner Inhalte
  • PrintHtmlBackgrounds: Bewahrt Hintergrundfarben und -bilder
  • PaperOrientation und PaperSize: Steuert das Seitenlayout
  • Randeinstellungen für ein professionelles Erscheinungsbild des Dokuments

Konvertierung von HTML-Dateien und URLs

IronPDF ist auch hervorragend bei der Konvertierung vorhandener HTML-Dateien und Live-Webseiten:

using IronPdf;

class Program
{
    static async Task Main(string[] args)
    {
        License.LicenseKey = "Your-License-Key";

        var renderer = new ChromePdfRenderer();

        // Convert a local HTML file with external resources
        var filePdf = renderer.RenderHtmlFileAsPdf(@"C:\Reports\template.html");
        filePdf.SaveAs("from-file.pdf");

        // Convert a URL with authentication
        renderer.LoginCredentials = new ChromeHttpLoginCredentials()
        {
            Username = "user@example.com",
            Password = "secure-password"
        };

        // Render a password-protected page
        var urlPdf = await renderer.RenderUrlAsPdfAsync("https://secure.example.com/reports");
        urlPdf.SaveAs("secure-report.pdf");
    }
}
using IronPdf;

class Program
{
    static async Task Main(string[] args)
    {
        License.LicenseKey = "Your-License-Key";

        var renderer = new ChromePdfRenderer();

        // Convert a local HTML file with external resources
        var filePdf = renderer.RenderHtmlFileAsPdf(@"C:\Reports\template.html");
        filePdf.SaveAs("from-file.pdf");

        // Convert a URL with authentication
        renderer.LoginCredentials = new ChromeHttpLoginCredentials()
        {
            Username = "user@example.com",
            Password = "secure-password"
        };

        // Render a password-protected page
        var urlPdf = await renderer.RenderUrlAsPdfAsync("https://secure.example.com/reports");
        urlPdf.SaveAs("secure-report.pdf");
    }
}
$vbLabelText   $csharpLabel

PDFSharpCore: Manueller Dokumentenaufbau

PDFSharpCore verfolgt einen grundsätzlich anderen Ansatz, bei dem Entwickler PDF-Dokumente manuell mit Zeichenbefehlen erstellen müssen. Obwohl dies präzise Kontrolle bietet, erfordert es erheblich mehr Code für komplexe Layouts.

using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using System;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        var document = new PdfDocument();
        document.Info.Title = "Sales Report Q1 2024";
        document.Info.Author = "Sales Department";

        // Add a page
        var page = document.AddPage();
        page.Size = PdfSharpCore.PageSize.A4;

        // Create graphics object for drawing
        var gfx = XGraphics.FromPdfPage(page);

        // Define fonts
        var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
        var headingFont = new XFont("Arial", 14, XFontStyle.Bold);
        var normalFont = new XFont("Arial", 11, XFontStyle.Regular);

        // Draw title with gradient-like effect (manual implementation)
        var titleBrush = new XLinearGradientBrush(
            new XPoint(0, 0), 
            new XPoint(page.Width, 0),
            XColors.DarkBlue, 
            XColors.Purple
        );
        gfx.DrawRectangle(titleBrush, 0, 0, page.Width, 80);
        gfx.DrawString("2024 Sales Performance Report", 
            titleFont, XBrushes.White,
            new XRect(0, 20, page.Width, 40),
            XStringFormats.TopCenter);

        // Draw table manually
        double yPosition = 120;
        double margin = 50;
        double columnWidth = (page.Width - 2 * margin) / 3;

        // Table header
        gfx.DrawRectangle(XBrushes.LightGray, margin, yPosition, page.Width - 2 * margin, 25);
        gfx.DrawString("Month", headingFont, XBrushes.Black, 
            new XRect(margin, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Revenue", headingFont, XBrushes.Black, 
            new XRect(margin + columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Growth", headingFont, XBrushes.Black, 
            new XRect(margin + 2 * columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);

        // Table data
        string[,] data = {
            { "January", "$50,000", "+12%" },
            { "February", "$55,000", "+10%" },
            { "March", "$60,000", "+9%" }
        };

        yPosition += 25;
        for (int i = 0; i < 3; i++)
        {
            // Alternate row colors
            if (i % 2 == 0)
            {
                gfx.DrawRectangle(XBrushes.WhiteSmoke, margin, yPosition, page.Width - 2 * margin, 20);
            }

            for (int j = 0; j < 3; j++)
            {
                gfx.DrawString(data[i, j], normalFont, XBrushes.Black,
                    new XRect(margin + j * columnWidth, yPosition, columnWidth, 20),
                    XStringFormats.Center);
            }
            yPosition += 20;
        }

        // Draw a simple line chart (very basic implementation)
        yPosition += 40;
        gfx.DrawString("Revenue Trend", headingFont, XBrushes.Black,
            new XRect(margin, yPosition, page.Width - 2 * margin, 25),
            XStringFormats.TopLeft);

        // Chart area
        yPosition += 30;
        double chartHeight = 150;
        double chartWidth = page.Width - 2 * margin;

        // Draw axes
        gfx.DrawLine(XPens.Black, margin, yPosition + chartHeight, margin + chartWidth, yPosition + chartHeight);
        gfx.DrawLine(XPens.Black, margin, yPosition, margin, yPosition + chartHeight);

        // Plot points (simplified)
        double[] revenues = { 50000, 55000, 60000 };
        double maxRevenue = 65000;
        double xStep = chartWidth / 3;

        for (int i = 0; i < revenues.Length; i++)
        {
            double x = margin + (i + 0.5) * xStep;
            double y = yPosition + chartHeight - (revenues[i] / maxRevenue * chartHeight);

            // Draw point
            gfx.DrawEllipse(XBrushes.Blue, x - 3, y - 3, 6, 6);

            // Draw connecting lines
            if (i > 0)
            {
                double prevX = margin + (i - 0.5) * xStep;
                double prevY = yPosition + chartHeight - (revenues[i - 1] / maxRevenue * chartHeight);
                gfx.DrawLine(new XPen(XColors.Blue, 2), prevX, prevY, x, y);
            }

            // Labels
            gfx.DrawString($"${revenues[i]:N0}", normalFont, XBrushes.Black,
                new XRect(x - 30, y - 20, 60, 15),
                XStringFormats.TopCenter);
        }

        // Save the document
        document.Save("pdfsharp-sales-report.pdf");
        Console.WriteLine("PDF created with PDFSharpCore");
    }
}
using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using System;

class Program
{
    static void Main()
    {
        // Create a new PDF document
        var document = new PdfDocument();
        document.Info.Title = "Sales Report Q1 2024";
        document.Info.Author = "Sales Department";

        // Add a page
        var page = document.AddPage();
        page.Size = PdfSharpCore.PageSize.A4;

        // Create graphics object for drawing
        var gfx = XGraphics.FromPdfPage(page);

        // Define fonts
        var titleFont = new XFont("Arial", 24, XFontStyle.Bold);
        var headingFont = new XFont("Arial", 14, XFontStyle.Bold);
        var normalFont = new XFont("Arial", 11, XFontStyle.Regular);

        // Draw title with gradient-like effect (manual implementation)
        var titleBrush = new XLinearGradientBrush(
            new XPoint(0, 0), 
            new XPoint(page.Width, 0),
            XColors.DarkBlue, 
            XColors.Purple
        );
        gfx.DrawRectangle(titleBrush, 0, 0, page.Width, 80);
        gfx.DrawString("2024 Sales Performance Report", 
            titleFont, XBrushes.White,
            new XRect(0, 20, page.Width, 40),
            XStringFormats.TopCenter);

        // Draw table manually
        double yPosition = 120;
        double margin = 50;
        double columnWidth = (page.Width - 2 * margin) / 3;

        // Table header
        gfx.DrawRectangle(XBrushes.LightGray, margin, yPosition, page.Width - 2 * margin, 25);
        gfx.DrawString("Month", headingFont, XBrushes.Black, 
            new XRect(margin, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Revenue", headingFont, XBrushes.Black, 
            new XRect(margin + columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);
        gfx.DrawString("Growth", headingFont, XBrushes.Black, 
            new XRect(margin + 2 * columnWidth, yPosition, columnWidth, 25), 
            XStringFormats.Center);

        // Table data
        string[,] data = {
            { "January", "$50,000", "+12%" },
            { "February", "$55,000", "+10%" },
            { "March", "$60,000", "+9%" }
        };

        yPosition += 25;
        for (int i = 0; i < 3; i++)
        {
            // Alternate row colors
            if (i % 2 == 0)
            {
                gfx.DrawRectangle(XBrushes.WhiteSmoke, margin, yPosition, page.Width - 2 * margin, 20);
            }

            for (int j = 0; j < 3; j++)
            {
                gfx.DrawString(data[i, j], normalFont, XBrushes.Black,
                    new XRect(margin + j * columnWidth, yPosition, columnWidth, 20),
                    XStringFormats.Center);
            }
            yPosition += 20;
        }

        // Draw a simple line chart (very basic implementation)
        yPosition += 40;
        gfx.DrawString("Revenue Trend", headingFont, XBrushes.Black,
            new XRect(margin, yPosition, page.Width - 2 * margin, 25),
            XStringFormats.TopLeft);

        // Chart area
        yPosition += 30;
        double chartHeight = 150;
        double chartWidth = page.Width - 2 * margin;

        // Draw axes
        gfx.DrawLine(XPens.Black, margin, yPosition + chartHeight, margin + chartWidth, yPosition + chartHeight);
        gfx.DrawLine(XPens.Black, margin, yPosition, margin, yPosition + chartHeight);

        // Plot points (simplified)
        double[] revenues = { 50000, 55000, 60000 };
        double maxRevenue = 65000;
        double xStep = chartWidth / 3;

        for (int i = 0; i < revenues.Length; i++)
        {
            double x = margin + (i + 0.5) * xStep;
            double y = yPosition + chartHeight - (revenues[i] / maxRevenue * chartHeight);

            // Draw point
            gfx.DrawEllipse(XBrushes.Blue, x - 3, y - 3, 6, 6);

            // Draw connecting lines
            if (i > 0)
            {
                double prevX = margin + (i - 0.5) * xStep;
                double prevY = yPosition + chartHeight - (revenues[i - 1] / maxRevenue * chartHeight);
                gfx.DrawLine(new XPen(XColors.Blue, 2), prevX, prevY, x, y);
            }

            // Labels
            gfx.DrawString($"${revenues[i]:N0}", normalFont, XBrushes.Black,
                new XRect(x - 30, y - 20, 60, 15),
                XStringFormats.TopCenter);
        }

        // Save the document
        document.Save("pdfsharp-sales-report.pdf");
        Console.WriteLine("PDF created with PDFSharpCore");
    }
}
$vbLabelText   $csharpLabel

Wie Sie sehen können, erfordert die Erstellung eines sogar moderat komplexen Dokuments mit PDFSharpCore:

  • Manuelle Positionierung jedes Elements
  • Komplexe Berechnungen für Layouts
  • Keine integrierte Unterstützung für HTML oder CSS
  • Manuelle Umsetzung von Diagrammen und Grafiken
  • Erheblich mehr Code für das gleiche Ergebnis

HTML zu PDF mit PDFSharpCore

Da PDFSharpCore keine native HTML-zu-PDF-Konvertierung unterstützt, müssen Entwickler Drittanbieterbibliotheken verwenden. Eine beliebte Wahl ist die Kombination von PDFSharpCore mit HtmlRenderer:

using PdfSharpCore.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

var document = new PdfDocument();
string htmlContent = File.ReadAllText("template.html");

// Note: HtmlRenderer has limited CSS support
PdfGenerator.AddPdfPages(document, htmlContent, PdfSharpCore.PageSize.A4);
document.Save("from-html.pdf");
using PdfSharpCore.Pdf;
using TheArtOfDev.HtmlRenderer.PdfSharp;

var document = new PdfDocument();
string htmlContent = File.ReadAllText("template.html");

// Note: HtmlRenderer has limited CSS support
PdfGenerator.AddPdfPages(document, htmlContent, PdfSharpCore.PageSize.A4);
document.Save("from-html.pdf");
$vbLabelText   $csharpLabel

Dieser Ansatz hat jedoch wesentliche Einschränkungen:

  • Begrenzte CSS3-Unterstützung (ca. 70-80% Kompatibilität)
  • Keine JavaScript-Ausführung
  • Schlechte Handhabung moderner Web-Features
  • Inkonsistente Renderqualität im Vergleich zu Browsern

Moderne CSS-Framework-Unterstützung: Bootstrap und darüber hinaus

Beim Entwickeln von Anwendungen, die die PDF-Erzeugung aus Webinhalten erfordern, ist die Unterstützung für Bootstrap und moderne CSS-Frameworks entscheidend. Die meisten Webanwendungen verwenden diese Frameworks für ein konsistentes Design, und die Fähigkeit, diese Schnittstellen ohne Änderungen in PDFs zu konvertieren, reduziert die Entwicklungszeit erheblich.

IronPDF: Vollständige Unterstützung von Bootstrap und CSS Framework

  • Bootstrap 5: Vollständige Flexbox-Layout-Engine, CSS Grid, Hilfsklassen und alle Komponentensysteme
  • Bootstrap 4: Vollständige Kartenkomponenten, Navigation, Flexbox-Funktionen und responsive Klassen Tailwind CSS: Alle Utility-Klassen mit korrekter Darstellung
  • Foundation: Vollständiges Grid-System und Komponentenbibliothek
  • Modernes CSS3: Flexbox, CSS Grid, benutzerdefinierte Eigenschaften, Animationen, Übergänge und Transformationen

Echte Beweise:IronPDFrendert die Bootstrap-Startseite und alle offiziellen Vorlagen mit pixelgenauer Genauigkeit.

Codebeispiel: Projektfortschritts-Dashboard

using IronPdf;

// Set yourIronPDFlicense key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapProgress = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .project-card {
            transition: all 0.3s ease;
            border-left: 4px solid transparent;
        }
        .project-card.active { border-left-color: #0d6efd; }
        .progress-label { font-size: 0.75rem; font-weight: 600; }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Project Portfolio Status</h1>
                <p class='text-muted mb-0'>Q1 2025 Development Pipeline</p>
            </div>
            <div>
                <span class='badge bg-success fs-6'>8 Active Projects</span>
            </div>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-primary mb-2'>72%</div>
                        <h6 class='text-muted text-uppercase mb-0'>Overall Progress</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-success mb-2'>5</div>
                        <h6 class='text-muted text-uppercase mb-0'>On Track</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-warning mb-2'>2</div>
                        <h6 class='text-muted text-uppercase mb-0'>At Risk</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-danger mb-2'>1</div>
                        <h6 class='text-muted text-uppercase mb-0'>Delayed</h6>
                    </div>
                </div>
            </div>
        </div>

        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Active Projects</h5>
            </div>
            <div class='card-body p-0'>
                <div class='list-group list-group-flush'>
                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>E-Commerce Platform Redesign</h6>
                                <small class='text-muted'>Lead: Sarah Chen | Due: Apr 15, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-primary'>85%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-primary' role='progressbar' style='width: 85%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Frontend: 90%</span>
                            <span class='badge bg-light text-dark'>Backend: 80%</span>
                            <span class='badge bg-light text-dark'>Testing: 85%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Mobile App Integration</h6>
                                <small class='text-muted'>Lead: Marcus Johnson | Due: Mar 30, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-success'>92%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-success' role='progressbar' style='width: 92%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>iOS: 95%</span>
                            <span class='badge bg-light text-dark'>Android: 90%</span>
                            <span class='badge bg-light text-dark'>API: 100%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Customer Analytics Dashboard</h6>
                                <small class='text-muted'>Lead: Emily Rodriguez | Due: Apr 22, 2025</small>
                            </div>
                            <span class='badge bg-warning text-dark'>At Risk</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-warning'>58%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-warning' role='progressbar' style='width: 58%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Data Pipeline: 65%</span>
                            <span class='badge bg-light text-dark'>UI: 50%</span>
                            <span class='badge bg-light text-dark'>Reports: 45%</span>
                        </div>
                        <div class='alert alert-warning mt-2 mb-0 py-2'>
                            <small><strong>Issue:</strong> Resource constraints affecting timeline. Review scheduled for next week.</small>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Security Infrastructure Upgrade</h6>
                                <small class='text-muted'>Lead: David Kim | Due: Mar 25, 2025</small>
                            </div>
                            <span class='badge bg-danger'>Delayed</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-danger'>42%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-danger' role='progressbar' style='width: 42%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Authentication: 60%</span>
                            <span class='badge bg-light text-dark'>Verschlüsselung: 40%</span>
                            <span class='badge bg-light text-dark'>Audit Logs: 25%</span>
                        </div>
                        <div class='alert alert-danger mt-2 mb-0 py-2'>
                            <small><strong>Critical:</strong> 7 days behind schedule. Additional resources allocated. Daily standup required.</small>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Sprint Velocity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Current Sprint</span>
                                <strong>42 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-success' style='width: 84%'>84% Complete</div>
                            </div>
                        </div>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Previous Sprint</span>
                                <strong>38 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-info' style='width: 100%'>Completed</div>
                            </div>
                        </div>
                        <div class='mb-0'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Average Velocity</span>
                                <strong>40 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-primary' style='width: 100%'>Baseline</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Team Capacity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Frontend Team</h6>
                                <small class='text-muted'>6 developers</small>
                            </div>
                            <span class='badge bg-success'>92% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Backend Team</h6>
                                <small class='text-muted'>5 developers</small>
                            </div>
                            <span class='badge bg-success'>88% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>QA Team</h6>
                                <small class='text-muted'>3 testers</small>
                            </div>
                            <span class='badge bg-warning text-dark'>105% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-0'>
                            <div>
                                <h6 class='mb-0'>DevOps Team</h6>
                                <small class='text-muted'>2 engineers</small>
                            </div>
                            <span class='badge bg-danger'>110% Utilized</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapProgress);
pdf.SaveAs("project-progress.pdf");
using IronPdf;

// Set yourIronPDFlicense key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapProgress = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        .project-card {
            transition: all 0.3s ease;
            border-left: 4px solid transparent;
        }
        .project-card.active { border-left-color: #0d6efd; }
        .progress-label { font-size: 0.75rem; font-weight: 600; }
    </style>
</head>
<body>
    <div class='container my-5'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Project Portfolio Status</h1>
                <p class='text-muted mb-0'>Q1 2025 Development Pipeline</p>
            </div>
            <div>
                <span class='badge bg-success fs-6'>8 Active Projects</span>
            </div>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-primary mb-2'>72%</div>
                        <h6 class='text-muted text-uppercase mb-0'>Overall Progress</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-success mb-2'>5</div>
                        <h6 class='text-muted text-uppercase mb-0'>On Track</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-warning mb-2'>2</div>
                        <h6 class='text-muted text-uppercase mb-0'>At Risk</h6>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm'>
                    <div class='card-body'>
                        <div class='display-4 text-danger mb-2'>1</div>
                        <h6 class='text-muted text-uppercase mb-0'>Delayed</h6>
                    </div>
                </div>
            </div>
        </div>

        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Active Projects</h5>
            </div>
            <div class='card-body p-0'>
                <div class='list-group list-group-flush'>
                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>E-Commerce Platform Redesign</h6>
                                <small class='text-muted'>Lead: Sarah Chen | Due: Apr 15, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-primary'>85%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-primary' role='progressbar' style='width: 85%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Frontend: 90%</span>
                            <span class='badge bg-light text-dark'>Backend: 80%</span>
                            <span class='badge bg-light text-dark'>Testing: 85%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Mobile App Integration</h6>
                                <small class='text-muted'>Lead: Marcus Johnson | Due: Mar 30, 2025</small>
                            </div>
                            <span class='badge bg-success'>On Track</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-success'>92%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-success' role='progressbar' style='width: 92%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>iOS: 95%</span>
                            <span class='badge bg-light text-dark'>Android: 90%</span>
                            <span class='badge bg-light text-dark'>API: 100%</span>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Customer Analytics Dashboard</h6>
                                <small class='text-muted'>Lead: Emily Rodriguez | Due: Apr 22, 2025</small>
                            </div>
                            <span class='badge bg-warning text-dark'>At Risk</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-warning'>58%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-warning' role='progressbar' style='width: 58%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Data Pipeline: 65%</span>
                            <span class='badge bg-light text-dark'>UI: 50%</span>
                            <span class='badge bg-light text-dark'>Reports: 45%</span>
                        </div>
                        <div class='alert alert-warning mt-2 mb-0 py-2'>
                            <small><strong>Issue:</strong> Resource constraints affecting timeline. Review scheduled for next week.</small>
                        </div>
                    </div>

                    <div class='list-group-item'>
                        <div class='d-flex justify-content-between align-items-start mb-3'>
                            <div>
                                <h6 class='mb-1'>Security Infrastructure Upgrade</h6>
                                <small class='text-muted'>Lead: David Kim | Due: Mar 25, 2025</small>
                            </div>
                            <span class='badge bg-danger'>Delayed</span>
                        </div>
                        <div class='mb-2'>
                            <div class='d-flex justify-content-between align-items-center mb-1'>
                                <span class='progress-label text-muted'>COMPLETION</span>
                                <span class='progress-label text-danger'>42%</span>
                            </div>
                            <div class='progress' style='height: 8px;'>
                                <div class='progress-bar bg-danger' role='progressbar' style='width: 42%'></div>
                            </div>
                        </div>
                        <div class='d-flex gap-2 flex-wrap'>
                            <span class='badge bg-light text-dark'>Authentication: 60%</span>
                            <span class='badge bg-light text-dark'>Verschlüsselung: 40%</span>
                            <span class='badge bg-light text-dark'>Audit Logs: 25%</span>
                        </div>
                        <div class='alert alert-danger mt-2 mb-0 py-2'>
                            <small><strong>Critical:</strong> 7 days behind schedule. Additional resources allocated. Daily standup required.</small>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Sprint Velocity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Current Sprint</span>
                                <strong>42 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-success' style='width: 84%'>84% Complete</div>
                            </div>
                        </div>
                        <div class='mb-3'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Previous Sprint</span>
                                <strong>38 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-info' style='width: 100%'>Completed</div>
                            </div>
                        </div>
                        <div class='mb-0'>
                            <div class='d-flex justify-content-between mb-1'>
                                <span class='text-muted'>Average Velocity</span>
                                <strong>40 Story Points</strong>
                            </div>
                            <div class='progress' style='height: 20px;'>
                                <div class='progress-bar bg-primary' style='width: 100%'>Baseline</div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-white'>
                        <h5 class='mb-0'>Team Capacity</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Frontend Team</h6>
                                <small class='text-muted'>6 developers</small>
                            </div>
                            <span class='badge bg-success'>92% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>Backend Team</h6>
                                <small class='text-muted'>5 developers</small>
                            </div>
                            <span class='badge bg-success'>88% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-3'>
                            <div>
                                <h6 class='mb-0'>QA Team</h6>
                                <small class='text-muted'>3 testers</small>
                            </div>
                            <span class='badge bg-warning text-dark'>105% Utilized</span>
                        </div>
                        <div class='d-flex justify-content-between align-items-center mb-0'>
                            <div>
                                <h6 class='mb-0'>DevOps Team</h6>
                                <small class='text-muted'>2 engineers</small>
                            </div>
                            <span class='badge bg-danger'>110% Utilized</span>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapProgress);
pdf.SaveAs("project-progress.pdf");
$vbLabelText   $csharpLabel

Ergebnis: Professionelles Projektmanagement-PDF mit Bootstrap 5-basierten Flexbox-Layouts, Fortschrittsbalken-Komponenten, Badge-Funktionen, responsiven Kartensystemen und Benachrichtigungskomponenten – alles perfekt ausgerichtet, mit exakten Abständen und präziser Farbwiedergabe.

PDFSharpCore: Keine native HTML-Unterstützung

PDFSharpCore hat keine native HTML-Rendering-Engine. Die Bibliothek ist ausschließlich für niedrige PDF-Manipulationen und Zeichenoperationen ausgelegt:

  • Keine Bootstrap-Unterstützung: HTML/CSS-Frameworks können überhaupt nicht verarbeitet werden.
  • Kein Flexbox oder CSS Grid: Überhaupt keine CSS-Rendering-Funktionen
  • Nur manuelle Konstruktion: Erfordert das Zeichnen von Text, Formen und Bildern mithilfe koordinatenbasierter APIs
  • Externe Tools erforderlich: Es müssen HTML-Renderer oder Konvertierungsdienste von Drittanbietern verwendet werden.

Die HtmlRenderer-Integration (Drittanbieter) bietet nur grundlegende HTML-Unterstützung mit schwerwiegenden Einschränkungen – etwa 70-80% CSS3-Kompatibilität, kein Flexbox, kein CSS-Grid und keine Unterstützung moderner Frameworks.

Auswirkungen auf die Entwicklung: Die Teams müssen entweder vollständig auf HTML-basierte Arbeitsabläufe verzichten oder mehrere Tools integrieren (PDFSharpCore + externer HTML-Renderer), was die Komplexität erhöht, den Wartungsaufwand steigert und zu potenziellen Kompatibilitätsproblemen zwischen den Bibliotheksversionen führt.

Für detaillierte Informationen über die Kompatibilität des Bootstrap-Frameworks und die CSS3-Rendering-Fähigkeiten, siehe den Bootstrap & Flexbox CSS Guide.

Vergleich der erweiterten Funktionen

Textextraktion

Eine der häufigsten PDF-Operationen ist das Extrahieren von Text zu Indizierungs-, Analyse- oder Konvertierungszwecken. Hier ist, wie beide Bibliotheken diese Aufgabe bewältigen:

IronPDFTextextraktion

IronPDF bietet robuste Textextraktionsmöglichkeiten mit einer einfachen API:

using IronPdf;

// Extract all text from a PDF
var pdf = PdfDocument.FromFile("report.pdf");
string allText = pdf.ExtractAllText();

// Extract text from specific pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string pageText = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {pageText.Substring(0, Math.Min(100, pageText.Length))}...");
}

// Extract text from a specific region
var pageIndex = 0;
var region = new Rectangle(50, 50, 200, 100); // x, y, width, height
string regionText = pdf.ExtractTextFromPage(pageIndex, region);
using IronPdf;

// Extract all text from a PDF
var pdf = PdfDocument.FromFile("report.pdf");
string allText = pdf.ExtractAllText();

// Extract text from specific pages
for (int i = 0; i < pdf.PageCount; i++)
{
    string pageText = pdf.ExtractTextFromPage(i);
    Console.WriteLine($"Page {i + 1}: {pageText.Substring(0, Math.Min(100, pageText.Length))}...");
}

// Extract text from a specific region
var pageIndex = 0;
var region = new Rectangle(50, 50, 200, 100); // x, y, width, height
string regionText = pdf.ExtractTextFromPage(pageIndex, region);
$vbLabelText   $csharpLabel

PDFSharpCore Textextraktion

PDFSharpCore hat begrenzte native Textextraktionsfähigkeiten. Wie in den Vergleichsartikeln erwähnt, erzeugt es häufig fragmentierte oder unvollständige Ergebnisse:

// PDFSharpCore doesn't have reliable text extraction
// This is a significant limitation for many use cases
// PDFSharpCore doesn't have reliable text extraction
// This is a significant limitation for many use cases
$vbLabelText   $csharpLabel

Wasserzeichen

Wasserzeichen in PDFs sind entscheidend für Branding und Dokumentensicherheit.

IronPDF-Wasserzeichen

using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// HTML-based watermark with full CSS support
string watermarkHtml = @"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
        text-align: center;
        font-weight: bold;
    '>
        CONFIDENTIAL
    </div>";

pdf.ApplyWatermark(watermarkHtml, 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Image watermark
pdf.ApplyWatermark("logo.png", 30, VerticalAlignment.Bottom, HorizontalAlignment.Right);

pdf.SaveAs("watermarked.pdf");
using IronPdf;

var pdf = PdfDocument.FromFile("document.pdf");

// HTML-based watermark with full CSS support
string watermarkHtml = @"
    <div style='
        font-size: 48px;
        color: rgba(255, 0, 0, 0.3);
        transform: rotate(-45deg);
        text-align: center;
        font-weight: bold;
    '>
        CONFIDENTIAL
    </div>";

pdf.ApplyWatermark(watermarkHtml, 50, VerticalAlignment.Middle, HorizontalAlignment.Center);

// Image watermark
pdf.ApplyWatermark("logo.png", 30, VerticalAlignment.Bottom, HorizontalAlignment.Right);

pdf.SaveAs("watermarked.pdf");
$vbLabelText   $csharpLabel

PDFSharpCore Wasserzeichen

using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using PdfSharpCore.Pdf.IO;

var document = PdfReader.Open("document.pdf", PdfDocumentOpenMode.Modify);

foreach (var page in document.Pages)
{
    var gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append);

    // Create watermark font
    var font = new XFont("Arial", 48);

    // Calculate rotation
    gfx.TranslateTransform(page.Width / 2, page.Height / 2);
    gfx.RotateTransform(-45);

    // Draw watermark
    var size = gfx.MeasureString("CONFIDENTIAL", font);
    gfx.DrawString("CONFIDENTIAL", font, 
        new XSolidBrush(XColor.FromArgb(128, 255, 0, 0)),
        new XRect(-size.Width / 2, -size.Height / 2, size.Width, size.Height),
        XStringFormats.Center);
}

document.Save("watermarked-pdfsharp.pdf");
using PdfSharpCore.Drawing;
using PdfSharpCore.Pdf;
using PdfSharpCore.Pdf.IO;

var document = PdfReader.Open("document.pdf", PdfDocumentOpenMode.Modify);

foreach (var page in document.Pages)
{
    var gfx = XGraphics.FromPdfPage(page, XGraphicsPdfPageOptions.Append);

    // Create watermark font
    var font = new XFont("Arial", 48);

    // Calculate rotation
    gfx.TranslateTransform(page.Width / 2, page.Height / 2);
    gfx.RotateTransform(-45);

    // Draw watermark
    var size = gfx.MeasureString("CONFIDENTIAL", font);
    gfx.DrawString("CONFIDENTIAL", font, 
        new XSolidBrush(XColor.FromArgb(128, 255, 0, 0)),
        new XRect(-size.Width / 2, -size.Height / 2, size.Width, size.Height),
        XStringFormats.Center);
}

document.Save("watermarked-pdfsharp.pdf");
$vbLabelText   $csharpLabel

Digitale Signaturen

Digitale Signaturen sorgen für die Authentizität und Integrität von Dokumenten.

IronPDFDigitale Signaturen

using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("contract.pdf");

// Create a signature with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "legal@company.com",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};

// Add visual signature
var signatureImage = new PdfSignature("certificate.pfx", "password")
{
    SignatureImage = new PdfSignatureImage("signature.png", 0, 0, 200, 100)
};

// Apply signature to the last page
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
using IronPdf;
using IronPdf.Signing;

var pdf = PdfDocument.FromFile("contract.pdf");

// Create a signature with certificate
var signature = new PdfSignature("certificate.pfx", "password")
{
    SigningContact = "legal@company.com",
    SigningLocation = "New York, NY",
    SigningReason = "Contract Approval"
};

// Add visual signature
var signatureImage = new PdfSignature("certificate.pfx", "password")
{
    SignatureImage = new PdfSignatureImage("signature.png", 0, 0, 200, 100)
};

// Apply signature to the last page
pdf.Sign(signature);
pdf.SaveAs("signed-contract.pdf");
$vbLabelText   $csharpLabel

PDFSharpCore Digitale Signaturen

PDFSharpCore unterstützt keine digitalen Signaturen nativ, was eine erhebliche Einschränkung für Geschäftsapplikationen darstellt, die Dokumentensicherheit erfordern.

Formularbearbeitung

Das Arbeiten mit PDF-Formularen ist entscheidend für interaktive Dokumente.

IronPDFFormularverarbeitung

using IronPdf;

// Create a form from HTML
var html = @"
    <form>
        <label>Name: <input type='text' name='fullName' required></label><br>
        <label>Email: <input type='email' name='email' required></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe' value='yes'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option value='basic'>Basic</option>
                <option value='pro'>Professional</option>
                <option value='enterprise'>Enterprise</option>
            </select>
        </label>
    </form>";

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

// Fill existing form
var filledPdf = PdfDocument.FromFile("application-form.pdf");
filledPdf.Form.FindFormField("fullName").Value = "John Doe";
filledPdf.Form.FindFormField("email").Value = "john@example.com";
filledPdf.Form.FindFormField("subscribe").Value = "yes";

filledPdf.SaveAs("completed-application.pdf");
using IronPdf;

// Create a form from HTML
var html = @"
    <form>
        <label>Name: <input type='text' name='fullName' required></label><br>
        <label>Email: <input type='email' name='email' required></label><br>
        <label>Subscribe: <input type='checkbox' name='subscribe' value='yes'></label><br>
        <label>
            Plan:
            <select name='plan'>
                <option value='basic'>Basic</option>
                <option value='pro'>Professional</option>
                <option value='enterprise'>Enterprise</option>
            </select>
        </label>
    </form>";

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

// Fill existing form
var filledPdf = PdfDocument.FromFile("application-form.pdf");
filledPdf.Form.FindFormField("fullName").Value = "John Doe";
filledPdf.Form.FindFormField("email").Value = "john@example.com";
filledPdf.Form.FindFormField("subscribe").Value = "yes";

filledPdf.SaveAs("completed-application.pdf");
$vbLabelText   $csharpLabel

Leistungsvergleiche

Basierend auf umfassenden Tests und Community-Feedback sind hier Leistungsvergleiche:

HTML zu PDF Rendering

Testfall IronPDF PDFSharpCore (mit HtmlRenderer)
Einfaches HTML (1 Seite) 0.8-1.2s 0.3-0.5s
Komplexes HTML mit CSS3 1,5-2s Scheitert oft oder rendert falsch
JavaScript-Diagramme 2-3s Nicht unterstützt
100-Seiten-Bericht 15-20s 45-60s
Speicherverbrauch 150-200MB 80-120MB

Einblicke in die wichtigsten Leistungsmerkmale

  1. IronPDF glänzt bei:

    • Komplexem HTML-Rendering mit vollständiger Browserkompatibilität
    • Paralleler Verarbeitung für Batch-Operationen
    • Konstanter Performance über verschiedene Inhaltsarten hinweg
    • Asynchronen Operationen für bessere Skalierbarkeit
  2. PDFSharpCore performt besser bei:
    • Einfache programmatische PDF-Erstellung
    • Geringerer Speicherbedarf
    • Grundlegende Dokumentenmodifikationen

Beispiel für die Leistung in der realen Welt

//IronPDF- Batch processing with parallel execution
using IronPdf;
using System.Threading.Tasks;

class BatchProcessor
{
    public static async Task ProcessInvoicesAsync(List<string> htmlInvoices)
    {
        var renderer = new ChromePdfRenderer();

        // Process multiple PDFs in parallel
        var tasks = htmlInvoices.Select(async (html, index) =>
        {
            var pdf = await renderer.RenderHtmlAsPdfAsync(html);
            await pdf.SaveAsAsync($"invoice-{index}.pdf");
        });

        await Task.WhenAll(tasks);
    }
}
//IronPDF- Batch processing with parallel execution
using IronPdf;
using System.Threading.Tasks;

class BatchProcessor
{
    public static async Task ProcessInvoicesAsync(List<string> htmlInvoices)
    {
        var renderer = new ChromePdfRenderer();

        // Process multiple PDFs in parallel
        var tasks = htmlInvoices.Select(async (html, index) =>
        {
            var pdf = await renderer.RenderHtmlAsPdfAsync(html);
            await pdf.SaveAsAsync($"invoice-{index}.pdf");
        });

        await Task.WhenAll(tasks);
    }
}
$vbLabelText   $csharpLabel

Echte Anwendungsfälle

Wann sollte manIronPDFwählen

IronPDF ist ideal für:

  1. Integration in Webanwendungen

    • Konvertierung dynamischer Webinhalte in PDFs
    • Berichtserstellung von Web-Dashboards
    • Erstellen von Rechnungen aus HTML-Vorlagen
  2. Unternehmensdokumentenmanagement

    • Implementierung von Dokumenten-Workflows mit digitalen Signaturen
    • Erstellung sicherer, verschlüsselter PDFs für vertrauliche Daten
    • Batch-Verarbeitung großer Dokumentenmengen
  3. SaaS-Anwendungen

    • Mandantenfähige PDF-Erzeugung
    • Cloud-native Implementierungen auf Azure/AWS
    • Hochleistungsfähige asynchrone Verarbeitung
  4. Komplexe Berichterstellung
    • Finanzberichte mit Diagrammen und Grafiken
    • Marketingmaterialien mit reichhaltigen Medien
    • Technische Dokumentation mit Code-Highlighting

Wann sollte man sich für PDFSharpCore entscheiden

PDFSharpCore ist geeignet für:

  1. Budgetbewusste Projekte

    • Open-Source-Projekte ohne Lizenzbudget
    • Einfache Anforderungen an die PDF-Generierung
    • Akademische oder persönliche Projekte
  2. Grundlegende PDF-Operationen

    • Erstellung einfacher textbasierter PDFs
    • Grundlegendes Dokument-Merging
    • Hinzufügen einfacher Grafiken oder Formen
  3. Leichtgewichtige Anwendungen
    • Eingebettete Systeme mit Speichereinschränkungen
    • Einfache Kommandozeilen-Tools
    • Microservices mit minimalen Abhängigkeiten

Lizenzierung und Preise

IronPDF-Lizenzierung

IronPDF bietet flexible Lizenzierungsoptionen (Preise ab 2025):

  • Lite-Lizenz: $799 (1 Entwickler, 1 Standort, 1 Projekt)
  • Plus-Lizenz: $1,199 (3 Entwickler, 3 Standorte, 3 Projekte)
  • Professionelle Lizenz: $2,399 (10 Entwickler, 10 Standorte, 10 Projekte)
  • Kostenlose Testversion : 30 Tage voll funktionsfähige Testversion

Zusätzliche Vorteile:

  • Unbefristete Lizenzierung (Einmalkauf)
  • Lizenzfreie Weiterverteilung verfügbar
  • 24/5 technische Unterstützung inklusive
  • Kostenlose Updates für ein Jahr
  • Iron Suite-Paket für zusätzliche Einsparungen erhältlich

PDFSharpCore Lizenzierung

PDFSharpCore ist unter der MIT-Lizenz komplett kostenlos:

  • Keine Lizenzkosten
  • Keine Einschränkungen für kommerzielle Nutzung
  • Nur Community-Unterstützung
  • Keine garantierten Updates oder Fehlerbehebungen

Erfahrung von Entwicklern

Dokumentation und Ressourcen

IronPDF bietet:

PDFSharpCore bietet:

  • Grundlegende GitHub-Dokumentation
  • Community-Beispiele
  • Begrenzte offizielle Tutorials

Vergleich der Unterstützung

Unterstützungstyp IronPDF PDFSharpCore
Professionelle Unterstützung 24/5 inklusive Keine
Antwortzeit 24-48 Stunden Community-abhängig
Direkter Zugriff auf Ingenieure Ja Nein
Garantie auf Fehlerbehebung Ja Nein

Abschluss

SowohlIronPDFals auch PDFSharpCore spielen eine wichtige Rolle im .NET PDF-Ökosystem, aber sie richten sich an unterschiedliche Bedürfnisse und Anwendungsfälle.

Wählen Sie IronPDF, wenn:

  • Sie eine robuste HTML-zu-PDF-Konvertierung mit voller CSS3- und JavaScript-Unterstützung benötigen
  • Ihr Projekt erweiterte Funktionen wie digitale Signaturen, Verschlüsselung oder Formularverwaltung erfordert
  • Sie Unternehmens- oder kommerzielle Anwendungen entwickeln
  • Sie umfassende Dokumentation und professionellen Unterstützung schätzen
  • Leistung und Zuverlässigkeit entscheidend sind
  • Sie cloud-fähige Bereitstellungsoptionen benötigen

Wählen Sie PDFSharpCore, wenn:

  • Sie an einem budgetbeschränkten oder Open-Source-Projekt arbeiten
  • Ihre PDF-Anforderungen einfach sind und kein HTML-Rendering erfordern
  • Sie manuelle Kontrolle über die PDF-Konstruktion bevorzugen
  • Der Speicherbedarf ist ein kritisches Anliegen
  • Sie mit Community-Unterstützung vertraut sind

Der moderne Ansatz vonIronPDFzur PDF-Generierung, kombiniert mit seinem umfangreichen Funktionsumfang und exzellentem Unterstützung, macht es zur überlegenen Wahl für die meisten professionellen Anwendungen. Obwohl es eine Lizenzinvestition erfordert, rechtfertigt die Zeitersparnis bei der Entwicklung und die gewonnene Zuverlässigkeit oft die Kosten für kommerzielle Projekte.

Bereit, den Unterschied zu erleben? Starten Sie Ihre kostenlose 30-Tage-Testversion von IronPDF und sehen Sie, wie es Ihren PDF-Generierungs-Workflow transformieren kann. Mit umfassender Dokumentation, reaktionsschnellem Unterstützung und einer funktionsreichen API ermöglichtIronPDFEntwicklern, professionelle PDFs mit minimalem Aufwand zu erstellen.

Starten Sie jetzt mit IronPDF.
green arrow pointer

Hinweis:PDFSharpCore ist eine eingetragene Marke des jeweiligen Eigentümers. Diese Seite ist nicht verbunden, genehmigt oder gesponsert von PDFSharpCore. Alle Produktnamen, Logos und Marken sind Eigentum ihrer jeweiligen Eigentümer. Die Vergleiche dienen nur zu Informationszwecken und spiegeln öffentlich verfügbare Informationen zum Zeitpunkt des Schreibens wider.

Häufig gestellte Fragen

Wie kann ich HTML in PDF in C# konvertieren?

Sie können die RenderHtmlAsPdf-Methode von IronPDF verwenden, um HTML-Strings in PDFs zu konvertieren. Diese Methode unterstützt die vollständige CSS3- und JavaScript-Ausführung und gewährleistet eine originalgetreue Wiedergabe.

Was sind die wesentlichen Unterschiede zwischen IronPDF und PDFSharpCore?

IronPDF ist eine kommerzielle Bibliothek mit erweiterten Funktionen wie HTML-zu-PDF-Konvertierung, digitalen Signaturen und Cloud-Plattform-Optimierung. PDFSharpCore ist Open Source, konzentriert sich auf die grundlegende PDF-Erstellung durch manuelle Zeichenbefehle und bietet keine native HTML-zu-PDF-Konvertierung.

Kann ich mit diesen Bibliotheken Text aus PDFs extrahieren?

IronPDF bietet robuste Textextraktionsfunktionen mit Methoden wie ExtractAllText() und ExtractTextFromPage(), die die Dokumentstruktur beibehalten. PDFSharpCore hat eingeschränkte Textextraktionsfunktionen, die oft zu fragmentierten Ausgaben führen.

Was ist der beste Weg, um digitale Signaturen zu PDFs in C# hinzuzufügen?

IronPDF ermöglicht umfassende Unterstützung für digitale Signaturen, einschließlich visueller Signaturen und der Verwendung von Zertifikaten. Es bietet anpassbare Optionen für das Signieren von PDFs und eignet sich für sichere Dokumentenarbeitsabläufe.

Wie performen diese Bibliotheken beim HTML-Rendering bezüglich Geschwindigkeit?

IronPDF rendert typischerweise komplexes HTML in etwa 0,8-2 Sekunden in PDF mit vollständiger CSS3- und JavaScript-Unterstützung. PDFSharpCore ist schneller bei einfacher programmatischer PDF-Erstellung, unterstützt jedoch keine modernen Webtechnologien, was sich auf seine Rendering-Fähigkeiten auswirkt.

Gibt es eine Testversion zur Bewertung von PDF-Bibliotheken?

IronPDF bietet eine 30-tägige kostenlose Testversion, die Ihnen die Erkundung aller Funktionen einschließlich der HTML-zu-PDF-Konvertierung ermöglicht. PDFSharpCore ist kostenlos unter der MIT-Lizenz, bietet grundlegende Funktionalität ohne Testzeitraum.

Welche Bibliothek eignet sich besser für das Handling von PDF-Formularen?

IronPDF überzeugt beim Formularhandling mit der Fähigkeit, Formulare aus HTML zu erstellen und auszufüllen sowie Formulardaten zu extrahieren. PDFSharpCore unterstützt grundlegendes Formularhandling, erfordert jedoch die manuelle Erstellung von Feldern und bietet nicht das gleiche Maß an Automatisierung.

Wie unterstützen diese Bibliotheken die plattformübergreifende Entwicklung?

Sowohl IronPDF als auch PDFSharpCore unterstützen Windows, Linux und macOS. IronPDF bietet optimierte Konfigurationen für Cloud-Plattformen wie Azure und AWS, während PDFSharpCore möglicherweise zusätzliche Einrichtung für Cloud-Umgebungen benötigt.

Welche Art von Unterstützung kann ich mit diesen Bibliotheken erwarten?

IronPDF bietet 24/5 professionellen Ingenieursupport mit Reaktionszeiten von 24-48 Stunden, zusammen mit ausführlicher Dokumentation. PDFSharpCore ist auf Community-Support über Foren und GitHub angewiesen, ohne garantierte Reaktionszeiten.

Wie geht jede Bibliothek mit der Leistung bei komplexen PDF-Operationen um?

IronPDF überzeugt im Handling von komplexem HTML-Rendering und unterstützt parallele Verarbeitung für Stapeloperationen, was hervorragenden Datendurchsatz bietet. PDFSharpCore zeigt Vorteile bei der Speichereffizienz für einfache Dokumente, verfügt jedoch nicht über umfangreiche Rendering-Fähigkeiten.

Jacob Mellor, Chief Technology Officer @ Team Iron
Chief Technology Officer

Jacob Mellor ist Chief Technology Officer bei Iron Software und ein visionärer Ingenieur, der führend in der C# PDF-Technologie ist. Als ursprünglicher Entwickler der Iron Software-Kerncodebasis hat er die Produktarchitektur des Unternehmens seit seiner Gründung gestaltet und zusammen mit CEO Cameron Rimington in ein Unternehmen ...

Weiterlesen