PRODUKT-VERGLEICHE

Ein Vergleich zwischen Report .NET und IronPDF

Veröffentlicht 29. April 2024
Teilen Sie:

In diesem Artikel werfen wir einen genauen Blick auf zwei beliebte C#-Bibliotheken, die für die Arbeit mit PDF-Dateien verwendet werden: IronPDF und Report.NET. Diese Werkzeuge sind unverzichtbar für Entwickler, die in ihren C#-Anwendungen PDF-Dokumente erstellen, ändern oder mit ihnen interagieren müssen. Beide Bibliotheken bieten eine Reihe von Funktionen, die den Umgang mit PDFs einfacher und effizienter machen sollen, aber sie tun dies auf unterschiedliche Weise.

IronPDF und Report.NET ermöglichen es Entwicklern, dynamisch Dokumente zu erstellen, Inhalte zu bearbeiten und Text und Bilder aus PDFs zu ziehen. Sie unterstützen auch die Verarbeitung von Formularen, das Hinzufügen digitaler Signaturen und stellen sicher, dass Anwendungen PDF-Dateien auf verschiedenen Plattformen verarbeiten können, ohne dass die Dokumententreue verloren geht. Das bedeutet, dass die PDF-Dateien unabhängig vom Gerät oder Betriebssystem wie vorgesehen aussehen und funktionieren.

In diesem Vergleich werden wir auf die spezifischen Funktionen jeder Bibliothek eingehen, ihre Funktionsweise erläutern, Codeschnipsel zur Veranschaulichung ihrer Verwendung bereitstellen und ihre Lizenzbedingungen diskutieren. Dieser Vergleich soll Entwicklern ein klares Verständnis dafür vermitteln, was die einzelnen Bibliotheken leisten können, und ihnen bei der Entscheidung helfen, welche Bibliothek für ihre Projektanforderungen am besten geeignet ist. Schauen wir uns die Möglichkeiten und Unterschiede zwischen IronPDF und Report.NET an und konzentrieren uns dabei auf die Einfachheit und die praktischen Erkenntnisse für Entwickler.

1. Report.NET C# Bibliothek

Report.NET ist eine robuste C#-Bibliothek, mit der Entwickler PDF-Dokumente direkt in ihren .NET-Anwendungen erstellen, verwalten und bearbeiten können. Dieses Tool ist bekannt für seinen einfachen Ansatz bei der PDF-Erzeugung und -Bearbeitung und ermöglicht die Erstellung komplexer PDF-Dokumente von Grund auf oder die Modifizierung bestehender Dokumente. Seine Möglichkeiten reichen vom einfachen Hinzufügen von Text bis hin zur Einbindung von Bildern und Formen, was es zu einer vielseitigen Wahl für Entwickler macht, die PDF-Funktionen in ihre Projekte implementieren möchten.

1.1 Hauptmerkmale von Report.NET

1.1.1 Erstellung und Bearbeitung von Dokumenten

Report.NET eignet sich hervorragend für die Erstellung neuer und die Bearbeitung bestehender PDF-Dokumente. Entwickler können problemlos Text, Bilder und Grafiken hinzufügen und so detaillierte und visuell ansprechende Dokumente erstellen.

1.1.2 Flexibilität bei der Verwaltung von Inhalten

Diese Bibliothek ermöglicht eine genaue Kontrolle über den Inhalt des Dokuments, einschließlich Textformatierung, Bildplatzierung und grafischer Elemente. Dieses Maß an Kontrolle stellt sicher, dass die endgültige PDF-Datei genau so aussieht wie gewünscht.

1.1.3 Benutzerfreundlichkeit

Mit dem Schwerpunkt auf Einfachheit vereinfacht Report.NET den PDF-Erzeugungsprozess und macht ihn auch für diejenigen zugänglich, die zum ersten Mal mit PDFs in einem Programmierkontext arbeiten.

1.1.4 Kompatibilität zwischen verschiedenen Plattformen

Report.NET ist so konzipiert, dass es nahtlos mit der .NET-Plattform, einschließlich .NET Core, zusammenarbeitet, so dass Anwendungen unabhängig vom Betriebssystem PDFs erzeugen und verwalten können.

1.1.5 Personalisierung und Styling

Die Bibliothek bietet umfangreiche Anpassungsoptionen für PDF-Dokumente, die es Entwicklern ermöglichen, das Layout, das Styling und das Gesamterscheinungsbild an ihre spezifischen Anforderungen anzupassen.

1.1.6 Offene Quelle

Als Open-Source-Tool profitiert Report.NET von den Beiträgen der Community, wodurch sichergestellt wird, dass es ständig aktualisiert wird und im Laufe der Zeit neue Funktionen erhält. Diese Unterstützung durch die Community bedeutet auch, dass Entwickler auf eine Fülle von Wissen und Ressourcen zugreifen können.

2. IronPDF C# Bibliothek

IronPDF ist eine umfassende .NET-Bibliothek, die die Erstellung, Bearbeitung und Darstellung von PDF-Dokumenten in .NET-Anwendungen erleichtert. Dieses Werkzeug zeichnet sich dadurch aus, dass es sowohl die Erzeugung von PDFs aus HTML als auch die direkte Bearbeitung bestehender PDF-Dateien ermöglicht. Es ist sehr hilfreich, Berichte zu erstellen. IronPDF lässt sich auch nahtlos in die SQL Server Reporting Services integrieren. Wir können mit IronPDF einen Berichtsdesigner für Endbenutzer erstellen, um ein Berichtswerkzeug und einen Berichtsbetrachter zu entwickeln.

2.1 Hauptmerkmale von IronPDF

2.1.1 Konvertierung von HTML in PDF

Eine der Hauptstärken von IronPDF ist die Konvertierung von HTML und CSS in PDF-Dokumenten. Diese Funktion ist von unschätzbarem Wert für Entwickler, die Webinhalte in ein portables Format umwandeln und dabei das ursprüngliche Design und Layout beibehalten wollen.

2.1.2 PDF-Bearbeitung

IronPDF zeichnet sich dadurch aus, dass es Entwicklern Werkzeuge zur Bearbeitung und Manipulation von PDF-Dokumenten zur Verfügung stellt. Dazu gehören das Hinzufügen oder Entfernen von Seiten, das Ändern von Text und bilder einbetten. Mit IronPDF können wir auch Berichtsdaten aus den Berichten extrahieren.

2.1.3 Handhabung von Formularen

Die Bibliothek unterstützt die Erstellung und Bearbeitung von PDF-Formulareund ermöglicht es den Nutzern, auf dynamische Weise mit den Dokumenten zu interagieren. Diese Funktion ist von entscheidender Bedeutung für Anwendungen, die Eingaben von Endnutzern erfordern, wie z. B. Umfragen oder Antragsformulare.

2.1.4 Sicherheitsmerkmale

Mit IronPDF können Sie Sicherheitsmaßnahmen wie Verschlüsselung und passwortschutz ist ganz einfach. Diese Funktionen gewährleisten, dass sensible Informationen in PDF-Dokumenten vor unbefugtem Zugriff geschützt sind.

2.1.5 Drucken und Rendern

IronPDF ermöglicht es Entwicklern, PDFs sowohl für die Anzeige auf dem Bildschirm als auch für die physischer Druckund sorgt in beiden Fällen für eine qualitativ hochwertige Ausgabe. Dies erleichtert die Vorbereitung von Dokumenten für eine Reihe von Präsentations- oder Verteilungsanforderungen.

2.1.6 Plattformübergreifende Unterstützung

IronPDF arbeitet auf verschiedenen .NET-Plattformen, hält sich an .NET-Code-Standards und erleichtert die Entwicklung in verschiedenen Umgebungen ohne Kompatibilitätsprobleme.

2.1.7 Umfassende Dokumentation und Unterstützung

IronPDF wird unterstützt von detaillierte Dokumentation und engagierten Support, der den Entwicklern hilft, sich in den Funktionen der Bibliothek zurechtzufinden und ihre Funktionalitäten effizient in ihre Anwendungen zu integrieren.

2.1.8 Erweiterte PDF-Bearbeitung

