COMPARACIóN DE PRODUCTOS

iTextSharp C# HTML to PDF Alternativa para .NET Core

Publicado en 23 de octubre, 2024
Compartir:

IronPDF yiText 7 (antes conocido como iTextSharp) ambas ofrecen la posibilidad de generar, manipular yimprimir PDF en .NET y .NET Core.

QuéBiblioteca PDF en C# es el más adecuado para su proyecto .NET? El objetivo de este artículo es ayudar a los lectores a tomar una decisión adecuada e informada.

IronPDF es una destacada biblioteca PDF .NET que permite a los desarrolladores crear, modificar e interactuar fácilmente con documentos PDF. Es compatible con varios entornos .NET, incluidos .NET Core, .NET 8, 7, 6 y Framework, lo que le confiere una gran versatilidad. Entre las principales características de IronPDF se incluyen la conversión de HTML a PDF, la fusión de PDF, el cifrado y las firmas digitales. La documentación es fácil de usar y el soporte técnico es sólido.

iTextSharp es una potente biblioteca PDF para la plataforma .NET, derivada originalmente de iText(que está basado en Java). Esta herramienta ofrece soluciones de nivel empresarial para la creación y manipulación de archivos PDF y está disponible tanto en código abierto como en software libre(AGPL) y licencias comerciales. La biblioteca principal iTextSharp ofrece un alto grado de flexibilidad, lo que permite a los desarrolladores crear archivos PDF desde cero, gestionar formularios, aplicar firmas digitales, añadir funcionalidad PDF y mucho más.

Compatibilidad multiplataforma

IronPDF es:

  • .NET Primero
  • Abiertamente comercial con precios publicados
  • Se centra en la renderización de PDF a partir de HTML para que los desarrolladores no tengan que aprender cómo funcionan los PDF
  • Una gran elección para programadores pragmáticos que intentan hacer su trabajo.

    iTexto(iTextSharp) es:

  • Java Primero
  • Muy de código abierto. Es posible que les pidamos un presupuesto para un uso distinto al de los proyectos AGLP de código abierto estricto.
  • Se centra en la representación de PDF mediante una API programática basada en el funcionamiento interno de los PDF
  • Una gran elección para proyectos libres y académicos

    IronPDF es compatible con una amplia gama de plataformas y entornos, lo que garantiza una integración e implantación perfectas en diversos sistemas:

    iTextSharp iText existe desde hace al menos 6 años, se basa en un código Java de código abierto llamado iText y sigue teniendo cierto sabor a Java. Los desarrolladores que aprendieron Java por primera vez pueden encontrar esta biblioteca familiar.

    IronPDF es una biblioteca .NET con una API diseñada para facilitar su uso en Visual Studio. .NET existe desde hace casi 20 años, creciendo y expandiéndose continuamente, y abriendo muchas posibilidades, que IronPDF está diseñado para aprovechar. Nos permite crear y manipular documentos PDF en proyectos .NET Framework. Puede descargar IronPDF comobiblioteca PDF alternativa para usuarios de iTextSharp.

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

    • .NET Standard(2.0+)
  • .NET Framework(4.6.2+)
  • Entornos de aplicación: IronPDF funciona en entornos de aplicación como Windows, Linux, Mac, Docker, Azure y AWS
  • **Trabaja con IDEs como Microsoft Visual Studio y JetBrains Rider & ReSharper
  • SO y procesadores: Compatible con varios sistemas operativos y procesadores, como Windows, Mac, Linux, x64, x86 y ARM

iTextSharp:

  • Versiones .NET: Compatible con .NET Core(2.x, 3.x).NET Framework(4.6.1+).NET 5+.
  • Entornos de aplicación: Funciona en Windows, macOS, Linux y Docker.
  • Código abierto: Disponible bajo licencia AGPL.

Comparación de características clave: IronPDF frente a iTextSharp

IronPDF y iTextSharp ofrecen una serie de funciones y herramientas que pueden utilizarse para trabajar con archivos PDF; el objetivo de la siguiente sección será examinar más de cerca algunas de estas características y comparar las dos bibliotecas a la hora de realizar diferentes tareas relacionadas con PDF.

