PRODUKT-VERGLEICHE

Ein Vergleich zwischen IronPDF und iText7

Einführung

Ein vernünftiges und einfaches Werkzeug zur Bearbeitung von PDFs kann viele Aufgaben und Prozesse bei der Erstellung und Bearbeitung von PDF-Dokumenten rationalisieren. Im .NET-Ökosystem gibt es zwei beliebte Bibliotheken – IronPDF und iText –, die die PDF-Erstellung ohne Abhängigkeiten von Adobe ermöglichen. Beide verfügen über eine Vielzahl von Funktionen wie Erstellen, Bearbeiten, Konvertieren usw., aber dieser Artikel konzentriert sich auf den Vergleich dieser Bibliotheken auf der Grundlage von drei Kriterien: die Fähigkeit der Funktionen, die sie zu bieten haben, die Qualität der von ihnen zur Verfügung gestellten Dokumentation, die Preispolitik, die von diesen Unternehmen für die Nutzung ihrer Produkte.

Überblick über IronPDF und iText

IronPDF ist eine bekannte .NET PDF-Bibliothek, die es Programmierern ermöglicht, PDF-Dokumente auf einfache Weise zu erstellen, zu ändern und mit ihnen zu interagieren. Es kann in verschiedenen .NET-Umgebungen verwendet werden, einschließlich Core, 8, 7, 6 und Framework, was es für verschiedene Entwicklungsanforderungen sehr flexibel macht. Die Hauptfunktion von IronPDF ist sein reichhaltiger Funktionsumfang, wie die Umwandlung von HTML in PDF, die Fähigkeit zum Zusammenfügen von PDFs, PDF-Verschlüsselung und die Anwendung digitaler Signaturen, unter anderem. Die Dokumentation ist so geschrieben, dass die Benutzer sie ohne Schwierigkeiten verstehen können, während die Bibliothek selbst über eine starke technische Unterstützung verfügt.

iText ist eine der bekanntesten PDF-Bibliotheken, die sowohl für Java als auch für .NET (C#) verfügbar sind. iText Core 8 bietet eine programmierbare Lösung auf Unternehmensebene für die Erstellung und Bearbeitung von PDF-Dateien. iText bietet Unterstützung für viele verschiedene Funktionen und wird sowohl unter Open-Source-Lizenzen (AGPL) als auch unter kommerziellen Lizenzen veröffentlicht. Dank seiner Vielseitigkeit kann es eine breite Palette von Anwendungsfällen bei Projekten zur digitalen Transformation abdecken.

Plattformübergreifende Kompatibilität

IronPDF und iText sind mit verschiedenen Plattformen kompatibel; können sie PDFs über viele verschiedene Systeme hinweg und auch innerhalb des .NET-Frameworks verarbeiten. Aus diesem Grund werden wir im Folgenden die unterstützten Frameworks und Plattformen für jedes Produkt vergleichen.

IronPDF:

IronPDF Überblick über unterstützte Plattformen unterstützt eine Vielzahl von Plattformen und Umgebungen und gewährleistet eine nahtlose Integration und Bereitstellung in verschiedenen Systemen:

  • .NET-Versionen:

    • (C#, VB.NET, F#)

    • .NET Core (8, 7, 6, 5 und 3.1+)

    • .NET Standard (2.0+)
  • .NET Framework (4.6.2+)
  • Anwendungsumgebungen: IronPDF funktioniert in Anwendungsumgebungen wie Windows, Linux, Mac, Docker, Azure und AWS.
  • IDEs: Funktioniert mit IDEs wie Microsoft Visual Studio und JetBrains Rider & ReSharper
  • Betriebssysteme und Prozessoren: Unterstützt mehrere verschiedene Betriebssysteme und Prozessoren, einschließlich Windows, Mac, Linux, x64, x86, ARM

iText

  • .NET-Versionen:

    • .NET Core (2.x, 3.x)

    • .NET Framework (4.6.1+)
  • .NET 5+
  • App-Umgebungen: iText unterstützt eine Vielzahl von App-Umgebungen, dank der Unterstützung für sowohl Java als auch .NET (C#), einschließlich; Windows, Mac, Linux und Docker.
  • OS: Läuft auf Windows-, macOS- und Linux-Betriebssystemen

Vergleich der wichtigsten Funktionen: IronPDF vs. iText

IronPDF-Schlüsselfeature-Liste und iText bieten beide eine Reihe von Funktionen und Tools, die zur Arbeit mit PDF-Dateien verwendet werden können; im nächsten Abschnitt werden wir uns einige dieser Funktionen genauer ansehen und untersuchen, wie die beiden Bibliotheken bei der Ausführung verschiedener PDF-bezogener Aufgaben im Vergleich abschneiden.

IronPDF

  • HTML-zu-PDF-Konvertierung: Unterstützt HTML, CSS, JavaScript und Bilder.
  • PDF-Dateibearbeitung: Dokumente aufteilen und dann zusammenführen, das Format ändern und bestehende PDF-Dokumente bearbeiten
  • Sicherheit: PDF-Verschlüsselung und -Entschlüsselung.
  • Bearbeiten: Fügen Sie Anmerkungen, Lesezeichen und Gliederungen hinzu.
  • Vorlagen: Kopfzeilen, Fußzeilen und Seitenzahlen anwenden.
  • Wasserzeichen: Einfach Text- und Bildwasserzeichen zu PDF-Dateien hinzufügen; nutzen Sie die Vorteile der Verwendung von HTML/CSS, um die volle Kontrolle über den Prozess zu erhalten.
  • PDF-Stempelung: Stempeln Sie Bilder und Texte auf Ihre PDF-Dokumente mit IronPDF.

    Für weitere Informationen über die umfangreichen Funktionen, die IronPDF bietet, besuchen Sie die IronPDF-Feature-Seite.

iText

  • PDF-Erstellung: Unterstützt die Erstellung von PDF-Dokumenten von Grund auf.
  • Formulare: Erstellen und bearbeiten Sie PDF-Formulare.
  • Digitale Signaturen: PDF-Dokumente signieren.
  • Komprimierung: Optimieren Sie die PDF-Dateigrößen.
  • Inhaltsextraktion: Extrahieren Sie Text und Bilder aus PDFs.
  • Open Source: Verfügbar unter der AGPL-Lizenz.
  • Anpassbarkeit: Hoher Grad an Anpassung für fortgeschrittene Anwendungsfälle.

Vergleich der PDF-Funktionsmerkmale zwischen IronPDF und iText

Konvertierung von HTML in PDF

Die Umwandlung von HTML-Inhalten in PDF mit IronPDF ist eine sehr einfache Aufgabe, die in vielen verschiedenen Büros und Arbeitsbereichen durchgeführt wird. Nachfolgend finden Sie Code-Beispiele, in denen IronPDF und iText diesen Prozess vergleichen.

IronPDF

using IronPdf;

// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");

// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;

// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;

// Instantiate Renderer
var renderer = new ChromePdfRenderer();

// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");

// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf

' Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = True

' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()

' Create a PDF from an HTML string using C#
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")

' Advanced Example with HTML Assets
' Load external html assets: images, CSS and JavaScript.
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
$vbLabelText   $csharpLabel

iText

using iText.Html2pdf;

static void Main(string[] args)
  {
    using (FileStream htmlSource = File.Open("input.html", FileMode.Open))
    using (FileStream pdfDest = File.Open("output.pdf", FileMode.Create))
    {
        ConverterProperties converterProperties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties);
    }
  }
using iText.Html2pdf;

static void Main(string[] args)
  {
    using (FileStream htmlSource = File.Open("input.html", FileMode.Open))
    using (FileStream pdfDest = File.Open("output.pdf", FileMode.Create))
    {
        ConverterProperties converterProperties = new ConverterProperties();
        HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties);
    }
  }
Imports iText.Html2pdf

Shared Sub Main(ByVal args() As String)
	Using htmlSource As FileStream = File.Open("input.html", FileMode.Open)
	Using pdfDest As FileStream = File.Open("output.pdf", FileMode.Create)
		Dim converterProperties As New ConverterProperties()
		HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties)
	End Using
	End Using