IronPDF bietet viele erweiterte Bearbeitungsfunktionen. Dazu gehört die Fähigkeit zusammenführen und Aufteilen PDF-Dokumente, was besonders nützlich ist, um große Mengen an Informationen zu organisieren oder bestimmte Abschnitte aus einem Dokument zur separaten Verwendung zu extrahieren.

2.1.9 Benutzerdefinierte Kopf- und Fußzeilen

Die Bibliothek ermöglicht die anpassung von Kopfzeilen und Fußzeilen in PDF-Dokumenten. Diese Funktion ist unverzichtbar, wenn es darum geht, ein einheitliches Branding, Seitenzahlen oder Dokumententitel über mehrere Seiten hinweg einzufügen und so das professionelle Erscheinungsbild der Ausgabe zu verbessern.

3. Erstellen eines Konsolenprojekts in Visual Studio

Das Erstellen einer Konsolenanwendung in Visual Studio IDE ist ein einfacher Prozess, der mehrere Schritte umfasst.

3.1 Starten Sie Visual Studio

Beginnen Sie mit dem Öffnen von Microsoft Visual Studio. Wenn Sie es noch nicht installiert haben, müssen Sie es von der Website offizielle Microsoft-Website. Nach der Installation starten Sie das Visual Studio.

3.2 Ein neues Projekt erstellen

Nach dem Öffnen von Visual Studio werden Sie mit dem Startfenster begrüßt. Wählen Sie hier die Option "Neues Projekt erstellen", um die Einrichtung einer neuen Konsolenanwendung einzuleiten.

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 1 - Öffnen Sie Visual Studio und klicken Sie auf die Option "Ein neues Projekt erstellen".

3.3 Wählen Sie den Projekttyp

Im Fenster "Neues Projekt erstellen" sehen Sie eine Reihe von Projektvorlagen. Geben Sie "console" in das Suchfeld ein, um die Optionen zu filtern, und wählen Sie dann "Console App" aus der Liste. Stellen Sie sicher, dass Sie die Vorlage auswählen, die der gewünschten Programmiersprache entspricht, z. B. C#.

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 2 - Wählen Sie als nächstes den Projekttyp "Console App" in der Programmiersprache C#.

3.4 Konfigurieren Sie das Projekt

Wenn Sie die Vorlage für die Konsolenanwendung ausgewählt haben, klicken Sie auf "Weiter", um zum Bildschirm für die Projektkonfiguration zu gelangen. Hier müssen Sie einige Angaben zu Ihrem Projekt machen:

  • Projektname: Geben Sie Ihrem Projekt einen aussagekräftigen Namen, der seinen Zweck widerspiegelt.

    • Ort: Wählen Sie aus, wo auf Ihrem Computer Sie die Projektdateien speichern möchten.

    Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 3 - Geben Sie den Projektnamen und den Speicherort für das Console App-Projekt an. Standardmäßig ist der Lösungsname derselbe wie der Projektname, aber Sie können ihn ändern.

  • Name der Lösung: Standardmäßig ist dies derselbe wie Ihr Projektname, aber Sie können ihn ändern, wenn Sie mehrere Projekte in dieselbe Lösung aufnehmen möchten.

    • Framework: Wählen Sie die Version des .NET-Frameworks aus, die Sie verwenden möchten. Wenn Sie unsicher sind, wählen Sie die neueste Version.

    Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 4 - Wählen Sie die gewünschte .NET-Framework-Version aus. Wenn Sie unsicher sind, wählen Sie die neueste Version.

3.5 Das Projekt erstellen

Nachdem Sie alle erforderlichen Informationen eingegeben haben, klicken Sie auf die Schaltfläche "Erstellen". Visual Studio generiert nun ein neues Konsolenanwendungsprojekt basierend auf Ihren Angaben. Dieser Vorgang kann einige Augenblicke dauern.

4. Installation der IronPDF-Bibliothek

Um die Möglichkeiten von IronPDF in Ihrem Projekt nutzen zu können, müssen Sie die Bibliothek zunächst installieren. Hierfür gibt es mehrere Methoden, die jeweils für unterschiedliche Entwicklungsabläufe oder Präferenzen geeignet sind. Im Folgenden werden drei gängige Methoden zur Installation der IronPDF-Bibliothek in Ihr Visual Studio-Projekt beschrieben.

4.1 Installation mit dem NuGet-Paketmanager

Die NuGet-Paketmanager-Benutzeroberfläche in Visual Studio bietet eine unkomplizierte Möglichkeit zum Durchsuchen, Auswählen und Installieren von Paketen.

  1. Navigieren Sie in Visual Studio zu Ihrem Projekt im Projektmappen-Explorer, klicken Sie mit der rechten Maustaste darauf und wählen Sie die Option "NuGet-Pakete verwalten...".

  2. Klicken Sie auf die Registerkarte "Durchsuchen" und geben Sie "IronPDF" in das Suchfeld ein.

  3. Suchen Sie das IronPDF-Paket in den Suchergebnissen, wählen Sie es aus und klicken Sie dann auf die Schaltfläche "Installieren". Der Download und die Installation werden von Visual Studio automatisch durchgeführt.

    Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 5 - Installieren Sie IronPDF über die Funktion NuGet-Pakete für Lösungen verwalten, indem Sie in der Suchleiste des NuGet-Paketmanagers nach "IronPdf" suchen, dann das Projekt auswählen und auf die Schaltfläche Installieren klicken.

4.2 Installation über die NuGet-Paketmanager-Konsole

Für diejenigen, die die Verwendung von Befehlszeilentools bevorzugen, ist die NuGet Package Manager Console eine leistungsstarke Alternative.

  1. Öffnen Sie die Konsole: Gehen Sie in Visual Studio in das Menü "Tools" und navigieren Sie dann zu "NuGet Package Manager" > "Package Manager Console".

    1. Installationsbefehl: Geben Sie in der Konsole den folgenden Befehl ein und drücken Sie die Eingabetaste:
Install-Package IronPdf

Dieser Befehl weist NuGet an, die neueste Version von IronPDF herunterzuladen und in Ihrem Projekt zu installieren.

4.3 Installation über die NuGet-Website

Wenn Sie das Paket lieber manuell herunterladen möchten oder eine bestimmte Version von IronPDF benötigen, ist die NuGet-Website eine gute Option.

  1. Besuchen Sie die NuGet-Website: Gehen Sie zu nuget.org und suchen Sie nach "IronPDF".

  2. Das Paket herunterladen: Von der Website IronPDF-Seitewählen Sie die gewünschte Version aus und laden Sie die .nupkg-Datei herunter.

  3. Manuelle Installation: Nach dem Herunterladen können Sie das Paket manuell zu Ihrem Projekt hinzufügen. Wählen Sie in Visual Studio das Menü "Extras", dann "Optionen" > "NuGet Package Manager" > "Paketquellen". Fügen Sie eine neue Quelle hinzu, die auf den Ordner verweist, in den Sie die .nupkg-Datei heruntergeladen haben. Verwenden Sie schließlich die Paketmanager-Benutzeroberfläche oder die Konsole in Visual Studio, um das Paket aus Ihrer lokalen Quelle zu installieren.

5. Installieren der Report.NET-Bibliothek

Öffnen Sie Ihren Webbrowser und gehen Sie zum Report.NET GitHub-Repository unter https://github.com/ritchiecarroll/Report.NET/tree/master. Diese Seite enthält die aktuellste Version der Bericht.NET bibliothek zusammen mit ihrem Quellcode.

5.1 Download der Bibliothek

Suchen Sie auf der Repository-Seite die Schaltfläche "Code" und klicken Sie sie an. Wählen Sie im Dropdown-Menü "ZIP herunterladen", um das gesamte Repository als ZIP-Datei herunterzuladen. Speichern Sie diese Datei an einem geeigneten Ort auf Ihrem Computer und entpacken Sie den Inhalt.

5.2 Hinzufügen von Report.NET zu Ihrem Projekt

