Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
PDF (Portable Document Format) ist ein weitverbreitetes Dokumentenformat, das aufgrund seiner Fähigkeit, die Formatierung von Dokumenten beizubehalten, sowie wegen seiner Sicherheit und Übertragbarkeit beliebt ist.
PDF-Dateien sind zu einem der weltweit am häufigsten verwendeten Dokumentformate geworden, und es gibt mehrere Bibliotheken zur Erstellung und Bearbeitung von PDFs in C#.
Bearbeitung von PDF-Dateien kann auch eine Herausforderung sein, aber mit Hilfe von Bibliotheken wie iTextSharp DLL und IronPDF, können Sie leicht lesen, schreiben und bearbeiten PDF-Dateien mit C#.
In diesem Artikel werden wir zwei beliebte Bibliotheken für die PDF-Bearbeitung in C# vergleichen: iTextSharp und IronPDF. Wir werden besprechen, wie PDF-Dateien mit beiden Bibliotheken bearbeitet werden können, und dann werden wir untersuchen, inwiefern IronPDF im Vergleich zu iTextSharp eine überlegene Option ist, insbesondere in Bezug auf Druckausgabe, Leistung und Preis.
iTextSharp und IronPDF sind zwei beliebte Bibliotheken für die Arbeit mit PDF-Dateien in C#. Beide Bibliotheken bieten eine breite Palette von Funktionen zum Erstellen, Bearbeiten und Manipulieren von PDF-Dokumenten.
iTextSharp DLL ist eine C#-Portierung der Java-basierten iText-Bibliothek. Es bietet eine einfache und leicht zu bedienende API für die Erstellung und Bearbeitung von PDF-Dokumenten. iTextSharp ist eine Open-Source-Bibliothek, die unter der AGPL-Lizenz verfügbar ist.
IronPDF ist eine .NET-Bibliothek, die zum Erstellen, Bearbeiten und Manipulieren von PDF-Dateien mit C# konzipiert ist. Es bietet eine moderne und intuitive API für die Arbeit mit PDF-Dokumenten. IronPDF ist eine kommerzielle Bibliothek, die mit einem kostenlose Testversion und eine kostenpflichtige Version.
Sowohl die iTextSharp- als auch die IronPDF-Bibliotheken bieten eine breite Palette von Funktionen zum Erstellen, Bearbeiten und Manipulieren von PDF-Dokumenten. IronPDF hat jedoch mehrere Vorteile gegenüber iTextSharp, die es zu einer bevorzugten Wahl für die Arbeit mit PDF-Dokumenten in C# machen.
Nachdem wir nun die Unterschiede zwischen iTextSharp und IronPDF erörtert haben, wollen wir einen Blick darauf werfen, wie man PDF-Dateien mit beiden Bibliotheken bearbeiten kann. Wir werden Beispiele für das Hinzufügen von Text, Formularfeldern und das Ausfüllen von Formularen in einem bestehenden PDF-Dokument mit iTextSharp und IronPDF durchgehen.
Bevor wir beginnen, benötigen Sie Folgendes:
Visual Studio ist auf Ihrem Rechner installiert.
Grundkenntnisse in der Programmiersprache C#.
iTextSharp-Bibliothek in Ihrem Projekt installiert.
Um die iTextSharp-Bibliothek in Ihrem Projekt zu installieren, können Sie den NuGet-Paketmanager verwenden. Öffnen Sie Ihr Visual Studio-Projekt und klicken Sie mit der rechten Maustaste auf den Projektnamen im Projektmappen-Explorer. Wählen Sie "NuGet-Pakete verwalten" aus dem Kontextmenü. Suchen Sie im NuGet Package Manager nach "iTextSharp" und installieren Sie die neueste Version des Pakets.
Um eine neue PDF-Datei mit iTextSharp zu erstellen, müssen wir eine neue Instanz der "Document"-Klasse erzeugen und ein neues "FileStream"-Objekt an seinen Konstruktor übergeben. Hier ist ein Beispiel:
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
Im obigen Code haben wir eine neue PDF-Datei mit dem Namen "newfile.pdf" erstellt und ihr einen neuen Absatz hinzugefügt.
Um eine bestehende PDF-Datei mit iTextSharp zu bearbeiten, müssen wir ein "PdfReader"-Objekt erstellen, um das bestehende PDF-Dokument zu lesen, und ein "PdfStamper"-Objekt, um es zu ändern. Hier ist ein Beispiel:
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
/**
iText URL to PDF
anchor-itext-url-to-pdf
**/
private void ExistingWebURL()
{
//Initialize PDF writer
PdfWriter writer = new PdfWriter("wikipedia.pdf");
//Initialize PDF document
using PdfDocument pdf = new PdfDocument(writer);
ConverterProperties properties = new ConverterProperties();
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format");
Document document = HtmlConverter.ConvertToDocument(new FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties);
Paragraph header = new Paragraph("HEADER")
.SetTextAlignment(TextAlignment.CENTER)
.SetFontSize(16);
document.Add(header);
for (int i = 1; i <= pdf.GetNumberOfPages(); i++)
{
Rectangle pageSize = pdf.GetPage(i).GetPageSize();
float x = pageSize.GetWidth() / 2;
float y = pageSize.GetTop() - 20;
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0);
}
document.SetTopMargin(50);
document.SetBottomMargin(50);
document.Close();
}
'''
'''iText URL to PDF
'''anchor-itext-url-to-pdf
'''*
Private Sub ExistingWebURL()
'Initialize PDF writer
Dim writer As New PdfWriter("wikipedia.pdf")
'Initialize PDF document
Using pdf As New PdfDocument(writer)
Dim properties As New ConverterProperties()
properties.SetBaseUri("https://en.wikipedia.org/wiki/Portable_Document_Format")
Dim document As Document = HtmlConverter.ConvertToDocument(New FileStream("Test_iText7_1.pdf", FileMode.Open), pdf, properties)
Dim header As Paragraph = (New Paragraph("HEADER")).SetTextAlignment(TextAlignment.CENTER).SetFontSize(16)
document.Add(header)
Dim i As Integer = 1
Do While i <= pdf.GetNumberOfPages()
Dim pageSize As Rectangle = pdf.GetPage(i).GetPageSize()
'INSTANT VB WARNING: Instant VB cannot determine whether both operands of this division are integer types - if they are then you should use the VB integer division operator:
Dim x As Single = pageSize.GetWidth() / 2
Dim y As Single = pageSize.GetTop() - 20
document.ShowTextAligned(header, x, y, i, TextAlignment.LEFT, VerticalAlignment.BOTTOM, 0)
i += 1
Loop
document.SetTopMargin(50)
document.SetBottomMargin(50)
document.Close()
End Using
End Sub
Im obigen Code haben wir eine bestehende PDF-Datei namens "existingfile.pdf" geöffnet und eine neue PDF-Datei namens "editedfile.pdf" erstellt. Wir haben die Formularfelder mit Daten gefüllt und eine neue Seite in die PDF-Datei eingefügt.
Die Klasse "PdfStamper" bietet viele weitere Optionen zur Bearbeitung vorhandener PDF-Dateien, wie das Hinzufügen von Bildern, das Erstellen von Anmerkungen und das Ändern der Seitengröße.
IronPDF ist eine leistungsstarke PDF-Bibliothek für C#, die die Bearbeitung von PDF-Dokumenten ermöglicht. In diesem Tutorial gehen wir die Schritte durch, die erforderlich sind, um eine bestehende PDF-Datei mit IronPDF zu bearbeiten. Wir werden verschiedene Aspekte behandeln, darunter das Erstellen neuer PDF-Dokumente, das Hinzufügen von Seiten zu einer bestehenden PDF-Datei, das Hinzufügen von Inhalten zu einer PDF-Datei und das Ausfüllen von Formularfeldern in einer PDF-Datei. Nachfolgend finden Sie einen Beispielcode in C# zur Veranschaulichung der verschiedenen Schritte.
Bevor wir beginnen, vergewissern Sie sich, dass Sie die folgenden Komponenten installiert haben:
Erstellen Sie ein neues C#-Projekt in Visual Studio. Wählen Sie den Projekttyp "Konsolenanwendung".
Installieren Sie die IronPDF-Bibliothek, indem Sie sie über den NuGet-Paketmanager in Ihr Projekt einbinden.
Install-Package IronPdf
Um ein bestehendes PDF-Dokument zu laden, können Sie die Klasse PdfDocument
verwenden. Nachfolgend finden Sie ein Codebeispiel zum Laden eines vorhandenen PDF-Dokuments:
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
using IronPdf;
var existingPdf = @"C:\path\to\existing\pdf\document.pdf";
var pdfDoc = PdfDocument.FromFile(existingPdf);
Imports IronPdf
Private existingPdf = "C:\path\to\existing\pdf\document.pdf"
Private pdfDoc = PdfDocument.FromFile(existingPdf)
Um einem bestehenden Dokument eine neue Seite hinzuzufügen, können Sie die Methode AddPage
der Klasse PdfDocument
verwenden. Nachfolgend finden Sie ein Beispiel für das Hinzufügen einer neuen Seite zu bestehenden PDF-Dateien:
var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
var newPage = pdfDoc.AddPage();
newPage.Size = PageSize.Letter;
Dim newPage = pdfDoc.AddPage()
newPage.Size = PageSize.Letter
Mit Hilfe von IronPDF kann der folgende Code eine PDF-Datei direkt aus einer Webseitenadresse erzeugen. Außerdem werden benutzerdefinierte Kopf- und Fußzeilen bereitgestellt.
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
' Create a PDF from any existing web page
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50 'millimetres
Renderer.RenderingOptions.MarginBottom = 50
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
}
Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.EnableJavaScript = True
Renderer.RenderingOptions.RenderDelay = 500 'milliseconds
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
PDF.SaveAs("wikipedia.pdf")
End Sub
iTextSharp ist eine beliebte Open-Source-Bibliothek, die es Entwicklern ermöglicht, PDF-Dokumente in C# zu erstellen, zu bearbeiten und Daten daraus zu extrahieren. Es handelt sich um eine gut dokumentierte und weit verbreitete Bibliothek, die es schon seit langem gibt. IronPDF ist jedoch eine neuere und modernere Bibliothek, die zusätzliche Funktionen und Vorteile bietet, was sie für Entwickler zu einer besseren Wahl macht.
Einer der Bereiche, in denen IronPDF iTextSharp übertrifft, sind seine Ausgabefunktionen. IronPDF bietet hervorragende Unterstützung für die Konvertierung von HTML in PDF, so dass Entwickler mühelos HTML-Seiten in PDF-Dokumente umwandeln können. Dies ist besonders vorteilhaft für die Erstellung von Berichten oder Dokumenten, die Rich Media oder interaktive Inhalte enthalten. Darüber hinaus ermöglicht IronPDF eine feinere Kontrolle über das Seitenlayout und die Formatierung, wodurch es einfacher wird, PDF-Dokumente zu erstellen, die genau dem gewünschten Erscheinungsbild entsprechen.
Der folgende Code verwendet IronPDF, um eine PDF-Datei mit HTML-Eingabe zu erstellen.
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
/**
IronPDF HTML to PDF
anchor-ironpdf-document-from-html
**/
private void HTMLString()
{
// Render any HTML fragment or document to HTML
var Renderer = new IronPdf.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");
Renderer.RenderingOptions.TextFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"
};
var OutputPath = "ChromePdfRenderer.pdf";
PDF.SaveAs(OutputPath);
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen;
}
'''
'''IronPDF HTML to PDF
'''anchor-ironpdf-document-from-html
'''*
Private Sub HTMLString()
' Render any HTML fragment or document to HTML
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")
Renderer.RenderingOptions.TextFooter = New HtmlHeaderFooter() With {.HtmlFragment = "<div style='text-align:right'><em style='color:pink'>page {page} of {total-pages}</em></div>"}
Dim OutputPath = "ChromePdfRenderer.pdf"
PDF.SaveAs(OutputPath)
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Screen
End Sub
Der folgende Code erzeugt eine PDF-Datei aus HTML-Text mit iText7.
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
/**
iText HTML to PDF
anchor-itext-html-to-pdf
**/
private void HTMLString()
{
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", new FileStream("ChromePdfRenderer.pdf", FileMode.Create));
}
'''
'''iText HTML to PDF
'''anchor-itext-html-to-pdf
'''*
Private Sub HTMLString()
HtmlConverter.ConvertToPdf("< h1 > Hello iText7 </ h1 >", New FileStream("ChromePdfRenderer.pdf", FileMode.Create))
End Sub
Auch in Bezug auf die Leistung ist IronPDF ein klarer Sieger. Es ist schneller und effizienter als iTextSharp und ermöglicht es Entwicklern, PDFs schneller und mit weniger Systemressourcen zu erzeugen. Dies ist besonders wichtig, wenn es um große oder komplexe PDF-Dokumente geht, bei denen die Leistung ein wichtiger Faktor werden kann.
Ein weiterer Bereich, in dem IronPDF einen Vorteil gegenüber iTextSharp hat, ist die Preisgestaltung. Während iTextSharp für die meisten Zwecke kostenlos verwendet werden kann, ist für bestimmte Anwendungsfälle eine kommerzielle Lizenz erforderlich, und die kommerziellen Lizenzen können recht teuer sein. Auf der anderen Seite bietet IronPDF ein erschwinglicheres Preismodell mit einer Reihe von Optionen, die für unterschiedliche Bedürfnisse und Budgets geeignet sind.
Einer der Hauptunterschiede zwischen iTextSharp und IronPDF ist die Lizenzierung und Preisgestaltung.
iTextSharp ist unter der AGPL-Lizenz lizenziert, die die freie Nutzung für Open-Source-Projekte erlaubt, aber eine kommerzielle Lizenz für die kommerzielle Nutzung erfordert. Die kommerzielle Lizenz für iTextSharp ist in verschiedenen Stufen erhältlich. Die Preise richten sich nach den benötigten Funktionen und dem Support-Level sowie nach der Anzahl der Entwickler und Deployment-Server.
IronPDF hingegen ist eine kommerzielle Bibliothek, die Entwicklern eine kostenlose Testversion anbietet, die sie vor dem Kauf ausprobieren können. IronPDF bietet flexible Lizenzierungsoptionen, einschließlich Lizenzen pro Entwickler und pro Server, sowie Unternehmenslizenzen für größere Organisationen. Die Preise für IronPDF richten sich nach der Anzahl der Entwickler und der benötigten Funktionen, wobei Rabatte für Mehrjahres- und Volumenlizenzen erhältlich sind.
Während iTextSharp für kleine Open-Source-Projekte kosteneffizienter sein mag, ist IronPDF aufgrund seiner flexiblen Lizenzierungsoptionen und seines kommerziellen Supports die bessere Wahl für kommerzielle Projekte und größere Organisationen.
Zusammenfassend lässt sich sagen, dass sowohl iTextSharp als auch IronPDF fähige Bibliotheken für die PDF-Bearbeitung in C# sind, IronPDF sich jedoch als die vielseitigere und effizientere Wahl erweist. Mit seinen fortschrittlichen Funktionen, der intuitiven API und der benutzerfreundlichen Dokumentation bietet IronPDF eine überlegene Erfahrung für Entwickler. Aufgrund der flexiblen Lizenzierungsoptionen und der kostengünstigen Preise eignet sich die Software besser für kommerzielle Projekte und größere Organisationen.
Darüber hinaus bietet IronPDF eine bessere technische Leistung mit schnelleren Rendering-Zeiten, effizienter Speichernutzung und optimiertem Umgang mit großen PDF-Dokumenten. Mit Iron Softwares sonderangebot durch den Kauf aller fünf Produkte zum Preis von zwei Lizenzen erhalten Entwickler Zugang zu einer umfassenden Suite leistungsstarker Tools und Bibliotheken, mit denen sie ihren Anwendungsentwicklungsprozess rationalisieren können. Wenn Sie eine leistungsfähige und effiziente PDF-Bibliothek für Ihre C#-Projekte benötigen, ist IronPDF eine gute Wahl.
9 .NET API-Produkte für Ihre Bürodokumente