IronPDF

  • Conversión de HTML a PDF: Admite HTML, CSS, JavaScript e imágenes.
  • Manipulación de archivos PDF: Divida y luego fusione documentos, cambie el formato y edite documentos PDF existentes
  • Seguridad: Cifrado y descifrado de PDF.
  • Edición: Añade anotaciones, marcadores y esquemas.
  • Plantillas: Aplique encabezados, pies de página y números de página.
  • Marcas de agua: Aplique fácilmente marcas de agua de texto e imagen a archivos PDF; aproveche su uso de HTML/CSS para obtener un control total sobre el proceso.
  • Estampado PDF: Estampe imágenes y texto en sus documentos PDF con IronPDF.

    Para obtener más información sobre el amplio conjunto de funciones que ofrece IronPDF, visite la páginaPágina de características de IronPDF.

iTextSharp:

  • Creación de PDF: Admite la creación de documentos PDF desde cero.
  • Formularios: Cree y edite formularios PDF.
  • Firmas digitales: Firma documentos PDF.
  • Compresión: Optimiza el tamaño de los archivos PDF.
  • Extracción de contenido: Extraiga texto e imágenes de archivos PDF.
  • Código abierto: Disponible bajo licencia AGPL.
  • Personalización: Alto nivel de personalización para casos de uso avanzados.

Comparación de las funciones de PDF entre IronPDF e iTextSharp

Conversión de HTML a PDF

Conversión Contenido HTML en PDF es una tarea muy sencilla que se realiza en muchas oficinas y espacios de trabajo diferentes. A continuación se muestran los ejemplos de código que comparan cómo IronPDF e iText abordan este proceso.

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")
VB   C#

iTextSharp

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
VB   C#

A la hora de convertir HTML a PDF, IronPDF ofrece una herramienta concisa y cómoda para llevar a cabo esta tarea. Utilizando el ChromePdfRenderer para convertir contenido HTML en PDF, IronPDF destaca por proporcionar a los usuarios documentos PDF perfectos como píxeles. Los usuarios pueden crear PDF directamente a partir de cadenas HTML, como se muestra en el primer ejemplo, o incluir activos externos como imágenes con una ruta base opcional, como se demuestra en el ejemplo avanzado. por otro lado, iTextSharp** utiliza HtmlConverter para convertir archivos HTML, pero el proceso requiere más configuración.

Cifrar archivos PDF

Cifrado y descifrado de documentos PDF son vitales en muchos lugares de trabajo. Para manejar esta tarea con facilidad es necesario contar con una herramienta que pueda hacerlo cómodamente. En el código siguiente, veremos cómo iTextSharp y IronPDF abordan el cifrado de PDF.

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")
VB   C#

iTextSharp

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
VB   C#

IronPDF ofrece a los usuarios una forma sencilla de cifrar archivos PDF, a la vez que les permite controlar el proceso en gran medida, incluida la edición de metadatos y el ajuste de la configuración de seguridad, como hacer que los documentos sean de sólo lectura o restringir acciones del usuario como copiar y pegar. Por otro lado, iTextSharp proporciona un control más granular, pero requiere una configuración adicional, como especificar las normas de cifrado y los permisos.

Redactar contenido PDF

Ocasionalmente, al manejar información confidencial o privada, puede ser necesarioredactar partes de un archivo PDF. Los siguientes ejemplos demuestran cómo puede redactar texto utilizando IronPDF en comparación con iTextSharp.

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")
VB   C#

iTextSharp

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
VB   C#

la herramienta de redacción de IronPDF** es concisa y fácil de usar, y sólo necesita unas pocas líneas de código para agilizar el proceso de redacción. Esto ayuda a aumentar la eficacia de las tareas de redacción de PDF y ofrece a los usuarios una forma sencilla de mantener a salvo sus datos confidenciales y privados.

Por otro lado, iTextSharp carece de una función de redacción integrada, por lo que es necesario dibujar manualmente rectángulos negros sobre el contenido que se desea redactar. Sin embargo, este enfoque puede dejar el texto bajo el rectángulo accesible, permitiendo a los usuarios copiar y pegar los datos ocultos, por lo que no proporciona una verdadera redacción.