Nach dem Entpacken der ZIP-Datei finden Sie den Quellcode der Report.NET-Bibliothek in den entpackten Dateien. Gehen Sie folgendermaßen vor, um Report.NET in Ihrem Visual Studio-Projekt zu verwenden:

  1. Öffnen Sie Ihr Projekt: Starten Sie Visual Studio und öffnen Sie das Projekt, dem Sie Report.NET hinzufügen möchten.

    1. Manuelles Hinzufügen der Bibliothek: Es gibt mehrere Möglichkeiten, die Bibliothek in Ihr Projekt aufzunehmen:

      • Als kompilierte Assembly: Wenn das GitHub-Repository eine kompilierte DLL-Datei enthält, können Sie einfach einen Verweis auf diese DLL in Ihr Projekt einfügen. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf "Verweise", wählen Sie "Verweis hinzufügen...", suchen Sie die DLL-Datei und wählen Sie sie aus.
    • Durch Einbindung von Quelldateien: Wenn Sie es vorziehen, den Quellcode direkt einzubinden oder wenn keine kompilierte DLL bereitgestellt wird, können Sie die Quellcodedateien zu Ihrem Projekt hinzufügen. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf Ihr Projekt, wählen Sie "Hinzufügen" > "Vorhandenes Element..." und navigieren Sie dann zu den Report.NET-Quellcodedateien, die Sie aus der ZIP-Datei extrahiert haben, und wählen Sie diese aus.
  2. Kompatibilität sicherstellen: Stellen Sie sicher, dass Ihr Projekt eine kompatible Version des .NET-Frameworks verwendet, wie sie von Report.NET gefordert wird.

6. Erweiterte Funktionen in IronPDF vs. Report.NET C#

6.1 Erweiterte Funktionen von IronPDF C#

IronPDF verfügt über eine Reihe fortschrittlicher Funktionen, mit denen sich eine Vielzahl von Aufgaben im Zusammenhang mit PDF-Dateien problemlos bewältigen lässt.

6.1.1 HTML-PDF-Rendering

IronPDF kann HTML-Inhalte, einschließlich CSS und JavaScript, direkt in ein PDF-Dokument übertragen. Das bedeutet, dass Webseiten oder HTML-Vorlagen in PDFs umgewandelt werden können, die genauso aussehen wie in einem Browser.

6.1.1.1 HTML-String zu PDF

IronPDF ermöglicht die direkte Konvertierung von HTML-Zeichenfolgen in PDF. Das bedeutet, dass Entwickler HTML-Code, der als String-Variable gespeichert ist, mit IronPDF in eine PDF-Datei umwandeln können. Diese Funktion ist besonders nützlich, wenn der HTML-Inhalt vor der Konvertierung dynamisch erzeugt oder von der Anwendung geändert wird.

using IronPdf;
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
PDF.SaveAs("HtmlStringToPdf.pdf");
using IronPdf;
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
PDF.SaveAs("HtmlStringToPdf.pdf");
Imports IronPdf
Private Renderer = New IronPdf.HtmlToPdf()
Private PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>")
PDF.SaveAs("HtmlStringToPdf.pdf")
VB   C#

6.1.1.2 HTML-Datei zu PDF

In ähnlicher Weise kann IronPDF vorhandene HTML-Dateien in PDF-Dokumente umwandeln. Dazu wird die HTML-Datei aus dem Dateisystem gelesen und mit IronPDF ein PDF-Dokument mit der gleichen Formatierung und Struktur erstellt.

using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHTMLFileAsPdf("invoice.html");
PDF.SaveAs("HtmlFileToPdf.pdf");
using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHTMLFileAsPdf("invoice.html");
PDF.SaveAs("HtmlFileToPdf.pdf");
Imports IronPdf
Private Renderer = New ChromePdfRenderer()
Private PDF = Renderer.RenderHTMLFileAsPdf("invoice.html")
PDF.SaveAs("HtmlFileToPdf.pdf")
VB   C#

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 6 - HTML-Datei in PDF-Ausgabe mit IronPDF

6.1.1.3 URL zu PDF

IronPDF ist auch in der Lage, eine PDF von einer Live-URL. Damit können Entwickler eine Webadresse eingeben, und IronPDF holt den HTML-Inhalt aus der URL und rendert ihn als PDF.

using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com");
PDF.SaveAs("UrlToPdf.pdf");
using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com");
PDF.SaveAs("UrlToPdf.pdf");
Imports IronPdf
Private Renderer = New ChromePdfRenderer()
Private PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com")
PDF.SaveAs("UrlToPdf.pdf")
VB   C#

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 7 - URL-zu-PDF-Konvertierung mit IronPDF

6.1.2 Bearbeiten von PDFs

Mit IronPDF können Sie bestehende PDF-Dokumente bearbeiten. Dazu gehört das Hinzufügen von Text, Bildern und Seiten oder das Entfernen von Seiten aus dem Dokument. Sie können auch text suchen und ersetzen aus dem PDF-Dokument.

using IronPdf;
var document = PdfDocument.FromFile("original_document.pdf");
const int targetPageIndex = 1;
const string oldString = "Hello, World!";
const string newString = "Greetings, Universe!";
document.ReplaceTextOnPage(targetPageIndex, oldString, newString);
document.SaveAs("modified_document.pdf");
using IronPdf;
var document = PdfDocument.FromFile("original_document.pdf");
const int targetPageIndex = 1;
const string oldString = "Hello, World!";
const string newString = "Greetings, Universe!";
document.ReplaceTextOnPage(targetPageIndex, oldString, newString);
document.SaveAs("modified_document.pdf");
Imports IronPdf
Private document = PdfDocument.FromFile("original_document.pdf")
Private Const targetPageIndex As Integer = 1
Private Const oldString As String = "Hello, World!"
Private Const newString As String = "Greetings, Universe!"
document.ReplaceTextOnPage(targetPageIndex, oldString, newString)
document.SaveAs("modified_document.pdf")
VB   C#

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 8 - Ausgabe: Bearbeitung einer vorhandenen PDF-Datei mit IronPDF

6.1.3 Extrahieren von Text und Bildern

Diese Bibliothek kann text und Bilder extrahieren aus PDF-Dateien, ähnlich wie bei Crystal Reports, die Sie zur Indizierung, Suche oder Wiederverwendung von Inhalten verwenden können.

6.1.4 Erzeugen von PDF-Formularen

IronPDF unterstützt die Erstellung von PDF-Formulare. Entwickler können programmgesteuert Formulare in einer PDF-Datei erstellen, die der Benutzer dann ausfüllen kann.

using IronPdf;
using System;
const string alternativeHtmlContent = @"
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>";
var alternativePdfRenderer = new ChromePdfRenderer();
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = true;
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf");
using IronPdf;
using System;
const string alternativeHtmlContent = @"
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>";
var alternativePdfRenderer = new ChromePdfRenderer();
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = true;
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf");
Imports IronPdf
Imports System
Private Const alternativeHtmlContent As String = "
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>"
Private alternativePdfRenderer = New ChromePdfRenderer()
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = True
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf")
VB   C#

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 9 - PDF-Ausgabe: Generierung von PDF-Formularen mit IronPDF

6.1.5 Zusammenführen von PDF-Dokumenten

Sie können mehrere PDF-Dateien kombinieren in ein einziges Dokument. Diese Funktion ist praktisch, um Berichte zu konsolidieren oder verschiedene Dokumentabschnitte zu kombinieren.

using IronPdf;
var firstHtmlContent = @"<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>";
var secondHtmlContent = @"<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>";
var pdfRenderer = new ChromePdfRenderer();
var pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent);
var pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent);
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
mergedPdf.SaveAs("MergedDocuments.pdf");
using IronPdf;
var firstHtmlContent = @"<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>";
var secondHtmlContent = @"<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>";
var pdfRenderer = new ChromePdfRenderer();
var pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent);
var pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent);
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
mergedPdf.SaveAs("MergedDocuments.pdf");
Imports IronPdf
Private firstHtmlContent = "<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>"
Private secondHtmlContent = "<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>"
Private pdfRenderer = New ChromePdfRenderer()
Private pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent)
Private pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent)
Private mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB)
mergedPdf.SaveAs("MergedDocuments.pdf")
VB   C#

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 10 - Ausgabe-PDF: Generierung mehrerer PDF-Dateien und Zusammenführung zu einer PDF-Datei.