End Sub
$vbLabelText   $csharpLabel

Beim Konvertieren von HTML zu PDF bietet IronPDF ein präzises und praktisches Werkzeug für die Durchführung dieser Aufgabe. IronPDF nutzt den ChromePdfRenderer, um HTML-Inhalte in PDFs zu konvertieren, und zeichnet sich dadurch aus, dass es Benutzern pixelgenaue PDF-Dokumente liefert. Benutzer können PDFs direkt aus HTML-Zeichenfolgen erstellen, wie im ersten Beispiel gezeigt, oder externe Elemente wie Bilder mit einem optionalen Basispfad einbinden, wie im fortgeschrittenen Beispiel gezeigt. iText verwendet einen grundlegenden Ansatz, indem es seine HtmlConverter-Klasse nutzt, um PDF-Dokumente aus einer HTML-Datei zu erstellen.

PDF-Dateien verschlüsseln

Verschlüsselung von PDF-Dateien mit IronPDF und die Entschlüsselung von PDF-Dokumenten sind in vielen Arbeitsplätzen von entscheidender Bedeutung. Um diese Aufgabe leicht zu bewältigen, braucht man ein Werkzeug, das diese Aufgabe bequem erledigen kann. Im folgenden Code sehen wir, wie iText und IronPDF die Verschlüsselung von PDFs angehen.

IronPDF

using IronPdf;
using System;

// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;
using System;

// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;

// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System

' Open an Encrypted File, alternatively create a new PDF from Html
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

' Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now

' Edit file security settings
' The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights

' change or set the document encryption password
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
$vbLabelText   $csharpLabel

iText

using System;
using System.IO;
using System.Text;
using iText.Kernel.Pdf;

public class EncryptPdf
    {
        public static readonly String DEST = "results/sandbox/security/encrypt_pdf.pdf";
        public static readonly String SRC = "../../../resources/pdfs/hello.pdf";

        public static readonly String OWNER_PASSWORD = "World";
        public static readonly String USER_PASSWORD = "Hello";

        public static void Main(String[] args)
        {
            FileInfo file = new FileInfo(DEST);
            file.Directory.Create();

            new EncryptPdf().ManipulatePdf(DEST);
        }

        protected void ManipulatePdf(String dest)
        {
            PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest,
                new WriterProperties().SetStandardEncryption(
                    Encoding.UTF8.GetBytes(USER_PASSWORD),
                    Encoding.UTF8.GetBytes(OWNER_PASSWORD),
                    EncryptionConstants.ALLOW_PRINTING,
                    EncryptionConstants.ENCRYPTION_AES_128 
 EncryptionConstants.DO_NOT_ENCRYPT_METADATA
                )));
            document.Close();
        }
    }
