VERGLEICH

FO.NET vs. IronPDF: Leitfaden für einen technischen Vergleich

Wenn .NET-Entwickler Lösungen zur PDF-Erzeugung in Betracht ziehen, sticht FO.NET als spezialisiertes Tool zur Konvertierung von XSL-FO-Dokumenten in PDF hervor. Die Abhängigkeit von der veralteten XSL-FO-Sprache, die fehlende HTML/CSS-Unterstützung und der eingestellte Wartungsstatus führen jedoch dazu, dass viele Teams nach Alternativen suchen.IronPDFbietet eine moderne Lösung, die HTML/CSS-Webstandards verwendet, mit denen die meisten Entwickler bereits vertraut sind, und verfügt über eine Chromium-Rendering-Engine und regelmäßige monatliche Updates.

In diesem Vergleich werden beide Bibliotheken in Bezug auf relevante technische Aspekte geprüft, um professionellen Entwicklern und Architekten dabei zu helfen, fundierte Entscheidungen für ihre .NET-PDF-Anforderungen zu treffen.

Fo.NET verstehen

FO.NET (auch bekannt als FoNet) ist eine Open-Source-Bibliothek, die für die Konvertierung von XSL Formatting Object (XSL-FO)-Dokumenten in PDFs mit C# entwickelt wurde. Die Bibliothek steht unter der Apache 2.0-Lizenz und bildet die XSL-FO-Sprache direkt auf das PDF-Format ab.

FO.NET verwendet FonetDriver als primäre Klasse, wobei die Make()-Fabrikmethode Treiberinstanzen erzeugt und Render()-Methoden XSL-FO-Eingabeströme verarbeiten, um PDF-Ausgabeströme zu erzeugen. Die Konfiguration erfolgt im XSL-FO-Markup selbst mit Elementen wie fo:simple-page-master, fo:layout-master-set und Formatierungsattributen für Ränder, Seitengrößen und Schriftarten.

Eine wichtige Einschränkung ist, dass FO.NET XSL-FO-Kenntnisse voraussetzt - eine XML-basierte Sprache, die eine W3C-Spezifikation aus dem Jahr 2001 ist und seit 2006 nicht mehr aktualisiert wurde. Die Bibliothek unterstützt weder HTML noch CSS und kann keine Webseiten direkt rendern. XSL-FO wird im heutigen Technologiebereich weitgehend als veraltet angesehen, da weniger als 1 % der Entwickler über Fachkenntnisse in diesem Bereich verfügen, während über 98 % HTML/CSS beherrschen.

Das ursprüngliche CodePlex-Repository gibt es nicht mehr, und die GitHub-Forks werden nicht mehr aktiv gepflegt. FO.NET hat interne Abhängigkeiten von System.Drawing, die verhindern, dass es unter Linux/MacOS funktioniert, was es auf den Einsatz unter Windows beschränkt.

IronPDFverstehen

IronPDF ist eine .NET-PDF-Bibliothek, die HTML/CSS für die Gestaltung und das Layout von Dokumenten verwendet und dabei Webstandards einsetzt, die in der Entwicklung üblich sind. Die Bibliothek verwendet eine Chromium-Rendering-Engine und bietet vollständige CSS3-Unterstützung, einschließlich Flexbox- und Grid-Layouts, sowie JavaScript-Ausführung.

IronPDF verwendet ChromePdfRenderer als primäre Rendering-Klasse, wobei RenderingOptions eine programmatische Konfiguration für Seitengröße, Ränder, Kopf- und Fußzeilen und andere PDF-Einstellungen bietet. Die Bibliothek unterstützt das direkte Rendering von URLs, HTML-Strings und HTML-Dateien und erzeugt PdfDocument-Objekte, die gespeichert, zusammengeführt, gesichert oder weiter bearbeitet werden können.

IronPDF wird aktiv mit monatlichen Releases gepflegt, unterstützt eine echte plattformübergreifende Bereitstellung (Windows, Linux, macOS) und bietet eine ausführliche Dokumentation und Tutorials.

Architektur- und Technologievergleich

Der grundlegende Unterschied zwischen diesen .NET-PDF-Bibliotheken liegt in ihrem Eingabeformat und ihrer technologischen Grundlage.