6.1.6 PDF-Dokumente aufteilen

Umgekehrt kann IronPDF eine einzelne PDF-Datei aufteilen in mehrere Dokumente. Dies kann erforderlich sein, wenn Sie einzelne Seiten oder Abschnitte verteilen möchten.

6.1.7 Verschlüsseln und Entschlüsseln von PDFs

IronPDF ermöglicht die verschlüsselung und Entschlüsselung von PDF-Dokumentendadurch wird eine zusätzliche Sicherheitsebene für sensible Informationen geschaffen.

using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("protected.pdf", "password");
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption();
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key");
encryptedPdf.Password = "new-password";
encryptedPdf.SaveAs("secured.pdf");
using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("protected.pdf", "password");
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption();
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key");
encryptedPdf.Password = "new-password";
encryptedPdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System
Private encryptedPdf = PdfDocument.FromFile("protected.pdf", "password")
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption()
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key")
encryptedPdf.Password = "new-password"
encryptedPdf.SaveAs("secured.pdf")
VB   C#

6.1.8 Einstellen von Dokumenteigenschaften und Metadaten

Mit dieser Bibliothek ist das Festlegen von Dokumenteigenschaften wie Titel, Autor und Metadaten ganz einfach. Dies hilft bei der Verwaltung und Organisation von Dokumenten.

using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("sample.pdf");
pdf.MetaData.Author = "Iron Developer";
pdf.MetaData.Keywords = "Confidential, Private";
pdf.MetaData.ModifiedDate = DateTime.Now;
pdf.SaveAs("modified.pdf");
using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("sample.pdf");
pdf.MetaData.Author = "Iron Developer";
pdf.MetaData.Keywords = "Confidential, Private";
pdf.MetaData.ModifiedDate = DateTime.Now;
pdf.SaveAs("modified.pdf");
Imports IronPdf
Imports System
Private encryptedPdf = PdfDocument.FromFile("sample.pdf")
pdf.MetaData.Author = "Iron Developer"
pdf.MetaData.Keywords = "Confidential, Private"
pdf.MetaData.ModifiedDate = DateTime.Now
pdf.SaveAs("modified.pdf")
VB   C#

6.1.9 PDF/A-Konformität

IronPDF kann pDF/A-konform erzeugen dokumente, die für die langfristige Archivierung und Aufbewahrung von Unterlagen erforderlich sind.

6.1.10 XML-Berichte mit IronPDF

Die direkte Konvertierung von XML in PDF wird von IronPDF nicht unterstützt, aber ein praktikabler Ansatz besteht darin, die XML-Daten zunächst in das HTML-Format zu konvertieren. Dies wird durch den Einsatz von XSLT erreicht (Extensible Stylesheet Language-Transformationen)ist eine leistungsstarke XML-Stylesheet-Sprache, mit der XML-Dokumente in andere Formate wie HTML, Text oder sogar in ein neues XML-Dokument umgewandelt werden können. Nehmen wir an, es handelt sich um unsere Datei data.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Library>
    <Book id="1">
        <Title>The Great Gatsby</Title>
        <Author>F. Scott Fitzgerald</Author>
        <Genre>Fiction</Genre>
        <Year>1925</Year>
    </Book>
    <Book id="2">
        <Title>To Kill a Mockingbird</Title>
        <Author>Harper Lee</Author>
        <Genre>Fiction</Genre>
        <Year>1960</Year>
    </Book>
    <Book id="3">
        <Title>1984</Title>
        <Author>George Orwell</Author>
        <Genre>Dystopian</Genre>
        <Year>1949</Year>
    </Book>
</Library>
<?xml version="1.0" encoding="UTF-8"?>
<Library>
    <Book id="1">
        <Title>The Great Gatsby</Title>
        <Author>F. Scott Fitzgerald</Author>
        <Genre>Fiction</Genre>
        <Year>1925</Year>
    </Book>
    <Book id="2">
        <Title>To Kill a Mockingbird</Title>
        <Author>Harper Lee</Author>
        <Genre>Fiction</Genre>
        <Year>1960</Year>
    </Book>
    <Book id="3">
        <Title>1984</Title>
        <Author>George Orwell</Author>
        <Genre>Dystopian</Genre>
        <Year>1949</Year>
    </Book>
</Library>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<?xml version="1.0" encoding="UTF-8"?> <Library> <Book id="1"> <Title> The Great Gatsby</Title> <Author> F.Scott Fitzgerald</Author> <Genre> Fiction</Genre> <Year>1925</Year> </Book> <Book id="2"> <Title> @To Kill a Mockingbird</Title> <Author> Harper Lee</Author> <Genre> Fiction</Genre> <Year>1960</Year> </Book> <Book id="3"> <Title>1984</Title> <Author> George Orwell</Author> <Genre> Dystopian</Genre> <Year>1949</Year> </Book> </Library>
VB   C#

