COMPARACIóN DE PRODUCTOS

Comparación entre IronPDF e ITextPDF

Jordi Bardia
Jordi Bardia
16 de diciembre, 2024
Compartir:

Introducción

Para los desarrolladores que trabajan con PDFs, tener una biblioteca confiable para la generación y manipulación de PDFs es esencial. En el ecosistema de .NET, dos bibliotecas de PDF populares se destacan:IronPDF yiTextPdf– cada uno ofrece herramientas potentes para crear, editar y gestionar documentos PDF. Este artículo ofrece una comparación detallada de estas bibliotecas basada en las capacidades de características, la calidad de la documentación y las políticas de precios.

Descripción general de IronPDF y iTextPdf

IronPDF

IronPDF es una robusta biblioteca .NET para la gestión de PDF, compatible con varios entornos .NET.(Core 8, 7, 6, Framework, y más). Ofrece un conjunto de funciones completo, que incluye conversión de HTML a PDF, fusión de PDFs, cifrado y firmas digitales. La documentación de IronPDF es sencilla, y los usuarios tienen acceso a un soporte técnico confiable. Los desarrolladores a menudo encuentran soluciones a problemas comunes en discusiones de Stack Overflow y otras plataformas de intercambio de código fuente.

iTextPdf

iTextPdf es una biblioteca avanzada de PDF para Java y .NET(C#)de la biblioteca iText, con un enfoque en el procesamiento de documentos a nivel empresarial. Está disponible bajo licencias AGPL y comerciales, lo que proporciona flexibilidad para una variedad de proyectos. El software iText, como iTextPdf, es altamente personalizable, lo que lo hace ideal para tareas complejas de PDF como el cifrado de documentos, la firma digital y la creación de formularios.

Compatibilidad multiplataforma

Tanto IronPDF como iTextPdf admiten la funcionalidad multiplataforma, lo que los hace versátiles para diversas necesidades de aplicaciones dentro de .NET. Aquí tienes un desglose de la compatibilidad de cada biblioteca.

IronPDF

  • Versiones de .NET: Compatible con .NET Core(8, 7, 6, 5, 3.1+).NET Standard(2.0+)y .NET Framework(4.6.2+).
  • Entornos de Aplicación: Funciona sin problemas en entornos Windows, Linux, Mac, Docker, Azure y AWS.
  • IDEs compatibles: Funciona bien con Microsoft Visual Studio y JetBrains Rider & ReSharper.
  • Sistemas Operativos y Procesadores: Compatible con Windows, Mac, Linux, x64, x86, ARM.

iTextPdf

  • Versiones de .NET: Compatible con .NET Core(2.x, 3.x).NET Framework(4.6.1+), y .NET 5+.
  • Entornos de Aplicación: Compatible con Windows, macOS, Linux y Docker.

Comparación de Características Clave: IronPDF vs. iTextPdf

A continuación se presenta una comparación detallada de las características clave proporcionadas por cada biblioteca.

IronPDF

  • Conversión de HTML a PDF: Admite HTML, CSS, JavaScript e imágenes.
  • Manipulación de PDF: Divide, combina y edita documentos PDF.
  • Seguridad: Capacidades de cifrado y descifrado de PDF.
  • Edición: Permite anotaciones, marcadores y esquemas.
  • Plantillas: Aplique encabezados, pies de página y números de página.
  • Watermarking: Admite marcas de agua de texto e imagen utilizando HTML/CSS para el control.
  • Sellado de PDF: Añade imágenes y sellos de texto a los archivos PDF.

    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.

iTextPdf

  • Creación de PDF: Admite la creación de documentos PDF desde cero.
  • Forms: Ofrece la creación y edición de formularios PDF.
  • Firmas digitales: Firma documentos PDF.
  • Compresión: Optimiza el tamaño de los archivos PDF.
  • Extracción de Contenido: Extrae texto e imágenes de PDFs.
  • Personalización: Alta capacidad de personalización para proyectos complejos.

Comparación de funcionalidad PDF: IronPDF vs. iTextPdf

Conversión de HTML a PDF

Ambas bibliotecas admiten la conversión de HTML a PDF, aunque difieren en su enfoque y facilidad de uso.

IronPDF

using IronPdf;

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

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

// Advanced example with external assets
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;

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

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

// Advanced example with external assets
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");

iTextPdf

using iText.Html2pdf;
using System.IO;

public class HtmlToPdf
{
    public static void ConvertHtmlToPdf()
    {
        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;
using System.IO;

public class HtmlToPdf
{
    public static void ConvertHtmlToPdf()
    {
        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);
        }
    }
}

IronPDF ofrece un enfoque sencillo para HTML a PDFconversión, incluidas compatibilidad con HTML, CSS y JavaScript. Permite a los usuarios convertir directamente desde cadenas HTML o incluir recursos con una ruta base opcional. iTextPdf, aunque efectivo, requiere unos segundos adicionales de configuración, enfocándose más en la conversión basada en archivos.

Cifrar archivos PDF

El cifrado es esencial en escenarios donde la seguridad es primordial. Así es como cada biblioteca lo maneja.

IronPDF

using IronPdf;

// Load an encrypted PDF or create a new one
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Set document security settings
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;

// Load an encrypted PDF or create a new one
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");

// Set document security settings
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");

iTextPdf

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

public class EncryptPdf
{
    public static readonly String DEST = "encrypt_pdf.pdf";
    public static readonly String OWNER_PASSWORD = "World";
    public static readonly String USER_PASSWORD = "Hello";

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

public class EncryptPdf
{
    public static readonly String DEST = "encrypt_pdf.pdf";
    public static readonly String OWNER_PASSWORD = "World";
    public static readonly String USER_PASSWORD = "Hello";

    protected void ManipulatePdf(String dest)
    {
        PdfDocument document = new PdfDocument(new PdfReader("input.pdf"), new PdfWriter(dest,
            new WriterProperties().SetStandardEncryption(
                Encoding.UTF8.GetBytes(USER_PASSWORD),
                Encoding.UTF8.GetBytes(OWNER_PASSWORD),
                EncryptionConstants.ALLOW_PRINTING,
                EncryptionConstants.ENCRYPTION_AES_128)));
        document.Close();
    }
}

El método de IronPDF es más fácil de usar, proporcionando un enfoque directo.codificacióny control sobre los permisos de los documentos. iTextPdf, aunque efectivo, requiere una configuración detallada con un enfoque en los estándares de encriptación.

Redactar contenido PDF

Redactar información en archivos PDF es esencial para la privacidad y la seguridad. Así es como cada biblioteca admite esta función.

IronPDF

using IronPdf;

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

// Redact 'are' from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
using IronPdf;

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

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

iTextPdf

using iText.Kernel.Pdf;
using iText.Kernel.Colors;

// Define areas to redact on each page
Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) };