using System;
using System.IO;
using System.Text;
using iText.Kernel.Pdf;

public class EncryptPdf
    {
        public static readonly String DEST = "results/sandbox/security/encrypt_pdf.pdf";
        public static readonly String SRC = "../../../resources/pdfs/hello.pdf";

        public static readonly String OWNER_PASSWORD = "World";
        public static readonly String USER_PASSWORD = "Hello";

        public static void Main(String[] args)
        {
            FileInfo file = new FileInfo(DEST);
            file.Directory.Create();

            new EncryptPdf().ManipulatePdf(DEST);
        }

        protected void ManipulatePdf(String dest)
        {
            PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest,
                new WriterProperties().SetStandardEncryption(
                    Encoding.UTF8.GetBytes(USER_PASSWORD),
                    Encoding.UTF8.GetBytes(OWNER_PASSWORD),
                    EncryptionConstants.ALLOW_PRINTING,
                    EncryptionConstants.ENCRYPTION_AES_128 
 EncryptionConstants.DO_NOT_ENCRYPT_METADATA
                )));
            document.Close();
        }
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

IronPDF bietet Benutzern eine einfache Möglichkeit, PDF-Dateien zu verschlüsseln, und gibt ihnen gleichzeitig viel Kontrolle über den Prozess, einschließlich der Bearbeitung von Metadaten und der Anpassung von Sicherheitseinstellungen wie das Festlegen von Dokumenten auf „nur lesen“ oder das Einschränken von Benutzeraktionen wie Kopieren und Einfügen. Andererseits verwendet iText eine untergeordnete und längere Methode, bei der die PDF-Verschlüsselung während der Dokumentenerstellung angewendet wird, indem Besitzer- und Benutzerkennwörter sowie Berechtigungen wie Druckrechte mithilfe von Verschlüsselungsstandards wie AES-128 angegeben werden.

PDF-Inhalt redigieren

Gelegentlich kann es beim Umgang mit vertraulichen oder privaten Informationen notwendig sein, Text in PDF mit IronPDF zu redigieren, um Teile einer PDF-Datei zu bearbeiten. Die folgenden Codebeispiele zeigen, wie Sie Text mit IronPDF im Vergleich zu iText redigieren können.

IronPDF

using IronPdf;

PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");

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

PdfDocument pdf = PdfDocument.FromFile("novel.pdf");

// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");

pdf.SaveAs("redacted.pdf");
Imports IronPdf

Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")

' Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are")

pdf.SaveAs("redacted.pdf")
$vbLabelText   $csharpLabel

iText

using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Kernel.Colors;

string src = "input.pdf";
string dest = "output_redacted.pdf";

using (PdfReader reader = new PdfReader(src))
            {
                using (PdfWriter writer = new PdfWriter(dest))
                {
                    using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
                    {
                        // Iterate through each page
                        for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
                        {
                            PdfPage page = pdfDoc.GetPage(pageNum);
                            PdfCanvas canvas = new PdfCanvas(page);
                            Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) }; // Example: Define rectangles to redact

                            // Overlay black rectangles to simulate redaction
                            foreach (Rectangle rect in rectanglesToRedact)
                            {
                                canvas.SetFillColor(ColorConstants.BLACK)
                                    .Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
                                    .Fill();
                            }
                        }
                    }
                }
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Kernel.Colors;

string src = "input.pdf";
string dest = "output_redacted.pdf";

using (PdfReader reader = new PdfReader(src))
            {
                using (PdfWriter writer = new PdfWriter(dest))
                {
                    using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
                    {
                        // Iterate through each page
                        for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
                        {
                            PdfPage page = pdfDoc.GetPage(pageNum);
                            PdfCanvas canvas = new PdfCanvas(page);
                            Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) }; // Example: Define rectangles to redact

                            // Overlay black rectangles to simulate redaction
                            foreach (Rectangle rect in rectanglesToRedact)
                            {
                                canvas.SetFillColor(ColorConstants.BLACK)
                                    .Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
                                    .Fill();
                            }
                        }
                    }
                }
Imports System
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.Layout.Properties
Imports iText.Kernel.Colors

Private src As String = "input.pdf"
Private dest As String = "output_redacted.pdf"

Using reader As New PdfReader(src)
				Using writer As New PdfWriter(dest)
					Using pdfDoc As New PdfDocument(reader, writer)
						' Iterate through each page
						Dim pageNum As Integer = 1
						Do While pageNum <= pdfDoc.GetNumberOfPages()
							Dim page As PdfPage = pdfDoc.GetPage(pageNum)
							Dim canvas As New PdfCanvas(page)
							Dim rectanglesToRedact() As Rectangle = { New Rectangle(100, 100, 200, 50) } ' Example: Define rectangles to redact

							' Overlay black rectangles to simulate redaction
							For Each rect As Rectangle In rectanglesToRedact
								canvas.SetFillColor(ColorConstants.BLACK).Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight()).Fill()
							Next rect
							pageNum += 1
						Loop
					End Using
				End Using