Und das ist unsere style.xslt-Datei:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <html>
            <head>
                <title>Library Catalog</title>
                <style>
                    body { font-family: Arial, sans-serif; margin: 20px; }
                    table { border-collapse: collapse; width: 100%; }
                    th, td { text-align: left; padding: 8px; }
                    tr:nth-child(even) { background-color: #f2f2f2; }
                    th { background-color: #4CAF50; color: white; }
                </style>
            </head>
            <body>
                <h2>Library Catalog</h2>
                <table>
                    <tr>
                        <th>Title</th>
                        <th>Author</th>
                        <th>Genre</th>
                        <th>Year</th>
                    </tr>
                    <xsl:for-each select="Library/Book">
                        <tr>
                            <td><xsl:value-of select="Title"/></td>
                            <td><xsl:value-of select="Author"/></td>
                            <td><xsl:value-of select="Genre"/></td>
                            <td><xsl:value-of select="Year"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <html>
            <head>
                <title>Library Catalog</title>
                <style>
                    body { font-family: Arial, sans-serif; margin: 20px; }
                    table { border-collapse: collapse; width: 100%; }
                    th, td { text-align: left; padding: 8px; }
                    tr:nth-child(even) { background-color: #f2f2f2; }
                    th { background-color: #4CAF50; color: white; }
                </style>
            </head>
            <body>
                <h2>Library Catalog</h2>
                <table>
                    <tr>
                        <th>Title</th>
                        <th>Author</th>
                        <th>Genre</th>
                        <th>Year</th>
                    </tr>
                    <xsl:for-each select="Library/Book">
                        <tr>
                            <td><xsl:value-of select="Title"/></td>
                            <td><xsl:value-of select="Author"/></td>
                            <td><xsl:value-of select="Genre"/></td>
                            <td><xsl:value-of select="Year"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
'INSTANT VB TODO TASK: The following line could not be converted:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> (Of html) (Of head) (Of title) Library Catalog</title> (Of style) body
If True Then
	font-family: Arial, sans-serif
	margin:
	20px
End If
					table
					If True Then
						border-collapse: collapse
						width:
						100 Mod 
					End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'					th, td
'					{
'						text-align: left;
'						padding:
'						8px;
'					}
					tr:
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'					nth-child(even)
'					{
'						background-color: #f2f2f2;
'					}
					th
					If True Then
						background-color: #4CAF50
						color:
						white
					End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'				</style> </head> <body> <h2> Library Catalog</h2> <table> <tr> <th> Title</th> <th> Author</th> <th> Genre</th> <th> Year</th> </tr> <xsl:for-@each @select="Library/Book"> <tr> <td><xsl:value-@of @select="Title"/></td> <td><xsl:value-@of @select="Author"/></td> <td><xsl:value-@of @select="Genre"/></td> <td><xsl:value-@of @select="Year"/></td> </tr> </xsl:for-@each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
VB   C#

Das folgende Codeschnipsel zeigt, wie wir uns dieser Logik nähern können:

using System;
using System.Xml.Xsl;
using System.Xml;
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("style.xslt");
XmlReader reader = XmlReader.Create("data.xml");
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
using (XmlWriter writer = XmlWriter.Create("output.html", settings))
{
    transform.Transform(reader, writer);
}
License.LicenseKey = "Liecense-Key";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("output.html");
pdf.SaveAs("Report.pdf");
using System;
using System.Xml.Xsl;
using System.Xml;
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("style.xslt");
XmlReader reader = XmlReader.Create("data.xml");
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
using (XmlWriter writer = XmlWriter.Create("output.html", settings))
{
    transform.Transform(reader, writer);
}
License.LicenseKey = "Liecense-Key";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("output.html");
pdf.SaveAs("Report.pdf");
Imports System
Imports System.Xml.Xsl
Imports System.Xml
Private transform As New XslCompiledTransform()
transform.Load("style.xslt")
Dim reader As XmlReader = XmlReader.Create("data.xml")
Dim settings As New XmlWriterSettings With {
	.Indent = True,
	.OmitXmlDeclaration = True
}
Using writer As XmlWriter = XmlWriter.Create("output.html", settings)
	transform.Transform(reader, writer)
End Using
License.LicenseKey = "Liecense-Key"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("output.html")
pdf.SaveAs("Report.pdf")
VB   C#
  1. Sie beginnen mit einem XSLT-Stylesheet (style.xslt) die vorgibt, wie die XML-Daten als HTML strukturiert werden sollen. Die Klasse XslCompiledTransform in .NET wird zum Laden Ihrer XSLT-Datei verwendet.

  2. Verwenden Sie XmlReader zum Laden Ihrer XML-Daten (data.xml). der XmlReader** ist für diesen Zweck effizient, da er eine nur vorwärtsgerichtete, schreibgeschützte Sicht auf die XML-Daten bietet.

  3. Das transformierte HTML wird in eine Datei geschrieben (output.html) unter Verwendung von XmlWriter, der so konfiguriert ist, dass er zur besseren Lesbarkeit eingerücktes HTML erzeugt und die XML-Deklaration weglässt, die in der HTML-Ausgabe nicht benötigt wird.

  4. Wenn die HTML-Datei fertig ist, wird der ChromePdfRenderer von IronPDF verwendet, um das HTML-Dokument in ein PDF zu konvertieren. Dieser Renderer ahmt eine hochwertige Rendering-Engine nach und stellt sicher, dass die generierte PDF-Datei den HTML-Inhalt genau wiedergibt.

  5. Schließlich wird das PDF-Dokument im Dateisystem gespeichert (Bericht.pdf). Mit diesem Schritt ist der Konvertierungsprozess abgeschlossen. Das Ergebnis ist ein PDF-Dokument, das von den ursprünglichen XML-Daten abgeleitet ist.

    Auf diese Weise erstellen wir Berichte mit XML und IronPDF. Die PDF-Ausgabedatei, die wir erzeugen:

    Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 11 - Ausgabe einer PDF-Datei aus XML-Berichten mit IronPDF und XSLT

    Wir können interaktive SAP-Berichte auch programmatisch erstellen und sie dann mit IronPDF konvertieren. Weitere Einzelheiten finden Sie in diesem Leitfaden über C# Berichtserstellung.

6.2 Erweiterte Funktionen von Report.NET

Report.NET bietet eine Reihe fortschrittlicher Funktionen, die eine umfassende PDF-Erstellung und -Anpassung ermöglichen. Die in der Abbildung aufgeführten Funktionen spiegeln einige dieser erweiterten Möglichkeiten wider. Lassen Sie uns jede einzelne davon im Detail betrachten.

6.2.1 Hinzufügen von Schriften

Diese Funktion ermöglicht die Verwendung verschiedener Schriftarten und -größen in einem PDF-Dokument. Damit können Entwickler das Erscheinungsbild verschiedener Schriftarten testen und sicherstellen, dass der Text korrekt und gemäß den Designvorgaben angezeigt wird.

using Root.Reports;
using System;
using System.Drawing;
namespace ReportSamples {
  public class Test : Report {
    private readonly FontDef fontDef;
    private readonly FontProp fontProp_Title;
    private readonly FontProp fontProp_Label;
    public Test() {
      fontDef = FontDef.FontDefFromName(this, FontDef.StandardFont.Helvetica);
      fontProp_Title = new FontPropMM(fontDef, 6) { Bold = true };
      fontProp_Label = new FontPropMM(fontDef, 4);
    }
    protected override void Create() {
      FontTest();
    }
    private void FontTest() {
      FontProp fp_Title = new FontPropMM(fontDef, 12) { Bold = true };
      FontProp fp = new FontPropMM(fontDef, 6);
      FontProp fp_Small = new FontPropMM(fontDef, 1.4);
      FontProp fp_XSmall = new FontPropMM(fontDef, 0.8);
      Page page_Cur = new Page(this);
      page_Cur.AddCB_MM(30, new RepString(fontProp_Title, "Font Test"));
      Double rX = 300;
      Double rY = 40;
      for (Int32 i = 32; i < 127; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      for (Int32 i = 161; i < 256; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      PrintCharacter('�', fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
    }
    private void PrintCharacter(Int32 iChar, FontProp fp, FontProp fp_Small, FontProp fp_XSmall, Double rX, Double rY, Page page_Cur) {
      if (rX > 185) {
        rY += fp.rLineFeedMM;
        rX = 22;
      }
      if (rY > 280) {
        new Page(this);
        rY = 40;
      }
      Char ch = (Char)iChar;
      String s = ch.ToString();
      page_Cur.AddMM(rX + 2, rY, new RepString(fp, s));
      rX += 15;
    }
  }
}
using Root.Reports;
using System;
using System.Drawing;
namespace ReportSamples {
  public class Test : Report {
    private readonly FontDef fontDef;
    private readonly FontProp fontProp_Title;
    private readonly FontProp fontProp_Label;
    public Test() {
      fontDef = FontDef.FontDefFromName(this, FontDef.StandardFont.Helvetica);
      fontProp_Title = new FontPropMM(fontDef, 6) { Bold = true };
      fontProp_Label = new FontPropMM(fontDef, 4);
    }
    protected override void Create() {
      FontTest();
    }
    private void FontTest() {
      FontProp fp_Title = new FontPropMM(fontDef, 12) { Bold = true };
      FontProp fp = new FontPropMM(fontDef, 6);
      FontProp fp_Small = new FontPropMM(fontDef, 1.4);
      FontProp fp_XSmall = new FontPropMM(fontDef, 0.8);
      Page page_Cur = new Page(this);
      page_Cur.AddCB_MM(30, new RepString(fontProp_Title, "Font Test"));
      Double rX = 300;
      Double rY = 40;
      for (Int32 i = 32; i < 127; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      for (Int32 i = 161; i < 256; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      PrintCharacter('�', fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
    }
    private void PrintCharacter(Int32 iChar, FontProp fp, FontProp fp_Small, FontProp fp_XSmall, Double rX, Double rY, Page page_Cur) {
      if (rX > 185) {
        rY += fp.rLineFeedMM;
        rX = 22;
      }
      if (rY > 280) {
        new Page(this);
        rY = 40;
      }
      Char ch = (Char)iChar;
      String s = ch.ToString();
      page_Cur.AddMM(rX + 2, rY, new RepString(fp, s));
      rX += 15;
    }
  }
}
Imports Root.Reports
Imports System
Imports System.Drawing
Namespace ReportSamples
  Public Class Test
	  Inherits Report

	Private ReadOnly fontDef As FontDef
	Private ReadOnly fontProp_Title As FontProp
	Private ReadOnly fontProp_Label As FontProp
	Public Sub New()
	  fontDef = FontDef.FontDefFromName(Me, FontDef.StandardFont.Helvetica)
	  fontProp_Title = New FontPropMM(fontDef, 6) With {.Bold = True}
	  fontProp_Label = New FontPropMM(fontDef, 4)
	End Sub
	Protected Overrides Sub Create()
	  FontTest()
	End Sub
	Private Sub FontTest()
	  Dim fp_Title As FontProp = New FontPropMM(fontDef, 12) With {.Bold = True}
	  Dim fp As FontProp = New FontPropMM(fontDef, 6)
	  Dim fp_Small As FontProp = New FontPropMM(fontDef, 1.4)
	  Dim fp_XSmall As FontProp = New FontPropMM(fontDef, 0.8)
	  Dim page_Cur As New Page(Me)
	  page_Cur.AddCB_MM(30, New RepString(fontProp_Title, "Font Test"))
	  Dim rX As Double = 300
	  Dim rY As Double = 40
	  For i As Int32 = 32 To 126
		PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	  Next i
	  For i As Int32 = 161 To 255
		PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	  Next i
	  PrintCharacter(AscW(" "c), fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	End Sub
	Private Sub PrintCharacter(ByVal iChar As Int32, ByVal fp As FontProp, ByVal fp_Small As FontProp, ByVal fp_XSmall As FontProp, ByVal rX As Double, ByVal rY As Double, ByVal page_Cur As Page)
	  If rX > 185 Then
		rY += fp.rLineFeedMM
		rX = 22
	  End If
	  If rY > 280 Then
		Dim tempVar As New Page(Me)
		rY = 40
	  End If
	  Dim ch As Char = ChrW(iChar)
	  Dim s As String = ch.ToString()
	  page_Cur.AddMM(rX + 2, rY, New RepString(fp, s))
	  rX += 15
	End Sub
  End Class
End Namespace
VB   C#

Ein Vergleich zwischen Report.NET und IronPDF: Abbildung 12 - Hinzufügen verschiedener Schriftarten und -größen zu einem PDF-Dokument mit Report.NET

6.2.2 Bildeinbettung

Mit der Funktion Bildmuster können Entwickler Bilder in PDF-Dokumente einbetten. Dazu gehören die Steuerung der Größe und Positionierung der Bilder sowie die mögliche Anwendung von Transformationen oder Effekten auf sie.

using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ImageSample : Report {
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp_Title = new FontPropMM(fd, 15) { Bold = true };
      FontProp fp_SubTitle = new FontPropMM(fd, 4) { Bold = true };
      PenProp pp = new PenProp(this, 0.2, Color.FromArgb(235, 235, 235));
      PenProp pp_Black = new PenProp(this, 0.2, Color.Black);
      BrushProp bp = new BrushProp(this, Color.LightGray);
      new Page(this);
      page_Cur.AddCB_MM(40, new RepString(fp_Title, "Image Sample"));
      System.IO.Stream stream = GetType().Assembly.GetManifestResourceStream("ReportSamples.Image.jpg");
      page_Cur.AddMM(20, 90, new RepImageMM(stream, 40, Double.NaN));
      page_Cur.AddMM(20, 95, new RepString(fp_SubTitle, "W = 40mm, H = auto."));
      page_Cur.AddMM(67, 90, new RepImageMM(stream, 40, 20));
      page_Cur.AddMM(67, 95, new RepString(fp_SubTitle, "W = 40mm, H = 20mm"));
      page_Cur.AddMM(114, 90, new RepImageMM(stream, Double.NaN, 30));
      page_Cur.AddMM(114, 95, new RepString(fp_SubTitle, "W = auto., H = 30mm"));
      page_Cur.AddMM(161, 90, new RepImageMM(stream, 30, 30));
      page_Cur.AddMM(161, 95, new RepString(fp_SubTitle, "W = 30mm, H = 30mm"));
    }
  }
}
using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ImageSample : Report {
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp_Title = new FontPropMM(fd, 15) { Bold = true };
      FontProp fp_SubTitle = new FontPropMM(fd, 4) { Bold = true };
      PenProp pp = new PenProp(this, 0.2, Color.FromArgb(235, 235, 235));
      PenProp pp_Black = new PenProp(this, 0.2, Color.Black);
      BrushProp bp = new BrushProp(this, Color.LightGray);
      new Page(this);
      page_Cur.AddCB_MM(40, new RepString(fp_Title, "Image Sample"));
      System.IO.Stream stream = GetType().Assembly.GetManifestResourceStream("ReportSamples.Image.jpg");
      page_Cur.AddMM(20, 90, new RepImageMM(stream, 40, Double.NaN));
      page_Cur.AddMM(20, 95, new RepString(fp_SubTitle, "W = 40mm, H = auto."));
      page_Cur.AddMM(67, 90, new RepImageMM(stream, 40, 20));
      page_Cur.AddMM(67, 95, new RepString(fp_SubTitle, "W = 40mm, H = 20mm"));
      page_Cur.AddMM(114, 90, new RepImageMM(stream, Double.NaN, 30));
      page_Cur.AddMM(114, 95, new RepString(fp_SubTitle, "W = auto., H = 30mm"));
      page_Cur.AddMM(161, 90, new RepImageMM(stream, 30, 30));
      page_Cur.AddMM(161, 95, new RepString(fp_SubTitle, "W = 30mm, H = 30mm"));
    }
  }
}
Imports Root.Reports
Imports System.Drawing
Namespace ReportSamples
  Public Class ImageSample
	  Inherits Report

	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 15) With {.Bold = True}
	  Dim fp_SubTitle As FontProp = New FontPropMM(fd, 4) With {.Bold = True}
	  Dim pp As New PenProp(Me, 0.2, Color.FromArgb(235, 235, 235))
	  Dim pp_Black As New PenProp(Me, 0.2, Color.Black)
	  Dim bp As New BrushProp(Me, Color.LightGray)
	  Dim tempVar As New Page(Me)
	  page_Cur.AddCB_MM(40, New RepString(fp_Title, "Image Sample"))
	  Dim stream As System.IO.Stream = Me.GetType().Assembly.GetManifestResourceStream("Image.jpg")
	  page_Cur.AddMM(20, 90, New RepImageMM(stream, 40, Double.NaN))
	  page_Cur.AddMM(20, 95, New RepString(fp_SubTitle, "W = 40mm, H = auto."))
	  page_Cur.AddMM(67, 90, New RepImageMM(stream, 40, 20))
	  page_Cur.AddMM(67, 95, New RepString(fp_SubTitle, "W = 40mm, H = 20mm"))
	  page_Cur.AddMM(114, 90, New RepImageMM(stream, Double.NaN, 30))
	  page_Cur.AddMM(114, 95, New RepString(fp_SubTitle, "W = auto., H = 30mm"))
	  page_Cur.AddMM(161, 90, New RepImageMM(stream, 30, 30))
	  page_Cur.AddMM(161, 95, New RepString(fp_SubTitle, "W = 30mm, H = 30mm"))
	End Sub
  End Class
End Namespace
VB   C#

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 13 - PDF-Ausgabe: Einbetten von Bildern in PDF-Dokumente mit Report.NET

6.2.3 Listenlayout-Manager

Der Listenlayout-Manager bietet eine Möglichkeit, einem PDF-Dokument Listen hinzuzufügen. Dies ist nützlich, um geordnete oder ungeordnete Listen zu erstellen, den Listeneinzug und die Aufzählungszeichenstile anzupassen und das Gesamtlayout der Listenelemente im Dokument zu verwalten.

using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ListLayoutManagerSample : Report {
    private Double rMarginLeft = 20;  // millimeters
    private Double rWidth = 175;  // millimeters
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 1.9);
      Double rY = 40;  // vertical position in millimeters
      new Page(this);
      FontProp fp_Title = new FontPropMM(fd, 8);
      page_Cur.AddCB_MM(rY, new RepString(fp_Title, "List Layout Manager Sample"));
      rY += 18;
      ListLayoutManager llm = null;
      using (llm = new ListLayoutManager(this)) {
        PenProp pp_BorderLine = new PenPropMM(this, 0.4, Color.Blue);
        PenProp pp_GridLine = new PenPropMM(this, 0.1, Color.Blue);
        // Configuration for columns
        TlmColumn col_Number = new TlmColumnMM(llm, 10);
        col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine;
        TlmColumn col_Text = new TlmColumnMM(llm, 100);
        col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine;
        TlmColumn col_Author = new TlmColumnMM(llm, rWidth - llm.rWidthMM);
        col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine;
        col_Author.tlmCellDef_Default.brushProp_Back = new BrushProp(this, Color.FromArgb(255, 210, 210));
        llm.container_CreateMM(page_Cur, rMarginLeft, rY);  // immediately creates a container
        // Adding rows and content
        // ...
        // Rows and content omitted for brevity
        // ...
      }
      rY += llm.rCurY_MM + 1.5;
      fp.rSizeMM = 1.5;
      page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, new RepString(fp, "End of list"));
    }
  }
}
using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ListLayoutManagerSample : Report {
    private Double rMarginLeft = 20;  // millimeters
    private Double rWidth = 175;  // millimeters
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 1.9);
      Double rY = 40;  // vertical position in millimeters
      new Page(this);
      FontProp fp_Title = new FontPropMM(fd, 8);
      page_Cur.AddCB_MM(rY, new RepString(fp_Title, "List Layout Manager Sample"));
      rY += 18;
      ListLayoutManager llm = null;
      using (llm = new ListLayoutManager(this)) {
        PenProp pp_BorderLine = new PenPropMM(this, 0.4, Color.Blue);
        PenProp pp_GridLine = new PenPropMM(this, 0.1, Color.Blue);
        // Configuration for columns
        TlmColumn col_Number = new TlmColumnMM(llm, 10);
        col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine;
        TlmColumn col_Text = new TlmColumnMM(llm, 100);
        col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine;
        TlmColumn col_Author = new TlmColumnMM(llm, rWidth - llm.rWidthMM);
        col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine;
        col_Author.tlmCellDef_Default.brushProp_Back = new BrushProp(this, Color.FromArgb(255, 210, 210));
        llm.container_CreateMM(page_Cur, rMarginLeft, rY);  // immediately creates a container
        // Adding rows and content
        // ...
        // Rows and content omitted for brevity
        // ...
      }
      rY += llm.rCurY_MM + 1.5;
      fp.rSizeMM = 1.5;
      page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, new RepString(fp, "End of list"));
    }
  }
}
Imports Root.Reports
Imports System.Drawing
Namespace ReportSamples
  Public Class ListLayoutManagerSample
	  Inherits Report

	Private rMarginLeft As Double = 20 ' millimeters
	Private rWidth As Double = 175 ' millimeters
	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp As FontProp = New FontPropMM(fd, 1.9)
	  Dim rY As Double = 40 ' vertical position in millimeters
	  Dim tempVar As New Page(Me)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 8)
	  page_Cur.AddCB_MM(rY, New RepString(fp_Title, "List Layout Manager Sample"))
	  rY += 18
	  Dim llm As ListLayoutManager = Nothing
	  llm = New ListLayoutManager(Me)
	  Using llm
		Dim pp_BorderLine As PenProp = New PenPropMM(Me, 0.4, Color.Blue)
		Dim pp_GridLine As PenProp = New PenPropMM(Me, 0.1, Color.Blue)
		' Configuration for columns
		Dim col_Number As TlmColumn = New TlmColumnMM(llm, 10)
		col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter
		col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter
		col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine
		Dim col_Text As TlmColumn = New TlmColumnMM(llm, 100)
		col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine
		Dim col_Author As TlmColumn = New TlmColumnMM(llm, rWidth - llm.rWidthMM)
		col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine
		col_Author.tlmCellDef_Default.brushProp_Back = New BrushProp(Me, Color.FromArgb(255, 210, 210))
		llm.container_CreateMM(page_Cur, rMarginLeft, rY) ' immediately creates a container
		' Adding rows and content
		' ...
		' Rows and content omitted for brevity
		' ...
	  End Using
	  rY += llm.rCurY_MM + 1.5
	  fp.rSizeMM = 1.5
	  page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, New RepString(fp, "End of list"))
	End Sub
  End Class