Firma de documentos PDF

Ser capaz defirmar documentos digitales como archivos PDF y convertirlo en un proceso automatizado podría ahorrar tiempo. Los siguientes fragmentos de código comparan cómo IronPDF y iTextSharp gestionan las firmas digitales.

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")
VB   C#

iTextSharp

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
VB   C#

Al aplicar firmas a archivos PDF digitalmente, IronPDF presenta una herramienta compacta pero potente para completar este proceso. Su sencillez permite realizar el proceso con rapidez, ahorrando tiempo a cualquier desarrollador que lo implemente para sus necesidades de firma. Por el contrario, iTextSharp requiere más configuración e implica pasos adicionales para manejar firmas digitales, lo que lo hace más complejo, aunque potencialmente más flexible para usuarios avanzados.

Aplicar marcas de agua a documentos PDF

La posibilidad de añadir y personalizarmarcas de agua en PDF mediante software puede ser de gran ayuda para la confidencialidad, la protección de los derechos de autor, la creación de marcas o cualquier otra tarea que implique información sensible. A continuación se compara cómo IronPDF e iTextSharp aplican marcas de agua a los archivos PDF.

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")
VB   C#

iTextSharp

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
VB   C#

la API fácil e intuitiva de IronPDF permite a los usuarios aplicar marcas de agua personalizadas a sus archivos PDF rápidamente, al tiempo que les da un control total sobre el proceso. Su uso de HTML/CSS simplifica aún más el proceso sin perder ningún control sobre la personalización. el enfoque de iTextSharp para añadir marcas de agua a los PDF requiere más trabajo manual para llevar a cabo la tarea, lo que puede ralentizar el proceso.

Estampar imágenes y texto en un PDF

Hay momentos en los que las páginas PDF necesitanestampado con contenido, de forma similar a como uno podría necesitar aplicar marcas de agua a sus archivos PDF. Veamos cómo se compara IronPDF con iTextSharp:

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")
VB   C#

iTextSharp

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));

    var document = new Document(pdfDoc);
    ...
}
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));

    var document = new Document(pdfDoc);
    ...
}
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 document As New Document(pdfDoc)
	'...
End Sub
VB   C#

Al observar rápidamente el código, puedes ver que IronPDF es pragmático y se basa en los requisitos comunes del usuario final.

iText es una biblioteca de nivel inferior que se centra en una API de dibujo donde añadimos objetos, formas y texto a las páginas.

iTextSharp.dll utiliza un modelo principalmente programático para renderizar PDFs. Al utilizar la biblioteca PDF iTextSharp, cada parte de texto, gráfico, tabla o línea en el PDF se "traza" o dibuja en un PDF. La API parece de bajo nivel y está enfocada en el estándar de documentos PDF. Este modelo permite precisión, pero puede requerir que los desarrolladores aprendan un poco sobre cómo funcionan los PDFs. Ajustar de cerca un estilo de diseño existente o activos web puede requerir algunas iteraciones y leer la Documentación de iTextSharp. Siguiendo su herencia, la metodología y la interfaz programática tienen un distintivo sabor a Java.

En contraste, IronPDF utiliza un motor de renderizado de navegador web completo paraconvertir HTML a PDF. Después de(1 y 2 líneas) Ejemplos de código C# para la conversión de HTML a PDF, los desarrolladores pueden generar PDFs a partir de HTML, imágenes y CSS existentes o nuevos. Esto permite a los desarrolladores trabajar en estrecha colaboración con los activos web existentes y también trabajar en paralelo con los diseñadores durante un proyecto. iText sí incluye funcionalidad de HTML a PDF para C# .NET, aunque al parecer no es la característica predominante de la biblioteca.

Siga leyendo para obtener más detalles comparativos sobre las diferentes formas en que IronPDF e iTextSharp pueden ayudar a los desarrolladores a alcanzar los siguientes objetivos:

-Crear un PDF a partir de una URL existente