$vbLabelText   $csharpLabel

Das Redaktionswerkzeug von IronPDF ist prägnant und benutzerfreundlich und benötigt nur wenige Codezeilen, um den Redaktionsprozess zu vereinfachen. Dies trägt zur Effizienzsteigerung bei der PDF-Redaktion bei und bietet Anwendern eine einfache Möglichkeit, ihre sensiblen und privaten Daten zu schützen.

iText bietet hingegen kein integriertes Redaktionswerkzeug im gleichen Sinne wie IronPDF. Dennoch können sensible Daten mit der oben gezeigten Methode abgedeckt werden, indem die Inhalte, die der Benutzer unkenntlich machen möchte, überstrichen werden. Dies kann jedoch zu Problemen führen, da diese Rechtecke den Text nicht wirklich entfernen oder richtig schwärzen, was bedeutet, dass andere Personen die Daten, die geschwärzt werden sollen, möglicherweise kopieren und einfügen könnten.

Signieren von PDF-Dokumenten

Das digitale Signieren von PDF-Dokumenten mit IronPDF, wie zum Beispiel PDF-Dateien, und dann die Automatisierung dieses Prozesses kann zeitsparend sein. Im Folgenden finden Sie einige Codestücke, mit denen Sie vergleichen können, wie sich IronPDF von iText in Bezug auf die Durchführung der digitalen Unterzeichnung von Dokumenten unterscheidet.

IronPDF

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature object
var sig = new PdfSignature(cert);

// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature object
var sig = new PdfSignature(cert);

// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates

' Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)

' Create PdfSignature object
Private sig = New PdfSignature(cert)

' Sign PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("document.pdf")
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

iText

using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Signatures;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.X509;

class Program
{
    static void Main(string[] args)
    {
        string src = "input.pdf";
        string dest = "output_signed.pdf";
        string pfxFile = "your_certificate.pfx";
        string pfxPassword = "your_password";

        try
        {
            // Load your certificate
            Pkcs12Store ks = new Pkcs12Store(new FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray());
            string alias = null;
            foreach (string al in ks.Aliases)
            {
                if (ks.IsKeyEntry(al))
                {
                    alias = al;
                    break;
                }
            }
            ICipherParameters pk = ks.GetKey(alias).Key;
            X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
            X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());

            // Create output PDF with signed content
            using (PdfReader reader = new PdfReader(src))
            {
                using (PdfWriter writer = new PdfWriter(dest))
                {
                    using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
                    {
                        // Create the signer
                        PdfSigner signer = new PdfSigner(pdfDoc, writer, new StampingProperties().UseAppendMode());

                        // Configure signature appearance
                        PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
                        appearance.SetReason("Digital Signature");
                        appearance.SetLocation("Your Location");
                        appearance.SetContact("Your Contact");

                        // Create signature
                        IExternalSignature pks = new PrivateKeySignature(pk, "SHA-256");
                        signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
                    }
                }
            }
            Console.WriteLine($"PDF digitally signed successfully: {dest}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error signing PDF: {ex.Message}");
        }
    }
}
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Signatures;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.X509;

class Program
{
    static void Main(string[] args)
    {
        string src = "input.pdf";
        string dest = "output_signed.pdf";
        string pfxFile = "your_certificate.pfx";
        string pfxPassword = "your_password";

        try
        {
            // Load your certificate
            Pkcs12Store ks = new Pkcs12Store(new FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray());
            string alias = null;
            foreach (string al in ks.Aliases)
            {
                if (ks.IsKeyEntry(al))
                {
                    alias = al;
                    break;
                }
            }
            ICipherParameters pk = ks.GetKey(alias).Key;
            X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
            X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());

            // Create output PDF with signed content
            using (PdfReader reader = new PdfReader(src))
            {
                using (PdfWriter writer = new PdfWriter(dest))
                {
                    using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
                    {
                        // Create the signer
                        PdfSigner signer = new PdfSigner(pdfDoc, writer, new StampingProperties().UseAppendMode());

                        // Configure signature appearance
                        PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
                        appearance.SetReason("Digital Signature");
                        appearance.SetLocation("Your Location");
                        appearance.SetContact("Your Contact");

                        // Create signature
                        IExternalSignature pks = new PrivateKeySignature(pk, "SHA-256");
                        signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
                    }
                }
            }
            Console.WriteLine($"PDF digitally signed successfully: {dest}");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Error signing PDF: {ex.Message}");
        }
    }
}
Imports System
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Signatures
Imports Org.BouncyCastle.Crypto
Imports Org.BouncyCastle.Pkcs
Imports Org.BouncyCastle.X509

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim src As String = "input.pdf"
		Dim dest As String = "output_signed.pdf"
		Dim pfxFile As String = "your_certificate.pfx"
		Dim pfxPassword As String = "your_password"

		Try
			' Load your certificate
			Dim ks As New Pkcs12Store(New FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray())
			Dim [alias] As String = Nothing
			For Each al As String In ks.Aliases
				If ks.IsKeyEntry(al) Then
					[alias] = al
					Exit For
				End If
			Next al
			Dim pk As ICipherParameters = ks.GetKey([alias]).Key
			Dim chain() As X509CertificateEntry = ks.GetCertificateChain([alias])
			Dim cert As New X509Certificate2(chain(0).Certificate.GetEncoded())

			' Create output PDF with signed content
			Using reader As New PdfReader(src)
				Using writer As New PdfWriter(dest)
					Using pdfDoc As New PdfDocument(reader, writer)
						' Create the signer
						Dim signer As New PdfSigner(pdfDoc, writer, (New StampingProperties()).UseAppendMode())

						' Configure signature appearance
						Dim appearance As PdfSignatureAppearance = signer.GetSignatureAppearance()
						appearance.SetReason("Digital Signature")
						appearance.SetLocation("Your Location")
						appearance.SetContact("Your Contact")

						' Create signature
						Dim pks As IExternalSignature = New PrivateKeySignature(pk, "SHA-256")
						signer.SignDetached(pks, chain, Nothing, Nothing, Nothing, 0, PdfSigner.CryptoStandard.CMS)
					End Using
				End Using
			End Using
			Console.WriteLine($"PDF digitally signed successfully: {dest}")
		Catch ex As Exception
			Console.WriteLine($"Error signing PDF: {ex.Message}")
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel

Beim digitalen Anwenden von Signaturen auf PDF-Dateien bietet IronPDF ein kompaktes und dennoch leistungsstarkes Werkzeug für diesen Prozess. Dank seiner Einfachheit kann der Prozess schnell durchgeführt werden, was für jeden Entwickler, der es für seine Signieranforderungen implementiert, Zeit spart. iText erfordert einen längeren, komplexeren Prozess, um digitale Signaturen auf PDF-Dateien anzuwenden. Obwohl die Möglichkeit, verschiedene Schnittstellenoptionen und Schlüssel zu verwenden, dem Benutzer mehr Kontrolle bietet, könnte die Komplexität, mit der dieses Tool diese Aufgabe ausführt, hinderlich sein.

Wasserzeichen auf PDF-Dokumente anwenden

Die Möglichkeit, mithilfe von IronPDF Wasserzeichen auf PDFs hinzuzufügen und zu personalisieren, kann erheblich zur Vertraulichkeit, zum Urheberrechtsschutz, zur Markenbildung oder zu anderen Aufgaben im Zusammenhang mit sensiblen Informationen beitragen. Im Folgenden wird verglichen, wie IronPDF und iText Wasserzeichen auf PDF-Dateien anwenden.

IronPDF

using IronPdf;

// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;

// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf

' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()

Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
$vbLabelText   $csharpLabel

iText

using iText.IO.Font;
using iText.IO.Font.Constants;
using iText.Kernel.Colors;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Extgstate;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

public class TransparentWatermark 
    {
        public static readonly String DEST = "results/sandbox/stamper/transparent_watermark.pdf";
        public static readonly String SRC = "../../../resources/pdfs/hero.pdf";

        public static void Main(String[] args) 
        {
            FileInfo file = new FileInfo(DEST);
            file.Directory.Create();

            new TransparentWatermark().ManipulatePdf(DEST);
        }

        protected void ManipulatePdf(String dest) 
        {
            PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
            PdfCanvas under = new PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), new PdfResources(), pdfDoc);
            PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA));
            Paragraph paragraph = new Paragraph("This watermark is added UNDER the existing content")
                    .SetFont(font)
                    .SetFontSize(15);

            Canvas canvasWatermark1 = new Canvas(under, pdfDoc.GetDefaultPageSize())
                    .ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
            canvasWatermark1.Close();
            PdfCanvas over = new PdfCanvas(pdfDoc.GetFirstPage());
            over.SetFillColor(ColorConstants.BLACK);
            paragraph = new Paragraph("This watermark is added ON TOP OF the existing content")
                    .SetFont(font)
                    .SetFontSize(15);

            Canvas canvasWatermark2 = new Canvas(over, pdfDoc.GetDefaultPageSize())
                    .ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
            canvasWatermark2.Close();
            paragraph = new Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")
                    .SetFont(font)
                    .SetFontSize(15);
            over.SaveState();

            // Creating a dictionary that maps resource names to graphics state parameter dictionaries
            PdfExtGState gs1 = new PdfExtGState();
            gs1.SetFillOpacity(0.5f);
            over.SetExtGState(gs1);
            Canvas canvasWatermark3 = new Canvas(over, pdfDoc.GetDefaultPageSize())
                    .ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
            canvasWatermark3.Close();
            over.RestoreState();

            pdfDoc.Close();
        }
    }
using iText.IO.Font;
using iText.IO.Font.Constants;
using iText.Kernel.Colors;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Extgstate;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;