End Namespace
VB   C#

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 14 - PDF-Ausgabe: Hinzufügen von Listen zu PDF-Dokumenten mit Report.NET

6.2.4 PDF-Eigenschaften

Dies bezieht sich auf die Möglichkeit, verschiedene Eigenschaften des PDF-Dokuments selbst festzulegen und zu ändern, z. B. Metadaten (autor, Titel, Thema), Anzeigeeinstellungen und Sicherheitseinstellungen wie Verschlüsselung und Zugriffsberechtigungen.

using Root.Reports;
using System;
namespace ReportSamples {
  public class PdfPropertiesSample : Report {
    public PdfPropertiesSample() {
      PdfFormatter pf = (PdfFormatter)formatter;
      pf.sTitle = "PDF Sample";
      pf.sAuthor = "Otto Mayer, mot@root.ch";
      pf.sSubject = "Sample of some PDF features";
      pf.sKeywords = "Sample PDF RSF";
      pf.sCreator = "RSF Sample Application";
      pf.dt_CreationDate = new DateTime(2002, 8, 15, 0, 0, 0, 0);
      pf.pageLayout = PageLayout.TwoColumnLeft;
      pf.bHideToolBar = true;
      pf.bHideMenubar = false;
      pf.bHideWindowUI = true;
      pf.bFitWindow = true;
      pf.bCenterWindow = true;
      pf.bDisplayDocTitle = true;
    }
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 4);
      FontProp fp_Title = new FontPropMM(fd, 11);
      fp_Title.bBold = true;
      Page page = new Page(this);
      page.AddCB_MM(40, new RepString(fp_Title, "PDF Properties Sample"));
      fp_Title.rSizeMM = 8;
      page.AddCB_MM(100, new RepString(fp_Title, "First Page"));
      page.AddCB_MM(120, new RepString(fp, "Choose <Document Properties, Summary> from the"));
      page.AddCB_MM(126, new RepString(fp, "File menu to display the document properties"));
      page = new Page(this);
      page.AddCB_MM(100, new RepString(fp_Title, "Second Page"));
    }
  }
}
using Root.Reports;
using System;
namespace ReportSamples {
  public class PdfPropertiesSample : Report {
    public PdfPropertiesSample() {
      PdfFormatter pf = (PdfFormatter)formatter;
      pf.sTitle = "PDF Sample";
      pf.sAuthor = "Otto Mayer, mot@root.ch";
      pf.sSubject = "Sample of some PDF features";
      pf.sKeywords = "Sample PDF RSF";
      pf.sCreator = "RSF Sample Application";
      pf.dt_CreationDate = new DateTime(2002, 8, 15, 0, 0, 0, 0);
      pf.pageLayout = PageLayout.TwoColumnLeft;
      pf.bHideToolBar = true;
      pf.bHideMenubar = false;
      pf.bHideWindowUI = true;
      pf.bFitWindow = true;
      pf.bCenterWindow = true;
      pf.bDisplayDocTitle = true;
    }
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 4);
      FontProp fp_Title = new FontPropMM(fd, 11);
      fp_Title.bBold = true;
      Page page = new Page(this);
      page.AddCB_MM(40, new RepString(fp_Title, "PDF Properties Sample"));
      fp_Title.rSizeMM = 8;
      page.AddCB_MM(100, new RepString(fp_Title, "First Page"));
      page.AddCB_MM(120, new RepString(fp, "Choose <Document Properties, Summary> from the"));
      page.AddCB_MM(126, new RepString(fp, "File menu to display the document properties"));
      page = new Page(this);
      page.AddCB_MM(100, new RepString(fp_Title, "Second Page"));
    }
  }
}
Imports Root.Reports
Imports System
Namespace ReportSamples
  Public Class PdfPropertiesSample
	  Inherits Report

	Public Sub New()
	  Dim pf As PdfFormatter = CType(formatter, PdfFormatter)
	  pf.sTitle = "PDF Sample"
	  pf.sAuthor = "Otto Mayer, mot@root.ch"
	  pf.sSubject = "Sample of some PDF features"
	  pf.sKeywords = "Sample PDF RSF"
	  pf.sCreator = "RSF Sample Application"
	  pf.dt_CreationDate = New DateTime(2002, 8, 15, 0, 0, 0, 0)
	  pf.pageLayout = PageLayout.TwoColumnLeft
	  pf.bHideToolBar = True
	  pf.bHideMenubar = False
	  pf.bHideWindowUI = True
	  pf.bFitWindow = True
	  pf.bCenterWindow = True
	  pf.bDisplayDocTitle = True
	End Sub
	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp As FontProp = New FontPropMM(fd, 4)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 11)
	  fp_Title.bBold = True
	  Dim page As New Page(Me)
	  page.AddCB_MM(40, New RepString(fp_Title, "PDF Properties Sample"))
	  fp_Title.rSizeMM = 8
	  page.AddCB_MM(100, New RepString(fp_Title, "First Page"))
	  page.AddCB_MM(120, New RepString(fp, "Choose <Document Properties, Summary> from the"))
	  page.AddCB_MM(126, New RepString(fp, "File menu to display the document properties"))
	  page = New Page(Me)
	  page.AddCB_MM(100, New RepString(fp_Title, "Second Page"))
	End Sub
  End Class