-Crear un documento PDF a partir de una cadena de entrada HTML

-Convertir páginas ASPX a PDF

-Convertir XML a PDF

  • Datos en directo(gráfico)

1. Licencias

Las opciones de licencia también son un factor importante en los proyectos de desarrollo. iTextSharp es de código abierto bajo el acuerdo de licencia AGPL. Cuando se licencia bajo AGLP, cualquier persona que use cualquier parte de una aplicación que contenga iTextSharp(incluso a través de la red de la empresa o de Internet) puede tener derecho a una copia completa del código fuente de la aplicación. Es excelente para el trabajo académico. Si deseamos utilizar iTextSharp en aplicaciones comerciales, lo mejor es ponerse en contacto con iText ypídales un presupuesto sobre los precios del uso comercial de iText.

IronPDF eslibre para el desarrolloy puede sercon licencia para uso comercial a precios razonables publicados públicamente, a partir de $749.

IronPDF e iTextSharp

Así es como se comparan las dos bibliotecas:

IronPDFiTextSharp
Convierte HTML a PDF mediante un completo navegador web integradoHTML básico a PDF mediante un complemento pdfHTML
Foco de renderización: Navegador web integradoEnfoque de renderizado: Modelo de dibujo programático
IronPDF dispone de licencias explícitas con precios publicadosAGPL Precios de uso comercial no publicados.
Fácil de codificar con .NET First DesignBasado en una API Java
No es adecuado para tareas académicas y trabajos de curso Excelente para trabajos académicos e investigación

Principales diferencias

Generar PDF a partir de HTML con IronPDF

IronPDF permite a los desarrolladores de .NET y .NET Core generar, fusionar, dividir, editar y extraer contenido PDF fácilmente en C#, F# y VB.NET para .NET Core y .NET Framework, así comocrear PDFs a partir de archivos HTML, ASPX, CSS, JS e imagen.

Utiliza un navegador web totalmente integrado para convertir HTML a PDF. Esto permite a los desarrolladores generar PDF a partir de HTML, imágenes y CSS, y trabajar en estrecha colaboración con los activos web existentes y también en paralelo con los diseñadores durante un proyecto.

2. Características de IronPDF

IronPDF se centra realmente en la productividad de los desarrolladores. La biblioteca simplifica muchas tareas complejas comunes relacionadas con PDF en métodos de C# convenientes para extraer texto e imágenes, firmar PDFs, editar PDFs con nuevo HTML y más, sin que el desarrollador necesite estudiar el estándar de documentos PDF para comprender cómo lograr el mejor resultado.

  • Generar documentos PDF a partir de HTML, imágenes y archivos ASPX
  • Lectura de texto PDF
  • Extraer datos e imágenes de PDF
  • Fusión de documentos PDF
  • Dividir PDF
  • Manipulación de PDF

    . Características de la documentación de iTextSharp

    EniTextSharp.dll utiliza un modelo principalmente programático para renderizar los PDF, y cuenta con API avanzadas de manipulación de PDF que son potentes y siguen al pie de la letra el estándar PDF.

  • Licencias de código abierto estrictas de la AGLP
  • Modelo de dibujo programático
  • Editar y leer PDF
  • Funcionalidad sólida para la manipulación de PDF
  • Basado en una biblioteca Java

    Comparemos creando un proyecto de ejemplo que utilice ambas bibliotecas:


    Ejemplo de proyecto

    Crear un proyecto ASP.NET

    Siga los siguientes pasos para crear un sitio web ASP.NET:

  1. Abrir Visual Studio

  2. Haga clic en Archivo > Nuevo proyecto

  3. Seleccione Web en Visual C# en el cuadro de lista Tipo de proyecto

  4. Seleccione Aplicación Web ASP.NET
    New Project related to 2. Características de IronPDF

    Figura 1 - Nuevo proyecto

    • Haga clic en OK
    • En la siguiente pantalla, seleccione Formularios Web, como se muestra en la Figura 2, debajo de
      Web Form related to 2. Características de IronPDF

      Figura 2 - Formularios web

  • Haga clic en OK

    Ahora tenemos algo con lo que trabajar. Vamos a instalar IronPDF.


    Comenzar