// Draw black rectangles to cover sensitive areas
using (PdfDocument pdfDoc = new PdfDocument(new PdfReader("input.pdf"), new PdfWriter("output_redacted.pdf")))
{
    for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
    {
        PdfPage page = pdfDoc.GetPage(pageNum);
        PdfCanvas canvas = new PdfCanvas(page);
        foreach (Rectangle rect in rectanglesToRedact)
        {
            canvas.SetFillColor(ColorConstants.BLACK)
                  .Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
                  .Fill();
        }
    }
}
using iText.Kernel.Pdf;
using iText.Kernel.Colors;

// Define areas to redact on each page
Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) };

// Draw black rectangles to cover sensitive areas
using (PdfDocument pdfDoc = new PdfDocument(new PdfReader("input.pdf"), new PdfWriter("output_redacted.pdf")))
{
    for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
    {
        PdfPage page = pdfDoc.GetPage(pageNum);
        PdfCanvas canvas = new PdfCanvas(page);
        foreach (Rectangle rect in rectanglesToRedact)
        {
            canvas.SetFillColor(ColorConstants.BLACK)
                  .Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
                  .Fill();
        }
    }
}

IronPDF ofrece una convenienteredacciónherramienta que oculta fácilmente texto sensible en todas las páginas. En contraste, iTextPdf requiere que los usuarios definan y apliquen rectángulos negros manualmente para cubrir áreas sensibles.