Aspekt FO.NET IronPDF
Eingabeformat XSL-FO (veraltetes XML) HTML/CSS (moderne Webstandards)
Lernkurve Steep (XSL-FO-Kenntnisse) Sanft (HTML/CSS-Kenntnisse)
Wartung Aufgegeben Monatlich aktiv gepflegt
Windows, Linux, macOS, Docker, Azure, AWS. Nur für Windows Echt plattformübergreifend
CSS-Unterstützung Keine Vollständiges CSS3 (Flexbox, Grid)
JavaScript Keine Volle JavaScript-Unterstützung
URL-Rendering Nicht unterstützt Eingebaut
Moderne Funktionen Beschränkt Kopfzeilen, Fußzeilen, Wasserzeichen, Sicherheit
Dokumentation Veraltet Umfassende Tutorials

FO.NET wurde entwickelt, als erwartet wurde, dass XSL-FO ein Standard für die Dokumentenformatierung werden würde. Das ist nicht geschehen - HTML/CSS wurde zum universellen Dokumentenformat. Die meisten XSL-FO-Ressourcen stammen aus den Jahren 2005-2010, was es zunehmend schwieriger macht, aktuelle Informationen oder Unterstützung durch die Community zu finden.

Code-Vergleich: Gängige PDF-Operationen

HTML-zu-PDF-Konvertierung

Der grundlegendste Vorgang demonstriert den Modellunterschied zwischen XSL-FO- und HTML-Ansätzen.

FO.NET:

// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;
using System.Xml;

class Program
{
    static void Main()
    {
        // FoNet requires XSL-FO format, not HTML
        // First convert HTML to XSL-FO (manual process)
        string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
            <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
                <fo:layout-master-set>
                    <fo:simple-page-master master-name='page'>
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference='page'>
                    <fo:flow flow-name='xsl-region-body'>
                        <fo:block>Hello World</fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>";

        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("output.pdf", FileMode.Create));
    }
}
// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;
using System.Xml;

class Program
{
    static void Main()
    {
        // FoNet requires XSL-FO format, not HTML
        // First convert HTML to XSL-FO (manual process)
        string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
            <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
                <fo:layout-master-set>
                    <fo:simple-page-master master-name='page'>
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference='page'>
                    <fo:flow flow-name='xsl-region-body'>
                        <fo:block>Hello World</fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>";

        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("output.pdf", FileMode.Create));
    }
}
Imports Fonet
Imports Fonet.Render.Pdf
Imports System.IO
Imports System.Xml

Module Program
    Sub Main()
        ' FoNet requires XSL-FO format, not HTML
        ' First convert HTML to XSL-FO (manual process)
        Dim xslFo As String = "<?xml version='1.0' encoding='utf-8'?>" & _
            "<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>" & _
                "<fo:layout-master-set>" & _
                    "<fo:simple-page-master master-name='page'>" & _
                        "<fo:region-body/>" & _
                    "</fo:simple-page-master>" & _
                "</fo:layout-master-set>" & _
                "<fo:page-sequence master-reference='page'>" & _
                    "<fo:flow flow-name='xsl-region-body'>" & _
                        "<fo:block>Hello World</fo:block>" & _
                    "</fo:flow>" & _
                "</fo:page-sequence>" & _
            "</fo:root>"

        Dim driver As FonetDriver = FonetDriver.Make()
        driver.Render(New StringReader(xslFo), 
                      New FileStream("output.pdf", FileMode.Create))
    End Sub
End Module
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        string html = "<h1>Hello World</h1><p>This is HTML content.</p>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("output.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim html As String = "<h1>Hello World</h1><p>This is HTML content.</p>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("output.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Der Kontrast ist klar. FO.NET erfordert eine ausführliche XSL-FO-Auszeichnung mit XML-Namensraumdeklarationen, fo:root, fo:layout-master-set, fo:simple-page-master, fo:page-sequence, fo:flow und fo:block Elementen - und das alles, bevor ein einfacher "Hello World"-Text erzeugt wird. Der Code-Kommentar weist ausdrücklich darauf hin: "FoNet erfordert das XSL-FO-Format, nicht HTML."