public class TransparentWatermark 
    {
        public static readonly String DEST = "results/sandbox/stamper/transparent_watermark.pdf";
        public static readonly String SRC = "../../../resources/pdfs/hero.pdf";

        public static void Main(String[] args) 
        {
            FileInfo file = new FileInfo(DEST);
            file.Directory.Create();

            new TransparentWatermark().ManipulatePdf(DEST);
        }

        protected void ManipulatePdf(String dest) 
        {
            PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
            PdfCanvas under = new PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), new PdfResources(), pdfDoc);
            PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA));
            Paragraph paragraph = new Paragraph("This watermark is added UNDER the existing content")
                    .SetFont(font)
                    .SetFontSize(15);

            Canvas canvasWatermark1 = new Canvas(under, pdfDoc.GetDefaultPageSize())
                    .ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
            canvasWatermark1.Close();
            PdfCanvas over = new PdfCanvas(pdfDoc.GetFirstPage());
            over.SetFillColor(ColorConstants.BLACK);
            paragraph = new Paragraph("This watermark is added ON TOP OF the existing content")
                    .SetFont(font)
                    .SetFontSize(15);

            Canvas canvasWatermark2 = new Canvas(over, pdfDoc.GetDefaultPageSize())
                    .ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
            canvasWatermark2.Close();
            paragraph = new Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")
                    .SetFont(font)
                    .SetFontSize(15);
            over.SaveState();

            // Creating a dictionary that maps resource names to graphics state parameter dictionaries
            PdfExtGState gs1 = new PdfExtGState();
            gs1.SetFillOpacity(0.5f);
            over.SetExtGState(gs1);
            Canvas canvasWatermark3 = new Canvas(over, pdfDoc.GetDefaultPageSize())
                    .ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
            canvasWatermark3.Close();
            over.RestoreState();

            pdfDoc.Close();
        }
    }
Imports iText.IO.Font
Imports iText.IO.Font.Constants
Imports iText.Kernel.Colors
Imports iText.Kernel.Font
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas
Imports iText.Kernel.Pdf.Extgstate
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.Layout.Properties

Public Class TransparentWatermark
		Public Shared ReadOnly DEST As String = "results/sandbox/stamper/transparent_watermark.pdf"
		Public Shared ReadOnly SRC As String = "../../../resources/pdfs/hero.pdf"

		Public Shared Sub Main(ByVal args() As String)
			Dim file As New FileInfo(DEST)
			file.Directory.Create()

			Call (New TransparentWatermark()).ManipulatePdf(DEST)
		End Sub

		Protected Sub ManipulatePdf(ByVal dest As String)
			Dim pdfDoc As New PdfDocument(New PdfReader(SRC), New PdfWriter(dest))
			Dim under As New PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), New PdfResources(), pdfDoc)
			Dim font As PdfFont = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA))
			Dim paragraph As Paragraph = (New Paragraph("This watermark is added UNDER the existing content")).SetFont(font).SetFontSize(15)

			Dim canvasWatermark1 As Canvas = (New Canvas(under, pdfDoc.GetDefaultPageSize())).ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0)
			canvasWatermark1.Close()
			Dim over As New PdfCanvas(pdfDoc.GetFirstPage())
			over.SetFillColor(ColorConstants.BLACK)
			paragraph = (New Paragraph("This watermark is added ON TOP OF the existing content")).SetFont(font).SetFontSize(15)

			Dim canvasWatermark2 As Canvas = (New Canvas(over, pdfDoc.GetDefaultPageSize())).ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0)
			canvasWatermark2.Close()
			paragraph = (New Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")).SetFont(font).SetFontSize(15)
			over.SaveState()

			' Creating a dictionary that maps resource names to graphics state parameter dictionaries
			Dim gs1 As New PdfExtGState()
			gs1.SetFillOpacity(0.5F)
			over.SetExtGState(gs1)
			Dim canvasWatermark3 As Canvas = (New Canvas(over, pdfDoc.GetDefaultPageSize())).ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0)
			canvasWatermark3.Close()
			over.RestoreState()

			pdfDoc.Close()
		End Sub
End Class
$vbLabelText   $csharpLabel

IronPDFs einfach zu bedienende und intuitive API ermöglicht es Benutzern, schnell benutzerdefinierte Wasserzeichen zu ihren PDF-Dateien hinzuzufügen und dabei die volle Kontrolle über den Prozess zu behalten. Durch die Verwendung von HTML/CSS wird der Prozess weiter vereinfacht, ohne dass die Kontrolle über die Anpassung verloren geht. iText's Ansatz zum Hinzufügen von Wasserzeichen zu PDFs erfordert mehr manuelle Arbeit, um die Aufgabe auszuführen, was den Prozess verlangsamen kann.

Bilder und Text in eine PDF-Datei einfügen

Es gibt Momente, in denen PDF-Seiten mit Text oder Bildern auf einem PDF gestempelt werden müssen, ähnlich wie beim Aufbringen von Wasserzeichen auf ihre PDF-Dateien. Wir werden nun vergleichen, wie IronPDF und iText das Stempeln von Inhalten in einem PDF-Dokument durchführen.

IronPDF

using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

' Create text stamper
Private textStamper As New TextStamper() With {
	.Text = "Text Stamper!",
	.FontFamily = "Bungee Spice",
	.UseGoogleFont = True,
	.FontSize = 30,
	.IsBold = True,
	.IsItalic = True,
	.VerticalAlignment = VerticalAlignment.Top
}

' Stamp the text stamper
pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")

' Create image stamper
Dim imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}

' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
$vbLabelText   $csharpLabel

iText

using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