3. Instalación de la biblioteca IronPDF

Para poder utilizar IronPDF, primero hay que instalarlo(gratis). Hay dos opciones:

  • NuGet
  • Descargar la biblioteca

    Veámoslo más de cerca.

3.1. Instalar usando NuGet

Hay tres formas de instalar el paquete NuGet de IronPDF:

  1. Visual Studio

  2. Símbolo del sistema para desarrolladores

  3. Descargue directamente el paquete NuGet

    Hagámoslos uno por uno.

3.2. Visual Studio

Visual Studio proporciona el gestor de paquetes NuGet para que puedas instalar paquetes NuGet en tus proyectos. Puedes acceder a él a través del menú Proyecto, o haciendo clic derecho en tu proyecto en el Explorador de Soluciones. Ambas opciones se muestran a continuación en las figuras 3 y 4

Project Menu related to 3.2. Visual Studio

Figura 3 - Menú de proyectos

Solution Explorer related to 3.2. Visual Studio

Figura 4 - Haz clic derecho en el Explorador de Soluciones

Después de hacer clic en Manage NuGet Packages desde cualquiera de las opciones, busque el paquete IronPDF e instálelo como se muestra en la Figura 5.

Install Ironpdf Nuget Package related to 3.2. Visual Studio

Gráfico 5 - Instalar el paquete NuGet IronPDF

3.3. Símbolo del sistema para desarrolladores

Los siguientes pasos abren el Símbolo del sistema para desarrolladores e instalan el paquete IronPDF NuGet.

  1. Busque su Instrucción de comandos para desarrolladores; normalmente se encuentra en la carpeta Visual Studio.

  2. Escriba el siguiente comando: PM > Install-Package IronPdf

  3. Pulse Intro

  4. El paquete se instalará

  5. Vuelva a cargar el proyecto de Visual Studio

3.4. Descargue directamente el paquete NuGet

Para descargar el paquete NuGet:

  1. Vaya ahttps://www.nuget.org/packages/IronPdf/

  2. Haga clic en Descargar paquete

  3. Una vez descargado el paquete, haga doble clic en él

  4. Vuelva a cargar el proyecto de Visual Studio

3.5. Descargar la biblioteca .DLL

La segunda forma de instalar IronPDF es mediantedescarga directa.

Download Ironpdf Library related to 3.5. Descargar la biblioteca .DLL

Figura 6 - Descargar la biblioteca IronPDF

Haga referencia a la Biblioteca en su proyecto siguiendo los pasos siguientes:

  1. Haga clic con el botón derecho en la solución en el Explorador de soluciones

  2. Seleccionar referencias

  3. Buscar la biblioteca IronPDF.dll

  4. Haga clic en OK

    Ahora que está configurado, podemos empezar a jugar con las impresionantes características de la biblioteca IronPDF después de la configuración para iTextSharp.

    Instalar iTextSharp mediante NuGet

    Hay tres formas deinstala el paquete NuGet iTextSharp, son:

    • Visual Studio
    • Símbolo del sistema para desarrolladores
    • Descargue directamente el paquete NuGet

    Hagámoslos uno por uno.

    Para Visual Studio, busque iText e instale los paquetes correspondientes, como se muestra a continuación.

    Itext related to Instalar iTextSharp mediante NuGet

    Gráfico 7 - iText

    O, en el símbolo del sistema para desarrolladores(como se ha mostrado anteriormente, introduzca el siguiente comando)

  • PM > Install-Package itext7

    O descargueiText 7 directamente desde su sitio web.

    Ahora que ya has creado los proyectos necesarios, vamos a comparar estas dos bibliotecas en código.


    Comparar el Código

4. Crear un PDF a partir de una URL existente

El siguiente código descarga una página web y la convierte en un documento PDF.

4.1. IronPDF Website to PDF

El siguiente código utiliza IronPDF para crear un documento PDF directamente desde una dirección web. También se incluyen encabezados y pies de página personalizados.