IronPDF erstellt einen Renderer, übergibt Standard-HTML, rendert in PDF und speichert einfache Zeilen mit einer Syntax, die Entwickler bereits kennen.

Für fortgeschrittene HTML-Rendering-Optionen lesen Sie bitte den Leitfaden zur Konvertierung von HTML in PDF.

URL zu PDF-Konvertierung

Die Konvertierung von Webseiten in das PDF-Format offenbart eine kritische Fähigkeitslücke.

FO.NET:

// NuGet: Install-Package Fonet
using Fonet;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        // FoNet does not support URL rendering directly
        // Must manually download, convert HTML to XSL-FO, then render
        string url = "https://example.com";
        string html = new WebClient().DownloadString(url);

        // Manual conversion from HTML to XSL-FO required (complex)
        string xslFo = ConvertHtmlToXslFo(html); // Not built-in

        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("webpage.pdf", FileMode.Create));
    }

    static string ConvertHtmlToXslFo(string html)
    {
        // Custom implementation required
        throw new System.NotImplementedException();
    }
}
// NuGet: Install-Package Fonet
using Fonet;
using System.IO;
using System.Net;

class Program
{
    static void Main()
    {
        // FoNet does not support URL rendering directly
        // Must manually download, convert HTML to XSL-FO, then render
        string url = "https://example.com";
        string html = new WebClient().DownloadString(url);

        // Manual conversion from HTML to XSL-FO required (complex)
        string xslFo = ConvertHtmlToXslFo(html); // Not built-in

        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("webpage.pdf", FileMode.Create));
    }

    static string ConvertHtmlToXslFo(string html)
    {
        // Custom implementation required
        throw new System.NotImplementedException();
    }
}
Imports Fonet
Imports System.IO
Imports System.Net

Class Program
    Shared Sub Main()
        ' FoNet does not support URL rendering directly
        ' Must manually download, convert HTML to XSL-FO, then render
        Dim url As String = "https://example.com"
        Dim html As String = New WebClient().DownloadString(url)

        ' Manual conversion from HTML to XSL-FO required (complex)
        Dim xslFo As String = ConvertHtmlToXslFo(html) ' Not built-in

        Dim driver As FonetDriver = FonetDriver.Make()
        driver.Render(New StringReader(xslFo), 
                      New FileStream("webpage.pdf", FileMode.Create))
    End Sub

    Shared Function ConvertHtmlToXslFo(html As String) As String
        ' Custom implementation required
        Throw New System.NotImplementedException()
    End Function
End Class
$vbLabelText   $csharpLabel

IronPDF:

// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        var pdf = renderer.RenderUrlAsPdf("https://example.com");
        pdf.SaveAs("webpage.pdf");
    }
}
Imports IronPdf

Class Program
    Shared Sub Main()
        Dim renderer = New ChromePdfRenderer()
        Dim pdf = renderer.RenderUrlAsPdf("https://example.com")
        pdf.SaveAs("webpage.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

FO.NET unterstützt ausdrücklich keine URL-Wiedergabe. Die Code-Kommentare besagen: "FoNet unterstützt keine direkte URL-Wiedergabe" und "Manuelle Konvertierung von HTML nach XSL-FO erforderlich (komplex)." Die Methode ConvertHtmlToXslFo() löst eine NotImplementedException aus, weil diese Umwandlung nicht eingebaut ist und eine eigene Implementierung erfordern würde.

IronPDF bietet eine native RenderUrlAsPdf()-Funktionalität, die das Abrufen von URLs, die Ausführung von JavaScriptund das Rendern in einem einzigen Methodenaufruf erledigt - drei Zeilen Code im Gegensatz zu einem komplexen, nicht implementierten Workflow.

Weitere Informationen zum URL-Rendering finden Sie in der URL to PDF-Dokumentation.

PDF mit benutzerdefinierten Einstellungen

Die Konfiguration von Seitenabmessungen und -rändern demonstriert die Unterschiede im Konfigurationsansatz.

FO.NET:

// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;

class Program
{
    static void Main()
    {
        // FoNet settings are configured in XSL-FO markup
        string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
            <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
                <fo:layout-master-set>
                    <fo:simple-page-master master-name='A4' 
                        page-height='297mm' page-width='210mm'
                        margin-top='20mm' margin-bottom='20mm'
                        margin-left='25mm' margin-right='25mm'>
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference='A4'>
                    <fo:flow flow-name='xsl-region-body'>
                        <fo:block font-size='14pt'>Custom PDF</fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>";

        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("custom.pdf", FileMode.Create));
    }
}
// NuGet: Install-Package Fonet
using Fonet;
using Fonet.Render.Pdf;
using System.IO;

