using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
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");
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.
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.
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.
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.
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