ActivePDF gegen IronPDF: Leitfaden für einen technischen Vergleich
Wenn .NET-Entwickler zuverlässige PDF-Erzeugungs- und -Bearbeitungsfunktionen benötigen, tauchen zwei Bibliotheken häufig in technischen Bewertungen auf: ActivePDFund IronPDF. Beide bieten volle PDF-Funktionalität für C#-Anwendungen, unterscheiden sich jedoch erheblich in Architektur, API-Design, Unternehmensentwicklung und Modernisierungsansatz.
In diesem Vergleich werden beide Bibliotheken auf technisch relevante Aspekte hin untersucht, damit professionelle Entwickler und Architekten fundierte Entscheidungen für ihre .NET-PDF-Anforderungen treffen können.
ActivePDFkennenlernen
ActivePDF ist ein leistungsstarkes Toolkit zur PDF-Bearbeitung mit einer langen Geschichte im .NET-Ökosystem. Die Bibliothek ermöglicht es Entwicklern, PDF-Dateien aus verschiedenen Quellen zu erzeugen und Dokumente mit Kopf- und Fußzeilen, Rändern und Wasserzeichen anzupassen. ActivePDFverwendet ein zustandsbehaftetes API-Modell, das sich um die Toolkit-Klasse dreht, in der Entwickler Ausgabedateien öffnen, Inhalte hinzufügen und Dateien nach Abschluss explizit schließen.
Die Übernahme von ActivePDFdurch Foxit hat jedoch zu Ungewissheit über den langfristigen Entwicklungspfad des Produkts geführt. Die Übergangszeit nach der Übernahme hat Bedenken hinsichtlich der Lizenzbedingungen, der Kontinuität des Supports und der Möglichkeit, dass das Toolkit zu einem Legacy-Produkt wird, aufgeworfen.
IronPDFverstehen
IronPDF ist eine aktiv entwickelte PDF-Bibliothek von Iron Software, die speziell für moderne .NET-Umgebungen entwickelt wurde. Die Bibliothek ermöglicht es Entwicklern, PDFs aus HTML, URLs und verschiedenen Formaten zu erstellen und unterstützt C#, .NET Core und ASP.NET.IronPDFverwendet ein fließendes, funktionales API-Muster, das die Rendering-Belange (ChromePdfRenderer) von der Dokumentenmanipulation (PdfDocument) trennt.
IronPDF betont die Benutzerfreundlichkeit mit einer NuGet-basierten Installation und einem codebasierten Lizenzierungsmodell. Das Unternehmen bietet eine transparente Produkt-Roadmap und eine ausführliche Dokumentation mit umfangreichen Beispielen.
Vergleich von Architektur und API-Design
Der grundlegende architektonische Unterschied zwischen diesen .NET-PDF-Bibliotheken liegt in ihrer API-Philosophie und ihren Workflow-Mustern.
| Aspekt | ActivePDF | IronPDF |
|---|---|---|
| Firmenstatus | Erworben von Foxit (ungewisse Zukunft) | Unabhängiger, klarer Fahrplan |
| API-Muster | Stateful (OpenOutputFile/CloseOutputFile) |
Fließende, funktionale API |
| Objektmodell | Einzelne Toolkit-Klasse |
Trennen Sie ChromePdfRenderer + PdfDocument |
| Installation | Handbuch DLL-Referenzen | Einfaches NuGet-Paket |
| Lizenzmodell | Maschinengekoppelt | Code-basierter Schlüssel |
| .NET-Unterstützung | Schwerpunkt Legacy .NET Framework | Framework 4.6.2 zu .NET 9 |
| Rückgabewerte | Integer-Fehlercodes | Ausnahmen (Standard .NET) |
ActivePDF verlangt von Entwicklern, dass sie Dateioperationen explizit mit OpenOutputFile()- und CloseOutputFile()-Aufrufen verwalten.IronPDFeliminiert dieses Muster vollständig - Entwickler rendern Inhalte und rufen SaveAs() direkt auf, ohne den Dateistatus zu verwalten.
Code-Vergleich: Gängige PDF-Operationen
URL zu PDF-Konvertierung
Durch die Konvertierung von Webseiten in PDF-Dokumente werden die API-Unterschiede deutlich gemacht.
ActivePDF:
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string url = "https://www.example.com";
if (toolkit.OpenOutputFile("webpage.pdf") == 0)
{
toolkit.AddURL(url);
toolkit.CloseOutputFile();
Console.WriteLine("PDF from URL created successfully");
}
}
}
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string url = "https://www.example.com";
if (toolkit.OpenOutputFile("webpage.pdf") == 0)
{
toolkit.AddURL(url);
toolkit.CloseOutputFile();
Console.WriteLine("PDF from URL created successfully");
}
}
}
Imports ActivePDF.Toolkit
Imports System
Class Program
Shared Sub Main()
Dim toolkit As New Toolkit()
Dim url As String = "https://www.example.com"
If toolkit.OpenOutputFile("webpage.pdf") = 0 Then
toolkit.AddURL(url)
toolkit.CloseOutputFile()
Console.WriteLine("PDF from URL created successfully")
End If
End Sub
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string url = "https://www.example.com";
var pdf = renderer.RenderUrlAsPdf(url);
pdf.SaveAs("webpage.pdf");
Console.WriteLine("PDF from URL created successfully");
}
}
Imports IronPdf
Imports System
Class Program
Shared Sub Main()
Dim renderer = New ChromePdfRenderer()
Dim url As String = "https://www.example.com"
Dim pdf = renderer.RenderUrlAsPdf(url)
pdf.SaveAs("webpage.pdf")
Console.WriteLine("PDF from URL created successfully")
End Sub
End Class
ActivePDF erfordert die Erstellung einer Toolkit-Instanz, den Aufruf von OpenOutputFile(), der einen ganzzahligen Fehlercode zurückgibt, der überprüft werden muss, das Hinzufügen der URL mit AddURL() und den expliziten Aufruf von CloseOutputFile().IronPDFreduziert dies auf drei Zeilen: Instanziierung des Renderers, Aufruf von RenderUrlAsPdf() und Speichern mit SaveAs().
Erweiterte Optionen für die URL-Wiedergabe finden Sie in der URL zu PDF-Dokumentation.
HTML-String in PDF-Konvertierung
Bei der Konvertierung von HTML-Inhalten in PDF werden ähnliche Musterunterschiede deutlich.
ActivePDF:
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML(htmlContent);
toolkit.CloseOutputFile();
Console.WriteLine("PDF created successfully");
}
}
}
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML(htmlContent);
toolkit.CloseOutputFile();
Console.WriteLine("PDF created successfully");
}
}
}
Imports ActivePDF.Toolkit
Imports System
Class Program
Shared Sub Main()
Dim toolkit As New Toolkit()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
If toolkit.OpenOutputFile("output.pdf") = 0 Then
toolkit.AddHTML(htmlContent)
toolkit.CloseOutputFile()
Console.WriteLine("PDF created successfully")
End If
End Sub
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
class Program
{
static void Main()
{
var renderer = new ChromePdfRenderer();
string htmlContent = "<html><body><h1>Hello World</h1></body></html>";
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
pdf.SaveAs("output.pdf");
Console.WriteLine("PDF created successfully");
}
}
Imports IronPdf
Imports System
Module Program
Sub Main()
Dim renderer As New ChromePdfRenderer()
Dim htmlContent As String = "<html><body><h1>Hello World</h1></body></html>"
Dim pdf = renderer.RenderHtmlAsPdf(htmlContent)
pdf.SaveAs("output.pdf")
Console.WriteLine("PDF created successfully")
End Sub
End Module
ActivePDF verwendet AddHTML() innerhalb des Dateimusters "Öffnen/Schließen" mit Prüfung auf ganzzahlige Fehlercodes. IronPDF's RenderHtmlAsPdf() gibt ein PdfDocument Objekt zurück, das gespeichert, manipuliert oder in Bytes umgewandelt werden kann.
Weitere Informationen zu fortgeschrittenen Rendering-Szenarien finden Sie im HTML-zu-PDF-Konvertierungsleitfaden.
PDF Merging Operations
Das Kombinieren mehrerer PDF-Dokumente zeigt verschiedene Ansätze zur Dokumentenmanipulation.
ActivePDF:
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("merged.pdf") == 0)
{
toolkit.AddPDF("document1.pdf");
toolkit.AddPDF("document2.pdf");
toolkit.CloseOutputFile();
Console.WriteLine("PDFs merged successfully");
}
}
}
// NuGet: Install-Package APToolkitNET
using ActivePDF.Toolkit;
using System;
class Program
{
static void Main()
{
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("merged.pdf") == 0)
{
toolkit.AddPDF("document1.pdf");
toolkit.AddPDF("document2.pdf");
toolkit.CloseOutputFile();
Console.WriteLine("PDFs merged successfully");
}
}
}
Imports ActivePDF.Toolkit
Imports System
Class Program
Shared Sub Main()
Dim toolkit As New Toolkit()
If toolkit.OpenOutputFile("merged.pdf") = 0 Then
toolkit.AddPDF("document1.pdf")
toolkit.AddPDF("document2.pdf")
toolkit.CloseOutputFile()
Console.WriteLine("PDFs merged successfully")
End If
End Sub
End Class
IronPDF:
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
// NuGet: Install-Package IronPdf
using IronPdf;
using System;
using System.Collections.Generic;
class Program
{
static void Main()
{
var pdf1 = PdfDocument.FromFile("document1.pdf");
var pdf2 = PdfDocument.FromFile("document2.pdf");
var merged = PdfDocument.Merge(pdf1, pdf2);
merged.SaveAs("merged.pdf");
Console.WriteLine("PDFs merged successfully");
}
}
Imports IronPdf
Imports System
Imports System.Collections.Generic
Module Program
Sub Main()
Dim pdf1 = PdfDocument.FromFile("document1.pdf")
Dim pdf2 = PdfDocument.FromFile("document2.pdf")
Dim merged = PdfDocument.Merge(pdf1, pdf2)
merged.SaveAs("merged.pdf")
Console.WriteLine("PDFs merged successfully")
End Sub
End Module
ActivePDF verwendet das gleiche zustandsbehaftete Muster mit OpenOutputFile(), sequenziellen AddPDF()-Aufrufen und CloseOutputFile().IronPDFlädt Dokumente als PdfDocument-Objekte und führt sie mit der statischen Methode PdfDocument.Merge() zusammen, wobei ein neues Dokument entsteht.
Weitere Zusammenführungsoperationen finden Sie in der PDF-Merge-Dokumentation.
Referenz zur Methodenzuordnung
Für Entwickler, die eine ActivePDF-Migration evaluieren oder die Funktionen vergleichen möchten, zeigt dieses Mapping gleichwertige Operationen in beiden Bibliotheken:
Kerndokument-Vorgänge
| Betrieb | ActivePDF-Methode | IronPDF-Methode |
|---|---|---|
| Toolkit erstellen | new Toolkit() |
new ChromePdfRenderer() |
| HTML zu PDF | toolkit.AddHTML(html) |
renderer.RenderHtmlAsPdf(html) |
| URL zu PDF | toolkit.AddURL(url) |
renderer.RenderUrlAsPdf(url) |
| PDF laden | toolkit.OpenInputFile(Pfad) |
PdfDocument.FromFile(path) |
| PDF speichern | toolkit.SaveAs(Pfad) |
pdf.SaveAs(Pfad) |
| PDFs zusammenführen | toolkit.AddPDF(Datei) |
PdfDocument.Merge(pdfs) |
| Anzahl der Seiten | toolkit.GetPageCount() |
pdf.PageCount |
| Text extrahieren | toolkit.GetText() |
pdf.ExtractAllText() |
| Wasserzeichen hinzufügen | toolkit.AddWatermark(text) |
pdf.ApplyWatermark(html) |
| PDF verschlüsseln | toolkit.Encrypt(Passwort) |
pdf.SecuritySettings.OwnerPassword |
Seitenkonfiguration
| ActivePDF-Einstellung | IronPDF-Äquivalent |
|---|---|
toolkit.SetPageSize(612, 792) |
RenderingOptions.PaperSize = PdfPaperSize.Letter |
toolkit.SetPageSize(595, 842) |
RenderingOptions.PaperSize = PdfPaperSize.A4 |
toolkit.SetOrientation("Querformat") |
RenderingOptions.PaperOrientation = Querformat |
toolkit.SetMargins(t, b, l, r) |
RenderingOptions.MarginTop/Bottom/Left/Right |
Beachten Sie, dass ActivePDFPunkte für Seitenabmessungen (612x792 = Letter) verwendet, währendIronPDFEnums (PdfPaperSize.Letter) oder Millimeter für Ränder verwendet.
Wichtige technische Unterschiede
File Betrieb Patterns
ActivePDF erfordert eine explizite Dateiverwaltung:
// ActivePDF: Open/Close pattern required
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML("<h1>Hello World</h1>");
toolkit.CloseOutputFile(); // Must not forget this
}
// ActivePDF: Open/Close pattern required
Toolkit toolkit = new Toolkit();
if (toolkit.OpenOutputFile("output.pdf") == 0)
{
toolkit.AddHTML("<h1>Hello World</h1>");
toolkit.CloseOutputFile(); // Must not forget this
}
' ActivePDF: Open/Close pattern required
Dim toolkit As New Toolkit()
If toolkit.OpenOutputFile("output.pdf") = 0 Then
toolkit.AddHTML("<h1>Hello World</h1>")
toolkit.CloseOutputFile() ' Must not forget this
End If
IronPDF eliminiert dieses Muster vollständig:
// IronPDF: No open/close needed
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf"); // 'using' handles cleanup
// IronPDF: No open/close needed
var renderer = new ChromePdfRenderer();
using var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf"); // 'using' handles cleanup
Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Using pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf") ' 'Using' handles cleanup
End Using
Fehlerverarbeitungskonventionen
ActivePDF gibt ganzzahlige Fehlercodes zurück, die Entwickler überprüfen müssen:
// ActivePDF: Integer error codes
int result = toolkit.SomeMethod();
if (result != 0) { /* handle error */ }
// ActivePDF: Integer error codes
int result = toolkit.SomeMethod();
if (result != 0) { /* handle error */ }
' ActivePDF: Integer error codes
Dim result As Integer = toolkit.SomeMethod()
If result <> 0 Then
' handle error
End If
IronPDF verwendet die Standardausnahmen von .NET:
// IronPDF: Exception-based (standard .NET)
try
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
// Handle error
}
// IronPDF: Exception-based (standard .NET)
try
{
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");
}
catch (Exception ex)
{
// Handle error
}
Imports IronPdf
Try
Dim pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("output.pdf")
Catch ex As Exception
' Handle error
End Try
Installation und Konfiguration
ActivePDF erfordert häufig manuelle DLL-Referenzen und Pfadkonfigurationen:
// ActivePDF: May require path configuration
var toolkit = new Toolkit(@"C:\Program Files\ActivePDF\...");
// ActivePDF: May require path configuration
var toolkit = new Toolkit(@"C:\Program Files\ActivePDF\...");
' ActivePDF: May require path configuration
Dim toolkit = New Toolkit("C:\Program Files\ActivePDF\...")
IronPDF verwendet die standardmäßige NuGet-Paketverwaltung, die keinerlei Konfiguration erfordert:
dotnet add package IronPdf
dotnet add package IronPdf
Die Lizenzkonfiguration ist codebasiert:
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY";
IronPdf.License.LicenseKey = "YOUR-LICENSE-KEY"
Wenn Teams den Wechsel von ActivePDFzuIronPDFerwägen
Entwicklungsteams erwägen den Umstieg von ActivePDFaufIronPDFaus mehreren Gründen:
Unternehmensunsicherheit: Die Übernahme von ActivePDFdurch Foxit hat Fragen über die langfristige Produktausrichtung, die Kontinuität des Supports und die Frage aufgeworfen, ob das Toolkit zu einem Altprodukt werden könnte. Teams, die Projekte planen, die bis ins Jahr 2026 und darüber hinaus reichen, sollten diese Unsicherheit bei der Auswahl der Abhängigkeiten berücksichtigen.
Modernisierung von API-Mustern: Organisationen, die auf moderne .NET-Konventionen standardisieren, stellen fest, dass das zustandsabhängige Öffnen/Schließen-Muster von ActivePDFund die Integer-Fehlercodes nicht mit den aktuellen Praktiken übereinstimmen. Die flüssige API vonIronPDFund die ausnahmebasierte Fehlerbehandlung entsprechen modernen .NET-Entwicklungsmustern.
Flexibilität der Lizenzierung: Die maschinengebundene Lizenzierung von ActivePDFkann Cloud-Bereitstellungen, containerisierte Umgebungen und CI/CD-Pipelines erschweren. Der codebasierte Lizenzschlüssel vonIronPDFvereinfacht diese Szenarien.
Vereinfachung der Installation: Teams, die eine NuGet-basierte Paketverwaltung gegenüber manuellen DLL-Referenzen bevorzugen, finden den Installationsansatz vonIronPDFin allen Entwicklungsumgebungen einfacher zu pflegen.
Moderne .NET-Unterstützung: Mit der Einführung von .NET 10, C# 14 und neueren Framework-Versionen in Unternehmen wird die Gewährleistung der Kompatibilität von Bibliotheken immer wichtiger.IronPDFunterstützt explizit .NET Framework 4.6.2 bis .NET 9 und ist damit weiterhin kompatibel.
Zusammenfassung des Funktionsvergleichs
| Feature | ActivePDF | IronPDF |
|---|---|---|
| Entwicklungsphase | Potenzielle Legacy-Code-Basis | Aktive Entwicklung mit regelmäßigen Aktualisierungen |
| Kompatibilität von C# und .NET | Legacy-Unterstützung für .NET-Umgebungen | Vollständige Unterstützung moderner .NET-Umgebungen |
| Benutzerfreundliche Installation | Erfordert möglicherweise manuelle Installationsanpassungen | Einfache Installation über NuGet |
| Unterstützung und Dokumentation | Variiert aufgrund der Umstellung | Umfassende Unterstützung und Dokumentation |
| Lizenzierung | Komplikationen aufgrund der Akquisition | Transparente, eindeutige Lizenzierungsbedingungen |
| Async-Unterstützung | Beschränkt | Vollständige asynchrone Unterstützung (RenderHtmlAsPdfAsync) |
Stärken und Überlegungen
Stärken von ActivePDF
- Etablierter Funktionsumfang: ActivePDFbietet alle Funktionen zur PDF-Bearbeitung, die über viele Jahre hinweg entwickelt wurden
- Bestehende Benutzerbasis: Aufgrund der weit verbreiteten Verwendung in Unternehmen gibt es umfangreiche reale Nutzungsmuster
- Kompletter Funktionsumfang: Verarbeitung komplexer PDF-Vorgänge einschließlich Formularen, Anmerkungen und Sicherheit
ActivePDFÜberlegungen
- Ungewisse Zukunft: Die Übernahme von Foxit wirft Fragen zur langfristigen Entwicklungsrichtung auf
- Legacy-Architektur: Stateful-API-Muster und Integer-Fehlercodes spiegeln eine ältere Design-Philosophie wider
- Komplexität der Lizenzierung: Die maschinengebundene Lizenzierung kann moderne Einsatzszenarien erschweren
IronPDFStärken
- Aktive Entwicklung: Häufige Updates und eine transparente Roadmap schaffen Vertrauen für langfristige Projekte
- Modernes API-Design: Fließende Muster, Ausnahmebehandlung und asynchrone Unterstützung entsprechen den aktuellen .NET-Praktiken
- Einfache Integration: Die NuGet-Installation und die codebasierte Lizenzierung vereinfachen die Einrichtung und Bereitstellung
- Umfassende Ressourcen: Umfangreiche Tutorials und Dokumentationen unterstützen den Einstieg in die Entwicklung
Abschluss
ActivePDF undIronPDFbieten beide vollständige PDF-Erzeugungs- und -Manipulationsfunktionen für C#-Entwickler. ActivePDFbietet einen etablierten Funktionsumfang, der von vielen Unternehmen genutzt wird, während die Übernahme durch Foxit Unsicherheit über die zukünftige Entwicklung mit sich bringt.
IronPDF bietet ein modernes API-Design mit aktiver Entwicklung, transparenter Lizenzierung und starker Unterstützung für aktuelle .NET-Versionen. Die fließenden API-Muster, die auf Ausnahmen basierende Fehlerbehandlung und die NuGet-basierte Installation entsprechen den modernen .NET-Entwicklungspraktiken.
Die Wahl zwischen diesen Bibliotheken hängt von den spezifischen Projektanforderungen ab: Bestehende ActivePDF-Investitionen, Toleranz gegenüber Unternehmensunsicherheiten, API-Design-Präferenzen und Überlegungen zur Einsatzumgebung spielen bei der Entscheidung eine Rolle.
Für Teams, die PDF-Bibliotheken für neue Projekte evaluieren oder eine Modernisierung bestehender PDF-Workflows in Erwägung ziehen, ist die Architektur vonIronPDFauf die aktuellen .NET-Entwicklungspraktiken abgestimmt und bietet einen klaren Weg in die Zukunft.
Testen SieIronPDFmit einer kostenlosen Testversion und lesen Sie die umfassende Dokumentation, um die Eignung für Ihre spezifischen Anforderungen zu prüfen.