class Program
{
    static void Main()
    {
        // FoNet settings are configured in XSL-FO markup
        string xslFo = @"<?xml version='1.0' encoding='utf-8'?>
            <fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
                <fo:layout-master-set>
                    <fo:simple-page-master master-name='A4' 
                        page-height='297mm' page-width='210mm'
                        margin-top='20mm' margin-bottom='20mm'
                        margin-left='25mm' margin-right='25mm'>
                        <fo:region-body/>
                    </fo:simple-page-master>
                </fo:layout-master-set>
                <fo:page-sequence master-reference='A4'>
                    <fo:flow flow-name='xsl-region-body'>
                        <fo:block font-size='14pt'>Custom PDF</fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>";

        FonetDriver driver = FonetDriver.Make();
        driver.Render(new StringReader(xslFo), 
            new FileStream("custom.pdf", FileMode.Create));
    }
}
Imports Fonet
Imports Fonet.Render.Pdf
Imports System.IO

Class Program
    Shared Sub Main()
        ' FoNet settings are configured in XSL-FO markup
        Dim xslFo As String = "<?xml version='1.0' encoding='utf-8'?>" & _
            "<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>" & _
                "<fo:layout-master-set>" & _
                    "<fo:simple-page-master master-name='A4' " & _
                        "page-height='297mm' page-width='210mm' " & _
                        "margin-top='20mm' margin-bottom='20mm' " & _
                        "margin-left='25mm' margin-right='25mm'>" & _
                        "<fo:region-body/>" & _
                    "</fo:simple-page-master>" & _
                "</fo:layout-master-set>" & _
                "<fo:page-sequence master-reference='A4'>" & _
                    "<fo:flow flow-name='xsl-region-body'>" & _
                        "<fo:block font-size='14pt'>Custom PDF</fo:block>" & _
                    "</fo:flow>" & _
                "</fo:page-sequence>" & _
            "</fo:root>"

        Dim driver As FonetDriver = FonetDriver.Make()
        driver.Render(New StringReader(xslFo), 
            New FileStream("custom.pdf", FileMode.Create))
    End Sub
End Class
$vbLabelText   $csharpLabel