End Namespace
VB   C#

6.2.5 PDF aus Text

Die Funktion PDF aus Text zeigt die Möglichkeiten der Bibliothek beim Hinzufügen und Anpassen von Textinhalten in einer PDF-Datei. Dazu gehören die Einstellung der Textausrichtung, des Zeilenabstands, der Farbe und die Anwendung von Texteffekten wie Fett- oder Kursivdruck.

7. Dokumentation und Unterstützung

7.1 IronPDF

IronPDF ist bekannt für seine umfangreichen und detaillierte Dokumentation. IronPDF bietet einen gut organisierten Dokumentationsbereich mit Einrichtungsanweisungen, Tutorials und API-Referenzen. Die Leitfäden sind so strukturiert, dass sowohl Anfänger als auch erfahrene Entwickler die benötigten Informationen schnell finden können. Für die Unterstützung durch die Gemeinschaft können sich die Entwickler an Foren und Community-Diskussionen wenden. Hier können sie Fragen stellen, Erfahrungen austauschen und Antworten von anderen Nutzern finden.

IronPDF bietet außerdem professionellen Support über ein Ticketing-System, über das Techniker direkt vom IronPDF-Team Hilfe erhalten können. Dieser Dienst kann Teil der kostenpflichtigen Lizenzierung sein, die eine direktere und unmittelbarere Unterstützung bietet.

7.2 Bericht.NET

Report.NETda es sich um eine Open-Source-Bibliothek handelt, hat sie einen anderen Ansatz für Dokumentation und Support. Die Dokumentation ist zwar nicht so umfangreich wie bei kommerziellen Bibliotheken, reicht aber für den Einstieg und die Bewältigung gängiger Aufgaben aus. Die Dokumentation der Bibliothek findet sich im GitHub-Repository oder als Inline-Kommentar im Quellcode. Sie sind eher technisch und erfordern möglicherweise eine gewisse Recherche, um die benötigten Informationen zu finden.

Da es sich bei Report.NET um eine freie und quelloffene Bibliothek handelt, bietet sie keine offizielle professionelle Unterstützung. Die Entwickler sind auf die Hilfe der Community angewiesen oder müssen für tiefer gehende Fragen einen Spezialisten beauftragen.

8. Modelle zur Lizenzierung

Ein Vergleich zwischen Report .NET und IronPDF: Abbildung 15 - IronPDF for .NET Lizenzinformationen

8.1 IronPDF-Lizenzmodell

IronPDF bietet eine Vielzahl von lizenzierungsmodelle für unterschiedliche Entwicklungs- und Bereitstellungsanforderungen, um sicherzustellen, dass es für Projekte und Organisationen jeder Größe geeignet ist. Hier ist ein Überblick:

  1. Lite-Lizenz ($749 USD): Dies ist die einfachste Option, geeignet für einzelne Entwickler, die an einem einzigen Projekt an einem Standort arbeiten. Sie beinhaltet E-Mail-Support, deckt aber nicht die lizenzfreie Weiterverbreitung ab.

  2. Plus-Lizenz ($1.499 USD): Diese Lizenz ist für kleine Teams gedacht und unterstützt bis zu drei Entwickler, die an drei Projekten an drei Standorten arbeiten. Es erweitert den Support um einen 24-Stunden-E-Mail- und Chat-Service sowie einen telefonischen Support.

  3. Berufszulassung ($2.999 USD): Diese Version ist für größere Teams und Projekte konzipiert und bietet Platz für bis zu 10 Entwickler an 10 Standorten, die an 10 Projekten arbeiten. Sie enthält alle Plus-Unterstützungsoptionen und bietet zusätzlich Unterstützung für die Bildschirmfreigabe zur interaktiven Problemlösung.

  4. Kostenlose Testlizenz: Ideal für Testzwecke, diese testlizenz ermöglicht es Ihnen, IronPDF kostenlos auszuprobieren. Es ist jedoch für den privaten Gebrauch bestimmt und die erzeugten PDFs sollten nicht in öffentlichen oder unternehmenseigenen Internet- oder Intranet-Projekten veröffentlicht werden.

    Zusätzlich zu den Basislizenzen gibt es Optionen für eine erweiterte Abdeckung:

    • Lizenzfreie Weitergabe: Wenn Sie IronPDF in ein Softwareprodukt einbinden möchten, das Sie vertreiben oder verkaufen wollen, ist eine lizenzfreie Weitergabe erforderlich. Der Preis liegt bei 1.499 $ für SaaS und OEM-Weiterverteilung.
    • Erweiterter Support und Updates: Mit diesem Add-on erhalten Sie fortlaufend Produkt-Updates und Support. Sie können zwischen Supportpaketen mit einer Laufzeit von 1 Jahr oder 5 Jahren wählen, wobei letzteres eine Ersparnis gegenüber der jährlichen Option bietet.

8.2 Report.NET Lizenzmodell

Report.NET wird kostenlos unter der LGPL-Lizenz vertrieben. Die LGPL (Lesser General Public License) ist eine freie Softwarelizenz, die es den Benutzern erlaubt, die Software auszuführen, zu studieren, weiterzugeben und zu verändern. Die Lizenz gewährleistet, dass die Report.NET-Bibliothek sowohl in Open-Source- als auch in proprietärer Software frei verwendet werden kann, solange die LGPL-lizenzierten Teile des Codes nicht verändert werden. Wenn sie geändert werden, müssen diese Änderungen unter derselben Lizenz weitergegeben werden.

9. Schlussfolgerung

Bei der Betrachtung von IronPDF und Report.NETwir haben verschiedene Elemente untersucht, z. B. ihre Fähigkeiten, den Funktionsumfang, die Benutzerfreundlichkeit, die Supportleistungen und die Lizenzierung.

IronPDF bietet eine Vielzahl von Funktionen, die es Entwicklern nicht nur ermöglichen, PDF-Dateien aus HTML, Bildern und Text zu erstellen und zu bearbeiten, sondern auch erweiterte Funktionen wie Verschlüsselung, digitale Signaturen und maßgeschneiderte Kopf- und Fußzeilen zu implementieren. Durch die Unterstützung verschiedener Lizenzen eignet sich das Programm für Projekte unterschiedlicher Größe, vom Einzelentwickler bis zum Großunternehmen. Dank der umfassenden Dokumentation und der professionellen Supportstruktur eignet sich das Programm für Projekte, bei denen es auf ständige Aktualisierungen und direkte Unterstützung ankommt. IronPDF bietet auch eine kostenloser Test von IronPDF beginnt bei $749.

Report.NET hingegen ist ein einfaches Werkzeug, das PDF-Dokumente erzeugen kann. Die LGPL-Lizenz bedeutet, dass es für Entwickler ohne nennenswerte Einschränkungen sowohl in privaten als auch in kommerziellen Projekten eingesetzt werden kann. Auch wenn es nicht das gleiche Maß an strukturierter Unterstützung wie IronPDF bietet, fördert der Open-Source-Charakter von Report.NET den Input und die Hilfe der Community.

Ihre Entscheidung zwischen IronPDF und Report.NET hängt von den spezifischen Anforderungen Ihres Projekts ab. Wenn Ihr Projekt detaillierte PDF-Erstellung und -Bearbeitung mit professioneller Unterstützung erfordert, könnte IronPDF die erste Wahl sein.

< PREVIOUS
Ein Vergleich zwischen Compdfkit und IronPDF
NÄCHSTES >
C# Reporting Tools (Funktionsvergleich)

Sind Sie bereit, loszulegen? Version: 2024.10 gerade veröffentlicht

Gratis NuGet-Download Downloads insgesamt: 11,308,499 Lizenzen anzeigen >