Firma de documentos PDF

La automatización de la firma de documentos PDF puede ahorrar tiempo de manera significativa. Aquí tienes una comparación lado a lado de cómo IronPDF e iTextPdf manejan la firma digital.

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

iTextPdf

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

Cuando se trata de aplicarfirmas digitalesa archivos PDF, IronPDF ofrece una forma sencilla y eficiente de lograrlo con certificados X509. Su API simplifica el proceso, facilitando la integración en un flujo de trabajo sin sacrificar el control sobre la seguridad de la firma. En comparación, el proceso de iTextPDF para firmar documentos es una configuración más compleja pero ofrece opciones adicionales de personalización. Los desarrolladores tienen un control más granular, aunque pueden enfrentar una curva de aprendizaje más pronunciada al navegar por la configuración de firma y el manejo de certificados de iTextPDF.

Aplicar marcas de agua a documentos PDF

La marca de agua en PDFs puede ser esencial para la marca, la confidencialidad y la protección de derechos de autor. A continuación se muestra cómo IronPDF e iTextPDF aplican marcas de agua a documentos 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");

iTextPdf

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

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

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

La API de IronPDF permite un acceso rápido e intuitivomarca de aguaaplicación con la flexibilidad de usar HTML y CSS para personalización. Este enfoque es fácil de usar y facilita la creación de marcas de agua visualmente distintas sin una configuración extensa. iTextPDF, por otro lado, permite una colocación de marcas de agua altamente personalizable a través de sus opciones de configuración más detalladas, aunque requiere un mayor esfuerzo de codificación.

Estampar imágenes y texto en un PDF

Estampar contenido en PDFs es similar a aplicar marcas de agua, pero se enfoca más en añadir elementos específicos, como imágenes o texto, para propósitos de etiquetado o marca. Así es como IronPDF e iTextPDF realizan esta tarea.

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

iTextPdf

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

IronPDF'sestampado de imágenes y textoLos métodos son optimizados y versátiles, permitiendo a los desarrolladores añadir fácilmente contenido de marca o etiquetas a las páginas PDF. La API aprovecha elementos de estilo HTML/CSS familiares, lo que hace que la personalización sea sencilla. iTextPDF también ofrece funciones de estampado de imágenes y texto, aunque su configuración requiere una configuración manual más extensa y un conocimiento práctico de la estructura del diseño PDF. La capacidad de manipular y dar estilo al contenido directamente en la página PDF ofrece a los desarrolladores herramientas de estampado robustas, aunque la configuración de iTextPDF puede requerir un poco más de esfuerzo.

Convertir DOCX a PDF

En algunos proyectos, es necesario convertir archivos DOCX al formato PDF. A continuación se muestra una comparación de cómo manejan esta tarea IronPDF e iText, destacando sus diferencias.

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

iTextPDF

A diferencia de IronPDF, iTextPDF no tiene soporte incorporado para convertir DOCX a PDF. Para realizar esta conversión, los desarrolladores deben depender de bibliotecas de terceros como DocX o Aspose.Words para convertir primero el archivo DOCX a un formato compatible con PDF, que luego puede ser procesado o modificado utilizando iTextPDF.

IronPDF ofrece una solución integrada y sencilla para Conversión de DOCX a PDF, eliminando la necesidad de bibliotecas adicionales. Esto lo hace altamente adecuado para desarrolladores que necesitan un enfoque rápido e integrado. En contraste, iTextPDF depende de bibliotecas externas para convertir archivos DOCX, lo que requiere configuración y dependencias adicionales, lo que puede aumentar la complejidad del proyecto.

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