IronPDF:

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

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 25;
        renderer.RenderingOptions.MarginRight = 25;

        string html = "<h1 style='font-size:14pt'>Custom PDF</h1>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom.pdf");
    }
}
// NuGet: Install-Package IronPdf
using IronPdf;
using IronPdf.Engines.Chrome;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 25;
        renderer.RenderingOptions.MarginRight = 25;

        string html = "<h1 style='font-size:14pt'>Custom PDF</h1>";
        var pdf = renderer.RenderHtmlAsPdf(html);
        pdf.SaveAs("custom.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Engines.Chrome

Class Program
    Shared Sub Main()
        Dim renderer As New ChromePdfRenderer()
        renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
        renderer.RenderingOptions.MarginTop = 20
        renderer.RenderingOptions.MarginBottom = 20
        renderer.RenderingOptions.MarginLeft = 25
        renderer.RenderingOptions.MarginRight = 25

        Dim html As String = "<h1 style='font-size:14pt'>Custom PDF</h1>"
        Dim pdf = renderer.RenderHtmlAsPdf(html)
        pdf.SaveAs("custom.pdf")
    End Sub
End Class
$vbLabelText   $csharpLabel

Der Code-Kommentar in FO.NET besagt ausdrücklich: "FoNet-Einstellungen werden in XSL-FO-Markup konfiguriert." Seitengröße, Ränder und Formatierung sind als Attribute auf fo:simple-page-master in die XML-Struktur eingebettet. Das bedeutet, dass die Konfiguration mit dem Inhalt in einem ausführlichen XML-Format verwoben ist.

IronPDF trennt die Konfiguration vom Inhalt durch programmatische RenderingOptions-Eigenschaften. Einstellungen wie PaperSize, MarginTop, MarginBottom, MarginLeftund MarginRightwerden im Renderer-Objekt festgelegt, während der Inhalt reines HTML bleibt.

API-Mapping-Referenz

Für Entwickler, die eine FO.NET-Migration evaluieren oder Funktionen vergleichen möchten, zeigt dieses Mapping gleichwertige Operationen:

Kernklassen-Zuordnung

FO.NET IronPDF
FonetDriver.Make() new ChromePdfRenderer()
driver.Render(inputStream, outputStream) renderer.RenderHtmlAsPdf(html)
driver.Render(inputFile, outputStream) renderer.RenderHtmlFileAsPdf(path)
driver.BaseDirectory RenderingOptions.BaseUrl
driver.OnError += handler Try/catch um rendern

XSL-FO zu RenderingOptions Mapping

XSL-FO-Attribut IronPDFRenderingOptionen
Seiten-Höhe/Seiten-Breite Papiergröße
margin-top MarginTop
Rand-unten MarginBottom
Margin-left MarginLeft
margin-right MarginRight
Referenz-Orientierung Papierausrichtung

XSL-FO-Elemente zu HTML-Zuordnung

XSL-FO-Element HTML-Äquivalent
<fo:root> <html>
<fo:layout-master-set> CSS @page-Regel
<fo:simple-page-master> CSS @page
<fo:page-sequence> <body> oder <div>
<fo:flow> <main> oder <div>
<fo:static-content> HtmlHeaderFooter
<fo:block> <p>, <div>, <h1>-<h6>
<fo:table> <table>
<fo:list-block> <ul>, <ol>
<fo:external-graphic> <img>
<fo:page-number/> {Seite} Platzhalter

Zusammenfassung des Funktionsvergleichs

Feature FO.NET IronPDF
HTML zu PDF (erfordert manuelle XSL-FO-Konvertierung)
URL zu PDF ❌(nicht unterstützt)
XSL-FO zu PDF Nicht anwendbar
CSS3-Unterstützung ✅(Flexbox, Grid)
JavaScript
Kopf-/Fußzeilen XSL-FO statischer Inhalt HTML-basiert
Seitennummerierung fo:page-number {Seite} Platzhalter
Plattformübergreifend ❌(nur Windows)
Aktive Wartung ❌(aufgegeben) ✅(monatlich)

Wenn Teams den Wechsel von FO.NET zuIronPDFerwägen

Entwicklungsteams erwägen den Übergang von FO.NET zuIronPDFaus mehreren Gründen:

Veraltete Technologie: XSL-FO ist eine W3C-Spezifikation aus dem Jahr 2001, die seit 2006 nicht mehr aktualisiert wurde und weitgehend als veraltet gilt. Die meisten Ressourcen und Dokumentationen stammen aus den Jahren 2005-2010, was es zunehmend schwieriger macht, aktuelle Informationen zu finden oder Entwickler mit XSL-FO-Kenntnissen einzustellen.

Steile Lernkurve: XSL-FO erfordert das Erlernen von komplexem XML-basiertem Markup mit speziellen Formatierungsobjekten (fo:block, fo:table, fo:page-sequence usw.). Weniger als 1 % der Entwickler kennen XSL-FO im Vergleich zu über 98 %, die HTML/CSS kennen.

Keine HTML/CSS-Unterstützung: FO.NET kann kein HTML oder CSS rendern - es erfordert eine manuelle Konvertierung von HTML in XSL-FO-Markup, das nicht in die Bibliothek integriert ist. Teams mit Webinhalten oder HTML-Vorlagen müssen eine eigene Konvertierungslogik implementieren.

Aufgegebene Wartung: Das ursprüngliche CodePlex-Repository ist nicht mehr in Betrieb, und die GitHub-Forks werden nicht mehr aktiv gewartet. Sicherheitspatches, Fehlerbehebungen und neue Funktionen werden nicht entwickelt.

Plattformbeschränkungen: FO.NET hat interne Abhängigkeiten von System.Drawing, die verhindern, dass es unter Linux/MacOS funktioniert, was den Einsatz auf reine Windows-Umgebungen beschränkt. Moderne Anwendungen erfordern zunehmend eine plattformübergreifende Bereitstellung.

Fehlende moderne Funktionen: Keine JavaScript-Unterstützung, keine CSS3-Funktionen (Flexbox, Grid), keine modernen Web-Schriften und keine direkte URL-Rendering-Funktion.

Stärken und Überlegungen

FO.NET Stärken

  • Direkte XSL-FO-Konvertierung: Speziell für die Umwandlung von XSL-FO in PDF optimiert
  • Open Source: Apache 2.0 Lizenz - frei zur Nutzung, Änderung und Verbreitung
  • Präzise Kontrolle: XSL-FO bietet detaillierte Kontrolle über das Dokumentenlayout

FO.NET Überlegungen

  • Veraltete Technologie: Die XSL-FO-Spezifikation wurde seit 2006 nicht mehr aktualisiert
  • Erforderliche XSL-FO-Kenntnisse: Weniger als 1 % der Entwickler verfügen über Fachkenntnisse
  • Keine HTML-Unterstützung: Kann keine HTML- oder CSS-Inhalte wiedergeben
  • Abgebrochen: Keine aktiven Wartungs- oder Sicherheitsupdates
  • Nur Windows: System.Drawing-Abhängigkeiten verhindern den plattformübergreifenden Einsatz
  • Kein URL-Rendering: Keine direkte Konvertierung von Webseiten möglich
  • Beschränkte Dokumentation: Die Ressourcen sind veraltet

IronPDFStärken

  • HTML/CSS Standard: Verwendet Webtechnologien, die über 98 % der Entwickler bereits kennen
  • Modernes Rendering: Chromium-Engine mit vollständiger CSS3- und JavaScript-Unterstützung
  • Aktive Entwicklung: Monatliche Veröffentlichungen mit neuen Funktionen und Sicherheitspatches
  • Plattformübergreifend: Echte Unterstützung für Windows, Linux und macOS
  • Direktes URL-Rendering: Native RenderUrlAsPdf() Fähigkeit
  • Professionelle Funktionen: Kopfzeilen, Fußzeilen, Wasserzeichen, Sicherheit - alles integriert
  • Umfassende Ressourcen: Umfangreiche Tutorials und Dokumentation

IronPDFÜberlegungen

  • Gewerbliche Lizenz: Erfordert Lizenz für Produktionszwecke
  • Unterschiedliches Paradigma: XSL-FO-Vorlagen müssen in HTML konvertiert werden

Abschluss

FO.NET undIronPDFstellen grundlegend unterschiedliche Ansätze für die PDF-Erzeugung in .NET dar. FO.NET bedient den Nischenanwendungsfall der XSL-FO-zu-PDF-Konvertierung, aber seine Abhängigkeit von veralteter Technologie, die aufgegebene Wartung, die Beschränkung auf Windows und die fehlende HTML-Unterstützung machen es zunehmend schwierig, es für neue Projekte zu rechtfertigen.

IronPDF bietet einen modernen Ansatz unter Verwendung von HTML/CSS-Webstandards, der sich an den aktuellen Fähigkeiten und Technologien der Entwickler orientiert. Die Fähigkeit, HTML und URLs direkt zu rendern und CSS3 mit einer Chromium-Engine zu verwenden, macht es für die heutigen Anforderungen an die PDF-Erstellung geeignet.

Da Unternehmen für .NET 10, C# 14 und die Anwendungsentwicklung bis 2026 planen, ist die technologische Grundlage wichtig. Teams, die alte XSL-FO-Systeme pflegen, können weiterhin FO.NET verwenden, aber der Weg zur modernen PDF-Erzeugung führt eindeutig über HTML-basierte Lösungen wie IronPDF, die das vorhandene Fachwissen in der Webentwicklung nutzen.

Testen SieIronPDFmit einer kostenlosen Testversion und lesen Sie die umfassende Dokumentation, um die Eignung für Ihre spezifischen Anforderungen zu prüfen.