public void StampPDF(string inputPdfPath, string outputPdfPath, string stampText)
{
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputPdfPath), new PdfWriter(outputPdfPath));

    Document doc = new Document(pdfDoc);

    // Add stamp (text) to each page
    int numPages = pdfDoc.GetNumberOfPages();
    for (int i = 1; i <= numPages; i++)
    {
        doc.ShowTextAligned(new Paragraph(stampText),
                            36, 36, i, iText.Layout.Properties.TextAlignment.LEFT,
                            iText.Layout.Properties.VerticalAlignment.TOP, 0);
    }

    doc.Close();
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;

public void StampPDF(string inputPdfPath, string outputPdfPath, string stampText)
{
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputPdfPath), new PdfWriter(outputPdfPath));

    Document doc = new Document(pdfDoc);

    // Add stamp (text) to each page
    int numPages = pdfDoc.GetNumberOfPages();
    for (int i = 1; i <= numPages; i++)
    {
        doc.ShowTextAligned(new Paragraph(stampText),
                            36, 36, i, iText.Layout.Properties.TextAlignment.LEFT,
                            iText.Layout.Properties.VerticalAlignment.TOP, 0);
    }

    doc.Close();
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element

Public Sub StampPDF(ByVal inputPdfPath As String, ByVal outputPdfPath As String, ByVal stampText As String)
	Dim pdfDoc As New PdfDocument(New PdfReader(inputPdfPath), New PdfWriter(outputPdfPath))

	Dim doc As New Document(pdfDoc)

	' Add stamp (text) to each page
	Dim numPages As Integer = pdfDoc.GetNumberOfPages()
	For i As Integer = 1 To numPages
		doc.ShowTextAligned(New Paragraph(stampText), 36, 36, i, iText.Layout.Properties.TextAlignment.LEFT, iText.Layout.Properties.VerticalAlignment.TOP, 0)
	Next i

	doc.Close()
End Sub
$vbLabelText   $csharpLabel

IronPDF kann Ihnen helfen, Text oder Bilder auf PDFs hinzuzufügen, auf eine sehr vielseitige und anpassbare Weise. können Sie die volle Verantwortung übernehmen. Die API ist leicht zu verstehen und zu bedienen, insbesondere für Entwickler, die mit HTML/CSS vertraut sind. iText nutzt seine Bild- und Textstempel-Werkzeuge, um den Benutzern mehr Kontrolle über den angezeigten Inhalt ihrer PDF-Dateien zu geben, obwohl der Prozess am Ende manuell intensiver sein kann.

DOCX in PDF konvertieren

Manchmal müssen Sie PDF-Dateien von einem Format in ein anderes konvertieren. In diesem Fall betrachten wir die Umwandlung von DOCX in PDF mit IronPDF und vergleichen, wie IronPDF und iText diesen Prozess unterschiedlich handhaben.

IronPDF

using IronPdf;

// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();

// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;

// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();

// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()

' Render from DOCX file
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")

' Save the PDF
pdf.SaveAs("pdfFromDocx.pdf")
$vbLabelText   $csharpLabel

iText

iText allein kann keine Konvertierung von DOCX in PDF vornehmen; stattdessen ist es auf externe Bibliotheken wie DocX oder Aspose.Words angewiesen

IronPDF bietet Entwicklern ein einfaches und präzises Werkzeug für die Handhabung von DOCX-zu-PDF-Konvertierungsaufgaben, sodass es einfach ist, DOCX-Dateien in ein PDF-Format zu konvertieren, ohne dass externe Bibliotheken benötigt werden. iText hingegen ist auf externe Bibliotheken angewiesen, um diese Aufgabe auszuführen.

Zusammenfassung des Vergleichs der Codebeispiele

iText C# HTML-zu-PDF-Alternativen

Für detailliertere Beispiele besuchen Sie IronPDF-Beispiele zum Erstellen von PDFs aus HTML.

Preisgestaltung und Lizenzierung: IronPDF vs. iText-Bibliothek

IronPDF Preisgestaltung und Lizenzierung

IronPDF-Lizenzierungsoptionen haben unterschiedliche Ebenen und zusätzliche Funktionen zum Erwerb einer Lizenz. Entwickler können auch Iron Suite kaufen, was Ihnen Zugriff auf alle Produkte von Iron Software zum Preis von zwei bietet. Wenn Sie noch nicht bereit sind, eine Lizenz zu kaufen, bietet IronPDF eine kostenlose Testversion, die 30 Tage lang gültig ist.

  • Unbefristete Lizenzen: Bietet eine Auswahl an unbefristeten Lizenzen, abhängig von der Größe Ihres Teams, den Anforderungen Ihres Projekts und der Anzahl der Standorte. Jeder Lizenztyp beinhaltet E-Mail-Support.
  • Lite License: Diese Lizenz kostet $749 und unterstützt einen Entwickler, einen Standort und ein Projekt.
  • Plus License: Diese unterstützt drei Entwickler, drei Standorte und drei Projekte. Sie ist der nächste Schritt über der Lite License und kostet $1.499. Die Plus License bietet neben dem grundlegenden E-Mail-Support auch Chat- und Telefonsupport.
  • Professional License: Diese Lizenz ist für größere Teams geeignet und unterstützt zehn Entwickler, zehn Standorte und zehn Projekte für 2.999 $. Sie bietet die gleichen Kontakt-Support-Kanäle wie die vorherigen Ebenen, bietet jedoch zusätzlich Unterstützung per Bildschirmfreigabe.
  • Lizenzfreie Weiterverbreitung: Die Lizenz von IronPDF bietet auch eine lizenzfreie Weiterverbreitung für zusätzliche $1.999
  • Unterbrechungsfreier Produktsupport: IronPDF bietet Zugang zu fortlaufenden Produktaktualisierungen, Sicherheitsverbesserungen und Support von ihrem Ingenieurteam entweder für $999/Jahr oder einem einmaligen Kauf von $1.999 für eine 5-jährige Abdeckung.
  • Iron Suite: Für $1.498 erhalten Sie Zugriff auf alle Iron Software-Produkte, einschließlich IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint und IronWebScraper.

    IronPDF Lizenzvergleich