Itextpdf Alternative Html To Pdf Csharp 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 vs. iTextPdf Library

Precios y licencias de IronPDF

IronPDF tiene diferentes niveles y características adicionales para la compra de una licencia. Los promotores también pueden comprarIron Suite que, le da acceso a todos los productos de IronSoftware al precio de dos. Si no está preparado para comprar una licencia, IronPDF le ofrece unaprueba gratuita, .

  • 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.
  • Lite License: Esta licencia cuesta $749 y admite un desarrollador, una ubicación y un proyecto.
  • Licencia Plus: Con soporte para tres desarrolladores, tres ubicaciones y tres proyectos, este es el siguiente paso desde la licencia Lite y cuesta $1,499. La Licencia Plus ofrece soporte por chat y teléfono, además de soporte básico por correo electrónico.
  • 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.
  • Iron Suite: Por $1,498, obtienes acceso a todos los productos de Iron Software, incluidos IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint y IronWebScraper.

    Itextpdf Alternative Html To Pdf Csharp 2 related to Precios y licencias de IronPDF

Licencias de iTextPDF

  • Licencia AGPL: La biblioteca central iTextPDF es de código abierto bajo la licencia AGPL, que es gratuita para su uso bajo ciertas condiciones. Los desarrolladores deben liberar cualquier modificación bajo la misma licencia.
  • Licencia Comercial: Para los desarrolladores que no cumplen con las condiciones de AGPL, iTextPDF ofrece licencias comerciales a través de un modelo basado en presupuestos.

Documentación y soporte: IronPDF vs. iTextPdf

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.

iTextPDF

iTextPDF ofrece una documentación sólida y soporte para su amplio conjunto de características.

  • Documentación: La documentación de iText PDF cubre exhaustivamente las funciones disponibles.
  • Ejemplos y Tutoriales: Los ejemplos de código y los tutoriales ayudan a los desarrolladores a comenzar.
  • GitHub Community: Los desarrolladores pueden reportar problemas, enviar solicitudes de extracción e interactuar con el equipo de iTextPDF.
  • Actualizaciones regulares: iTextPDF proporciona actualizaciones y mejoras frecuentes.

    Para obtener más información sobre la documentación y la asistencia de IronPDF, visiteDocumentación de IronPDF y elCanal YouTube de IronSoftware.

Conclusión

En el ámbito de las herramientas de manipulación de PDF para .NET, tantoIronPDFy iTextPDF ofrecen soluciones sólidas para desarrolladores. IronPDF se destaca por su sencilla integración en plataformas .NET y sus características amigables para el usuario, como la conversión de DOCX a PDF sin dependencias externas. En contraste, iTextPDF, conocido por su versatilidad y rico conjunto de características, sigue siendo una opción poderosa, especialmente cuando se combina con otras herramientas, aunque requiere dependencias adicionales para la conversión a DOCX.

En última instancia, elegir entre IronPDF e iTextPDF dependerá de las necesidades específicas de su proyecto, las preferencias de licenciamiento y el nivel de soporte requerido. Ambas bibliotecas ofrecen maneras confiables de optimizar los flujos de trabajo con PDF en aplicaciones .NET.

Jordi Bardia
Ingeniero de software
Jordi es más competente en Python, C# y C++, cuando no está aprovechando sus habilidades en Iron Software; está programando juegos. Compartiendo responsabilidades en las pruebas de productos, el desarrollo de productos y la investigación, Jordi añade un inmenso valor a la mejora continua de los productos. La variada experiencia le mantiene desafiado y comprometido, y dice que es uno de sus aspectos favoritos de trabajar con Iron Software. Jordi creció en Miami, Florida, y estudió Informática y Estadística en la Universidad de Florida.
< ANTERIOR
Comparación entre IronPDF y PDFreactor
SIGUIENTE >
Comparación entre IronPDF y GemBox.Pdf