/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
    // Create a PDF from any existing web page
    var Renderer = new IronPdf.ChromePdfRenderer();

    // Create a PDF from an existing HTML
    Renderer.RenderingOptions.MarginTop = 50;  //millimetres
    Renderer.RenderingOptions.MarginBottom = 50;
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    };
    Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    };

    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    Renderer.RenderingOptions.EnableJavaScript = true;
    Renderer.RenderingOptions.RenderDelay = 500; //milliseconds

    using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");

    PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
    // Create a PDF from any existing web page
    var Renderer = new IronPdf.ChromePdfRenderer();

    // Create a PDF from an existing HTML
    Renderer.RenderingOptions.MarginTop = 50;  //millimetres
    Renderer.RenderingOptions.MarginBottom = 50;
    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
    Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
    {
        CenterText = "{pdf-title}",
        DrawDividerLine = true,
        FontSize = 16
    };
    Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
    {
        LeftText = "{date} {time}",
        RightText = "Page {page} of {total-pages}",
        DrawDividerLine = true,
        FontSize = 14
    };

    Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

    Renderer.RenderingOptions.EnableJavaScript = true;
    Renderer.RenderingOptions.RenderDelay = 500; //milliseconds

    using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");

    PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
	' Create a PDF from any existing web page
	Dim Renderer = New IronPdf.ChromePdfRenderer()

	' Create a PDF from an existing HTML
	Renderer.RenderingOptions.MarginTop = 50 'millimetres
	Renderer.RenderingOptions.MarginBottom = 50
	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
	Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
		.CenterText = "{pdf-title}",
		.DrawDividerLine = True,
		.FontSize = 16
	}
	Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
		.LeftText = "{date} {time}",
		.RightText = "Page {page} of {total-pages}",
		.DrawDividerLine = True,
		.FontSize = 14
	}

	Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print

	Renderer.RenderingOptions.EnableJavaScript = True
	Renderer.RenderingOptions.RenderDelay = 500 'milliseconds

	Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")

	PDF.SaveAs("wikipedia.pdf")
End Sub
VB   C#

IronPDF puede ayudarte a añadir texto o imágenes a los PDF de una forma realmente versátil y personalizable; te permite hacerte cargo por completo. Es fácil entender y trabajar con la API, especialmente para los desarrolladores familiarizados con HTML/CSS. iTextSharp hace uso de sus herramientas de estampado de imágenes y texto para ofrecer a los usuarios un mayor control sobre el contenido que se muestra en sus archivos PDF, aunque el proceso puede acabar siendo más manual.

Convertir DOCX a PDF

A veces, puede que tengas que convertir PDF de un formato a otro. En este caso, nos fijamos enConversión de DOCX a PDF y comparando cómo IronPDF e iTextSharp gestionan este proceso de forma diferente.

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")
VB   C#

iTextSharp

Desgraciadamente, iTextSharp no incorpora la función de conversión de DOCX a PDF, por lo que los desarrolladores deben recurrir a bibliotecas externas como Aspose.Words para esta tarea.

IronPDF proporciona a los desarrolladores una herramienta directa y concisa para gestionar las tareas de conversión de DOCX a PDF, facilitando la conversión de archivos DOCX a formato PDF sin necesidad de bibliotecas externas. por otro lado, iTextSharp** depende de bibliotecas externas para llevar a cabo esta tarea.

Resumen de la comparación de ejemplos de código

Itextsharp 1 related to Resumen de la comparación de ejemplos de código

Para ver ejemplos más detallados, visiteEjemplos de IronPDF.

Precios y licencias: IronPDF frente a iTextSharp Library

Precios y licencias de IronPDF