iText-Lizenzierung

  • AGPL-Lizenz: Die iText Core-Bibliothek ist quelloffen und steht den Nutzern kostenlos zur Verfügung. Um iText unter diesem Lizenzmodell zu verwenden, müssen die Nutzer die Bedingungen dieser Lizenz einhalten und alle Änderungen an iText, die unter dieser Lizenz vorgenommen werden, müssen auch unter dem AGPL-Lizenzmodell freigegeben werden.
  • Kommerzielle Lizenz: iText bietet ein kommerzielles Lizenzmodell für Entwickler, deren Projekte nicht den AGPL-Bedingungen entsprechen, und wird durch ein angebotsbasiertes Preismodell bepreist.

Dokumentation und Support: IronPDF vs. iText

IronPDF

  • Umfassende Dokumentation: Umfangreiche und benutzerfreundliche Dokumentation, die alle verfügbaren Funktionen abdeckt.
  • 24/5 Support: Aktive Unterstützung durch Ingenieure ist verfügbar.
  • Videoanleitungen: Schritt-für-Schritt-Videoanleitungen sind auf YouTube verfügbar.
  • Community-Forum: Engagierte Community für zusätzliche Unterstützung.
  • Regelmäßige Updates: Monatliche Produktaktualisierungen, um die neuesten Funktionen und Sicherheitspatches zu gewährleisten.

iText

  • Dokumentation: Ausführliche Dokumentation, die die von iText-Software angebotenen Funktionen abdeckt.
  • Beispiele und Tutorials: Enthält Tutorials zur Nutzung seiner verschiedenen Funktionen und Codebeispiele.
  • GitHub: Entwickler können ganz einfach alle Probleme oder Fehler, auf die sie stoßen, in das iText-GitHub-Repository einreichen und mit der iText-Gruppe kommunizieren
  • Updates: iText bietet regelmäßige Updates und Verbesserungen.

    Für weitere Details zur IronPDF-Dokumentation und Unterstützung besuchen Sie die IronPDF-Dokumentation und den Iron Software YouTube-Kanal.

Schlussfolgerung

Im Bereich der PDF-Manipulationstools für .NET bieten sowohl IronPDF als auch iText robuste Funktionen, die auf verschiedene Entwicklungsanforderungen zugeschnitten sind. IronPDF zeichnet sich durch seine unkomplizierte Integration in eine Vielzahl von Plattformen aus, darunter .NET Core, Framework und Standard, sowie durch umfassende Funktionen wie die Konvertierung von HTML in PDF und erweiterte Sicherheitsoptionen. Auf der anderen Seite bietet iText, das für sein Java-Erbe bekannt ist, leistungsstarke Werkzeuge zur PDF-Erzeugung und -Bearbeitung sowohl unter Open-Source- als auch unter kommerziellen Lizenzen an, wobei Vielseitigkeit und Anpassbarkeit im Vordergrund stehen.

Die Wahl zwischen diesen Werkzeugen hängt letztendlich von den Projektanforderungen, den Lizenzierungspräferenzen und dem benötigten technischen Support ab. Egal, ob sie sich für die Einfachheit und Flexibilität von IronPDF oder für die umfangreichen Funktionen der Open-Source-PDF-Bibliothek iText entscheiden, Entwickler verfügen über ausreichend Ressourcen, um PDF-Workflows in ihren Anwendungen effektiv zu optimieren.

Sie können die 30-tägige kostenlose Testversion ausprobieren, um die verfügbaren Funktionen zu testen.

Chipego
Software-Ingenieur
Chipego hat eine natürliche Fähigkeit zum Zuhören, die ihm hilft, Kundenprobleme zu verstehen und intelligente Lösungen anzubieten. Er trat dem Iron Software-Team 2023 bei, nachdem er einen Bachelor of Science in Informationstechnologie erworben hatte. IronPDF und IronOCR sind die beiden Produkte, auf die sich Chipego konzentriert hat, aber sein Wissen über alle Produkte wächst täglich, da er neue Wege findet, Kunden zu unterstützen. Er genießt die Zusammenarbeit bei Iron Software, da Teammitglieder aus dem gesamten Unternehmen ihre unterschiedlichen Erfahrungen einbringen und so zu effektiven, innovativen Lösungen beitragen. Wenn Chipego nicht an seinem Schreibtisch sitzt, kann man ihn oft bei einem guten Buch oder beim Fußballspielen antreffen.
< PREVIOUS
Ein Vergleich zwischen IronPDF und Textcontrol
NÄCHSTES >
Ein Vergleich zwischen IronPDF und Winnovative PDF Library for .NET