IronPDF tiene diferentes niveles y funciones adicionales por la compra de una licencia. Los promotores también pueden comprarIronSuitelo que te da acceso a todos los productos de Iron Software al precio de dos. Si no está preparado para comprar una licencia, IronPDF le ofrece unaprueba gratuita que dura 30 días.

  • Licencias perpetuas: Ofrece una gama de licencias perpetuas en función del tamaño de su equipo, las necesidades de su proyecto y el número de ubicaciones. Cada tipo de licencia incluye asistencia por correo electrónico.
  • Licencia Lite: Esta licencia cuesta 749 $ y admite un desarrollador, una ubicación y un proyecto.

    Con este segmento de código, hemos transformado la Wikipedia de Tigerpágina web a PDF con ambas bibliotecas.

  • Licencia profesional: Esta licencia es adecuada para equipos más grandes, con soporte para diez desarrolladores, diez ubicaciones y diez proyectos por 2.999 dólares. Ofrece los mismos canales de asistencia de contacto que los niveles anteriores, pero también ofrece asistencia de pantalla compartida.
  • Redistribución sin derechos de autor: La licencia de IronPDF también ofrece cobertura de redistribución sin derechos de autor por 1.999 dólares más
  • Soporte ininterrumpido del producto: IronPDF ofrece acceso a actualizaciones continuas del producto, mejoras de las funciones de seguridad y soporte de su equipo de ingenieros por 999 $ al año o por una única compra de 1.999 $ para una cobertura de 5 años.
  • IronSuite: Por 1.498 dólares, tendrá acceso a todos los productos de Iron Software, incluidos IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint e IronWebScraper.

    Itextsharp 2 related to Precios y licencias de IronPDF

licencias de iTextSharp

  • Licencia AGPL: iTextSharp está disponible gratuitamente bajo la licencia AGPL(Licencia pública general Affero). Esta licencia requiere que cualquier software que utilice iTextSharp sea de código abierto bajo la misma licencia si se redistribuye.
  • Licencia comercial: Para proyectos que no cumplen los términos de la AGPL, iTextSharp ofrece una licencia comercial que permite su uso en software propietario. El precio de esta licencia se basa en un modelo de presupuesto y varía en función del uso y el alcance del proyecto.

Documentación y Soporte: IronPDF frente a iText

IronPDF

  • Documentación completa: Documentación extensa y fácil de usar que cubre todas las funciones que ofrece.
  • Asistencia 24/5 horas: Asistencia técnica activa disponible.
  • Videotutoriales: En YouTube hay disponibles guías de vídeo paso a paso.
  • Foro comunitario: Comunidad comprometida para apoyo adicional.
  • Actualizaciones periódicas: Actualizaciones mensuales del producto para garantizar las últimas funciones y parches de seguridad.

iTextSharp

  • Documentación: iTextSharp ofrece documentación detallada que cubre sus funcionalidades clave.
  • Ejemplos y tutoriales: Se proporciona una variedad de tutoriales y ejemplos de código para ayudar a los desarrolladores a empezar.
  • GitHub: Los desarrolladores pueden enviar problemas o errores al repositorio iTextSharp GitHub e interactuar con la comunidad iTextSharp para obtener soporte.
  • Actualizaciones: Se proporcionan actualizaciones periódicas para mejorar las características y corregir errores.

    Para obtener más información sobre la documentación y la asistencia de IronPDF, visiteDocumentación de IronPDF y elIron Software YouTube Channel.

Conclusión

AmbosIronPDFy iTextSharp son opciones sólidas para la manipulación de PDF en proyectos .NET. IronPDF se distingue por su integración intuitiva en la plataforma y funciones como la conversión de HTML a PDF y opciones avanzadas de seguridad. iTextSharp, aunque se basa en la biblioteca de código abierto iText, ofrece un conjunto de herramientas potente y flexible bajo las licencias AGPL y comerciales, lo que lo hace ideal para proyectos que pueden beneficiarse de la flexibilidad del código abierto o requieren cumplimiento estricto de licencias.

Elegir la herramienta adecuada depende de los requisitos de licencia de su proyecto, las necesidades de soporte técnico y las demandas específicas de características. Ya sea que prefieras la simplicidad y el soporte completo de IronPDF o la robustez de código abierto de iTextSharp, ambas bibliotecas ofrecen a los desarrolladores amplios recursos para mejorar los flujos de trabajo de PDF en sus aplicaciones.


Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.

Primer Paso:
green arrow pointer

< ANTERIOR
IronPDF y EvoPdf: Una Comparación
SIGUIENTE >
Comparación de Syncfusion PDF Viewer para HTML a PDF

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >