Skip to footer content
PRODUCT COMPARISONS

IronPDF vs iTextPdf: Complete .NET PDF Library Comparison

IronPDF excels with its Chromium-based HTML rendering engine, offering full CSS3 and JavaScript support along with built-in DOCX conversion. In contrast, iTextPdf provides advanced enterprise features with AGPL or commercial licensing but requires external dependencies for modern web standards and document conversion.

For developers working with PDFs, having a reliable library for PDF generation and manipulation is essential. In the .NET ecosystem, two popular PDF libraries stand out—IronPDF and iTextPdf—each offering effective tools to create, edit, and manage PDF documents. This article provides an in-depth comparison of these libraries based on feature capabilities, documentation quality, and pricing policies.

What Are IronPDF and iTextPdf?

How Does IronPDF Simplify PDF Development?

IronPDF is a reliable .NET library for PDF management, compatible with various .NET environments (Core 8, 7, 6, Framework, and more). It offers a complete feature set, including HTML to PDF conversion, merging PDFs, encryption, and digital signatures. IronPDF's documentation is straightforward, and users have access to reliable technical support. Developers often find solutions to common issues through Stack Overflow discussions and other source code sharing platforms. The library provides API references for detailed implementation guidance and supports advanced installation methods through NuGet packages. For quick implementation, explore the quickstart guide and installation overview to get started rapidly.

What Makes iTextPdf Suitable for Enterprise Applications?

iTextPdf is an advanced PDF library for Java and .NET (C#), focusing on enterprise-level document processing. Available under both AGPL and commercial licenses, it provides flexibility for various project requirements. iTextPdf is highly customizable, making it ideal for complex PDF tasks such as document encryption, digital signing, and form creation. The library has been a staple in enterprise environments requiring extensive PDF manipulation capabilities and compliance with PDF/A standards for archival purposes. Organizations requiring Section 508 accessibility compliance often choose enterprise-grade solutions that support universal accessibility standards.

Which Platforms Do IronPDF and iTextPdf Support?

Both IronPDF and iTextPdf support cross-platform functionality, making them versatile for various application needs within .NET. Here's a breakdown of each library's compatibility.

  • .NET Versions: Compatible with .NET Core (8, 7, 6, 5, 3.1+), .NET Standard (2.0+), and .NET Framework (4.6.2+).
  • App Environments: Works seamlessly in Windows, Linux, Mac, Docker, Azure, and AWS environments.
  • Supported IDEs: Works well with Microsoft Visual Studio and JetBrains Rider & ReSharper.
  • OS & Processors: Supports Windows, Mac, Linux, x64, x86, ARM.

  • .NET Versions: Compatible with .NET Core 8, 7, 6, 5, 3.1+, .NET Standard 2.0+, .NET Framework 4.6.2+
  • App Environments: Works in Windows, Linux, Mac, Docker, Azure, and AWS
  • Supported IDEs: Microsoft Visual Studio and JetBrains Rider & ReSharper
  • OS & Processors: Windows, Mac, Linux, x64, x86, ARM
  • Mobile Platforms: Android support through MAUI
  • Container Support: Remote container deployment for scalable architectures

  • .NET Versions: Supports .NET Core (2.x, 3.x), .NET Framework (4.6.1+), and .NET 5+.
  • App Environments: Compatible with Windows, macOS, Linux, and Docker.

Where Can iTextPdf Be Deployed?

  • .NET Versions: Supports .NET Core 2.x, 3.x, .NET Framework 4.6.1+, .NET 5+
  • App Environments: Compatible with Windows, macOS, Linux, Docker
  • Enterprise Deployments: Optimized for server environments with AGPL or commercial licensing

What Are the Key Features of IronPDF vs. iTextPdf?

Below is a detailed comparison of key features provided by each library.

What Capabilities Does IronPDF Offer?

  • HTML to PDF Conversion: Supports HTML, CSS, JavaScript, and images.
  • PDF Manipulation: Split, merge, and edit PDF documents.
  • Security: PDF encryption and decryption capabilities.
  • Editing: Allows annotations, bookmarks, and outlines.
  • Templates: Apply headers, footers, and page numbers.
  • Watermarking: Supports text and image watermarks using HTML/CSS for control.
  • PDF Stamping: Add images and text stamps onto PDF files.

For more information on IronPDF's features, visit the IronPDF features page. The library also supports creating PDFs from various sources, converting PDFs between formats, and organizing PDFs with professional tools.

What Enterprise Features Does iTextPdf Provide?

  • PDF Creation: Supports creating PDF documents from scratch.
  • Forms: Offers creation and editing of PDF forms.
  • Digital Signatures: Sign PDF documents.
  • Compression: Optimizes PDF file sizes.
  • Content Extraction: Extracts text and images from PDFs.
  • Customizability: High customizability for complex projects.

How Do Both Libraries Handle HTML to PDF Conversion?

Both libraries support HTML to PDF conversion, though they differ in approach and ease of use. IronPDF employs the Chromium rendering engine for pixel-perfect accuracy, while iTextPdf uses its pdfHTML add-on with more limited CSS support. IronPDF supports HTML files, HTML strings, and URLs as input sources, including full JavaScript rendering. For complex layouts, IronPDF handles CSS screen and print media types and supports custom margins for precise control.

IronPDF

using IronPdf;

// Instantiate the 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");

// Render with custom options
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
var customPdf = renderer.RenderHtmlAsPdf("<h1>Custom Settings</h1>");
customPdf.SaveAs("custom-settings.pdf");
using IronPdf;

// Instantiate the 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");

// Render with custom options
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
var customPdf = renderer.RenderHtmlAsPdf("<h1>Custom Settings</h1>");
customPdf.SaveAs("custom-settings.pdf");
$vbLabelText   $csharpLabel

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);
        }
    }
}
$vbLabelText   $csharpLabel

IronPDF provides a straightforward approach for HTML to PDF conversion, supporting HTML, CSS, and JavaScript. It converts directly from HTML strings or includes assets with an optional base path. The library also supports HTML ZIP files for complex projects and responsive CSS for improved rendering. For dynamic content, IronPDF offers JavaScript execution and render delay options to ensure complete page loading. Additional rendering features include viewport control and custom paper sizes. iTextPdf requires more setup, focusing primarily on file-based conversion with limited modern web standard support.

Which Library Offers Better PDF Encryption?

Encryption is essential when security is paramount. Here's how each library handles it. IronPDF provides complete security features including AES encryption and permission management. The library supports metadata management and sanitization for removing potentially harmful content.

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.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.Password = "my-password";

// Set owner password for administrative access
pdf.SecuritySettings.OwnerPassword = "owner-password";

// Save with encryption
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.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.Password = "my-password";

// Set owner password for administrative access
pdf.SecuritySettings.OwnerPassword = "owner-password";

// Save with encryption
pdf.SaveAs("secured.pdf");
$vbLabelText   $csharpLabel

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

IronPDF provides straightforward encryption and control over document permissions. The library supports custom logging for security auditing and license key management for enterprise deployments. For improved security, IronPDF offers PDF file version control and registry configuration options. iTextPdf requires detailed setup with a focus on encryption standards. For advanced security needs, IronPDF also supports digital signatures with HSM for enterprise requirements and Kerberos authentication for secure environments.

How Do IronPDF and iTextPdf Handle Content Redaction?

Redacting information in PDF files is essential for privacy and security. Here's how each library supports this feature. IronPDF offers complete redaction capabilities and PDF sanitization for removing potentially harmful content. The library also provides PDF flattening to convert forms and annotations to static content.

IronPDF

using IronPdf;

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

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

// Redact specific text on specific pages
pdf.RedactTextOnPage(0, "confidential");

// Use regular expressions for pattern matching
pdf.RedactTextOnAllPages(@"\b\d{3}-\d{2}-\d{4}\b"); // Redact SSN pattern

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

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

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

// Redact specific text on specific pages
pdf.RedactTextOnPage(0, "confidential");

// Use regular expressions for pattern matching
pdf.RedactTextOnAllPages(@"\b\d{3}-\d{2}-\d{4}\b"); // Redact SSN pattern

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

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

IronPDF offers a convenient redaction tool that easily hides sensitive text across all pages. The library also provides text replacement features for updating document content and PDF DOM access for detailed content manipulation. For extracting content before redaction, use text and image extraction or parse PDF files programmatically. iTextPdf requires manual definition and application of black rectangles to cover sensitive areas. For complete document sanitization, IronPDF also provides PDF sanitization features to remove potentially malicious content and PDF flattening to convert interactive elements to static content.

Which Library Makes Digital Signatures Easier?

Automating PDF document signing can save significant time. Here's a comparison of how IronPDF and iTextPdf handle digital signing. IronPDF supports various signing methods including certificate-based signatures and HSM integration. The library also maintains revision history for tracking document changes and signature validity.

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)
{
    SigningContact = "support@ironsoftware.com",
    SigningLocation = "Chicago, USA",
    SigningReason = "Document Approval"
};

// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);

// Apply timestamp
var timestampedSig = new PdfSignature(cert)
{
    TimestampHashAlgorithm = TimestampHashAlgorithm.SHA256,
    TimeStampUrl = "___PROTECTED_URL_245___"
};

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)
{
    SigningContact = "support@ironsoftware.com",
    SigningLocation = "Chicago, USA",
    SigningReason = "Document Approval"
};

// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);

// Apply timestamp
var timestampedSig = new PdfSignature(cert)
{
    TimestampHashAlgorithm = TimestampHashAlgorithm.SHA256,
    TimeStampUrl = "___PROTECTED_URL_245___"
};

pdf.SaveAs("signed.pdf");
$vbLabelText   $csharpLabel

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

When applying digital signatures to PDF files, IronPDF provides a straightforward and efficient approach using X509 certificates. Its API simplifies integration without sacrificing security control. IronPDF also supports revision history tracking for maintaining document integrity and multiple signature types including visual signatures. The library integrates with HSM devices for improved security and supports certificate validation. For secure document workflows, explore sign and secure PDFs capabilities. iTextPdf's signing process offers more customization options but requires complex setup. Developers gain granular control but face a steeper learning curve with certificate handling and signature configuration.

How Do Both Libraries Apply Watermarks to PDFs?

Watermarking PDFs is essential for branding, confidentiality, and copyright protection. Here's how IronPDF and iTextPdf apply watermarks to PDF documents. IronPDF offers flexible watermarking options with HTML/CSS support. The library also enables background and foreground layers for complex overlays.

IronPDF

using IronPdf;

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

var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_246___");

// Add text watermark
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);

// Add image watermark
pdf.ApplyWatermark("<img src='logo.png' style='width:200px'>", 45, IronPdf.Editing.VerticalAlignment.Bottom, IronPdf.Editing.HorizontalAlignment.Right);

// Add complex HTML watermark with transparency
string watermarkHtml = @"
<div style='font-size:80px; color:rgba(255,0,0,0.3); font-family:Arial; transform:rotate(-45deg);'>
    CONFIDENTIAL
</div>";
pdf.ApplyWatermark(watermarkHtml, 0, 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("___PROTECTED_URL_246___");

// Add text watermark
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);

// Add image watermark
pdf.ApplyWatermark("<img src='logo.png' style='width:200px'>", 45, IronPdf.Editing.VerticalAlignment.Bottom, IronPdf.Editing.HorizontalAlignment.Right);

// Add complex HTML watermark with transparency
string watermarkHtml = @"
<div style='font-size:80px; color:rgba(255,0,0,0.3); font-family:Arial; transform:rotate(-45deg);'>
    CONFIDENTIAL
</div>";
pdf.ApplyWatermark(watermarkHtml, 0, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);

pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
$vbLabelText   $csharpLabel

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

IronPDF's API enables fast watermark application with HTML and CSS customization flexibility. This approach creates visually distinct watermarks without extensive setup. For more control, IronPDF supports background and foreground layers for complex document overlays, multiple watermarks, and custom positioning. The library also offers barcode integration for tracking purposes and SVG graphics support for scalable watermarks. For advanced needs, explore transform PDF pages and draw lines and rectangles capabilities. iTextPdf allows highly customizable watermark placement through detailed configuration options, though requiring more extensive coding effort.### Which Library Offers Better Image and Text Stamping?

Stamping content onto PDFs is akin to watermarking but focuses on adding specific elements like images or text for labeling or branding purposes. Here's how IronPDF and iTextPdf perform this task. IronPDF provides extensive stamping features with flexible positioning options. The library also supports drawing text and bitmaps directly on PDF pages.

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,
    HorizontalAlignment = HorizontalAlignment.Center,
    Opacity = 50,
    Rotation = -45
};

// Stamp the text stamper on all pages
pdf.ApplyStamp(textStamper);

// Create HTML stamper for complex layouts
HtmlStamper htmlStamper = new HtmlStamper()
{
    Html = @"<div style='border:2px solid red; padding:10px;'>
             <h3>APPROVED</h3>
             <p>Date: " + DateTime.Now.ToShortDateString() + @"</p>
             </div>",
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Right,
    Width = 200,
    Height = 100
};

pdf.ApplyStamp(htmlStamper);

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("___PROTECTED_URL_247___"))
{
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Left,
    MaxWidth = new Length(150),
    MaxHeight = new Length(150)
};

// Stamp the image stamper on specific pages
pdf.ApplyStamp(imageStamper, new[] { 0, 2, 4 });

pdf.SaveAs("stamped.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,
    HorizontalAlignment = HorizontalAlignment.Center,
    Opacity = 50,
    Rotation = -45
};

// Stamp the text stamper on all pages
pdf.ApplyStamp(textStamper);

// Create HTML stamper for complex layouts
HtmlStamper htmlStamper = new HtmlStamper()
{
    Html = @"<div style='border:2px solid red; padding:10px;'>
             <h3>APPROVED</h3>
             <p>Date: " + DateTime.Now.ToShortDateString() + @"</p>
             </div>",
    VerticalAlignment = VerticalAlignment.Bottom,
    HorizontalAlignment = HorizontalAlignment.Right,
    Width = 200,
    Height = 100
};

pdf.ApplyStamp(htmlStamper);

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("___PROTECTED_URL_247___"))
{
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Left,
    MaxWidth = new Length(150),
    MaxHeight = new Length(150)
};

// Stamp the image stamper on specific pages
pdf.ApplyStamp(imageStamper, new[] { 0, 2, 4 });

pdf.SaveAs("stamped.pdf");
$vbLabelText   $csharpLabel

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

IronPDF's image and text stamping methods are straightforward and versatile, allowing easy addition of branded content or labels to PDF pages. The API uses familiar HTML/CSS styling elements for easy customization. For complex stamping needs, IronPDF supports multiple stamps efficiently, Google Fonts integration, and web fonts. The library also enables drawing text and bitmaps directly on PDFs and supports barcode stamping for inventory tracking. For precise control, explore translate PDF objects and scale PDF objects features. iTextPdf also offers image and text stamping features, though configuration requires more manual setup and knowledge of PDF layout structure. The ability to manipulate content directly on PDF pages provides reliable stamping tools, though iTextPdf's setup requires more effort.

Can Both Libraries Convert DOCX to PDF?

In some projects, converting DOCX files to PDF format is necessary. Below is a comparison of how IronPDF and iTextPdf handle this task, highlighting their differences. IronPDF offers native DOCX to PDF conversion along with support for other formats including RTF documents.

IronPDF

using IronPdf;

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

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

// Advanced rendering with options
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;

// Handle mail merge
var mergeFields = new Dictionary<string, string>
{
    ["Name"] = "John Doe",
    ["Date"] = DateTime.Now.ToShortDateString()
};
PdfDocument mergedPdf = renderer.RenderDocxAsPdf("template.docx", mergeFields);

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

// Advanced rendering with options
renderer.RenderingOptions.MarginTop = 50;
renderer.RenderingOptions.MarginBottom = 50;

// Handle mail merge
var mergeFields = new Dictionary<string, string>
{
    ["Name"] = "John Doe",
    ["Date"] = DateTime.Now.ToShortDateString()
};
PdfDocument mergedPdf = renderer.RenderDocxAsPdf("template.docx", mergeFields);

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

iTextPdf

Unlike IronPDF, iTextPdf lacks built-in support for converting DOCX to PDF. To perform this conversion, developers must rely on third-party libraries like DocX or Aspose.Words to first convert the DOCX file to a PDF-compatible format, then process or modify using iTextPdf.

IronPDF provides a straightforward, built-in solution for DOCX to PDF conversion, eliminating the need for additional libraries. This makes it highly suitable for developers needing quick, integrated conversion. IronPDF also supports RTF to PDF conversion for legacy document formats, Markdown to PDF for documentation workflows, XML to PDF for structured data, and image to PDF conversion including multi-frame TIFF support. For improved document processing, explore mail merge capabilities and table of contents generation. In contrast, iTextPdf relies on external libraries for DOCX conversion, requiring additional setup and dependencies, which increases project complexity.

How Well Do IronPDF and iTextPdf Support Bootstrap and Modern CSS?

When generating PDFs from Bootstrap-styled web applications, full framework support ensures design consistency without requiring parallel CSS files or layout modifications. Understanding HTML to PDF page breaks and responsive design considerations is crucial for professional output. For improved results, use CSS media types and custom rendering delays.

Does IronPDF Support Modern CSS Frameworks?

IronPDF's Chromium engine provides complete support for:

  • Bootstrap 5: Full flexbox layouts, CSS Grid, utility classes, all components
  • Bootstrap 4: Complete card systems, navigation, flex utilities, responsive design
  • Tailwind CSS: All utility classes with browser-accurate rendering
  • Foundation: Complete grid system and component library
  • Modern CSS3: Flexbox, CSS Grid, custom properties, animations, transitions

Real-world validation: IronPDF renders the Bootstrap homepage and all official examples with pixel-perfect accuracy using its responsive CSS capabilities. The library also supports custom paper sizes and viewport control for improved layout rendering. For complex layouts, use rendering options and page orientation settings. The library handles international languages and UTF-8 for global applications.

What Are iTextPdf's CSS Limitations?

iTextPDF uses pdfHTML with selective CSS3 support:

  • Limited flexbox support: Added in version 7.1.15 but incomplete
  • No CSS Grid: Grid-based Bootstrap layouts not supported
  • Bootstrap 3 limitations: Modern Bootstrap 4/5 components require workarounds
  • Manual layout conversion: Complex layouts often need PDF-specific code

iTextPdf's documentation explicitly states that advanced CSS features may not render as expected, requiring developers to test each Bootstrap component and often create simplified layouts.

Development impact: Teams must maintain separate layout code for PDF generation or extensively test and modify Bootstrap components, increasing development time and reducing design consistency.

For complete Bootstrap framework guidance and CSS3 rendering capabilities, see the Bootstrap & Flexbox CSS Guide. Additional resources include pixel-perfect formatting tips, font management, and font kerning solutions for consistent typography. For web applications, explore ASPX to PDF conversion and Angular.js PDF generation capabilities.

What Do the Code Examples Tell Us About IronPDF vs. iTextPdf?

Feature comparison table between IronPDF and iTextPDF libraries showing capabilities for PDF manipulation including HTML conversion, encryption, redaction, signatures, watermarks, stamping, and DOCX support.

For more detailed examples, visit IronPDF Examples or explore the code examples library. The demos section provides interactive examples of IronPDF's capabilities. Additional resources include parallel PDF generation, multi-threaded processing, and async examples for high-performance applications.

How Do IronPDF and iTextPdf Compare on Pricing and Licensing?

What Are IronPDF's Pricing Options?

IronPDF offers different levels and additional features for purchasing licenses. Developers can also buy the Iron Suite, which gives access to all IronSoftware products at the price of two. If you're not ready to buy a license, IronPDF provides a free trial with full features for evaluation. The licensing page provides complete details on available options. For enterprise deployments, explore license key management and setting license keys programmatically.

  • Perpetual licenses: Offers a range of perpetual licenses depending on the size of your team, your project needs, and the number of locations. Each license type comes with email support.
  • Lite License: This license costs $799 and supports one developer, one location, and one project.
  • Plus License: Supporting three developers, three locations, and three projects, this is the next step up from the lite license and costs $1,199. The Plus license offers chat support and phone support in addition to basic email support.
  • Professional License: This license is suitable for larger teams, supporting ten developers, ten locations, and ten projects for $2,399. It offers the same contact support channels as the previous tiers but also offers screen-sharing support.
  • Royalty-free redistribution: IronPDF's licensing also offers royalty-free redistribution coverage for an extra $2,399.
  • Uninterrupted product support: IronPDF offers access to ongoing product updates, security feature upgrades, and support from their engineering team for either $999/year or a one-time purchase of $1,999 for a 5-year coverage.
  • Iron Suite: For $1,498, you get access to all Iron Software products including IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint, and IronWebScraper.

IronPDF pricing comparison showing three perpetual license tiers (Lite, Plus, Professional) ranging from $749-$2,999, with a bundle promotion for Iron Suite offering 9 products for the price of 2

How Does iTextPdf Handle Licensing?

  • AGPL License: The iTextPDF Core library is open source under the AGPL license, which is free to use under conditions. Developers must release any modifications under the same license.
  • Commercial License: For developers not meeting AGPL conditions, iTextPDF offers commercial licensing through a quote-based model.

For licensing upgrades and transitions, visit IronPDF licensing upgrades. The license key application guide helps with implementation, and license key configuration provides deployment options. For troubleshooting licensing issues, see unable to connect to licensing server and licensing extensions.

What Documentation and Support Do IronPDF and iTextPdf Offer?

  • Comprehensive Documentation: Extensive and user-friendly documentation covering all the features it has to offer.
  • 24/5 Support: Active engineer support is available.
  • Video Tutorials: Step-by-step video guides are available on YouTube.
  • Community Forum: Engaged community for additional support.
  • Regular Updates: Monthly product updates to ensure the latest features and security patches.

  • Complete Documentation: Extensive, user-friendly documentation covering all features
  • 24/5 Support: Active engineering support available
  • Video Tutorials: Step-by-step video guides on YouTube
  • Community Forum: Engaged community for additional support through Stack Overflow and GitHub
  • Regular Updates: Monthly product updates ensure latest features and security patches
  • Code Examples: Extensive code example library with practical implementations
  • Troubleshooting Guides: Detailed guides for quick troubleshooting and platform-specific issues

For detailed troubleshooting, IronPDF provides guides for common issues like AWS deployment, Azure configuration, memory management, Docker integration, IIS setup, and performance optimization. Platform-specific guides cover Windows deployment, Linux configuration, and macOS support. Additional resources include engineering request guidance, Azure log management, AWS log files, and security CVE information.

  • Documentation: The iText PDF documentation thoroughly covers available features.
  • Examples and Tutorials: Code examples and tutorials help developers get started.
  • GitHub Community: Developers can report issues, submit pull requests, and interact with the iTextPDF team.
  • Regular Updates: iTextPDF provides frequent updates and improvements.

For more details on IronPDF documentation and support, visit IronPDF Documentation and the IronSoftware YouTube Channel. Explore how-to guides for specific features, API reference for detailed implementation, and tutorials for complete learning. The VB.NET PDF tutorial and F# PDF library guide provide language-specific resources. For modern application frameworks, explore Blazor tutorial, MAUI PDF viewing, and XAML to PDF conversion.## Which PDF Library Should Senior .NET Developers Choose?

In the field of PDF manipulation tools for .NET, both IronPDF and iTextPdf offer valuable solutions for developers. IronPDF is notable for its straightforward integration across .NET platforms and user-friendly features like DOCX to PDF conversion without external dependencies. For advanced rendering needs, IronPDF supports JavaScript execution, WebGL support, and custom render delays for dynamic content. The library also includes JavaScript message listeners and custom JavaScript execution for interactive PDFs. For handling complex rendering scenarios, explore network idle waiting, render delay configuration, and initial render optimization. In contrast, iTextPdf is known for its versatility and rich features, remaining effective, especially when combined with other tools, though it requires additional dependencies for DOCX conversion.

For performance improvements, IronPDF offers async processing, parallel generation, and multi-threading support to efficiently handle high-volume PDF operations. The library also provides advanced features like PDF compression, linearization for fast web viewing, and PDF/A compliance for archival requirements. Additional enterprise features include PDF/A-3 with ZUGFeRD support for e-invoicing, PDF/UA compliance for accessibility, and PDF version control. For cloud deployments, IronPDF offers remote engine options, Docker container support, and a native vs remote engine comparison.

Ultimately, choosing between IronPDF and iTextPdf depends on the project's specific needs, licensing preferences, and required support level. Both libraries provide reliable ways to simplify PDF workflows in .NET applications. For developers prioritizing modern web standards and ease of use, IronPDF's Chrome-based rendering and complete API make it an excellent choice. The library's creating PDFs, converting PDFs, and organizing PDFs tutorials provide thorough guidance. For specialized document handling, explore PDF reports generation, reading PDF text, and PDF to HTML conversion. Additional capabilities include paper printing, network printer support, rasterization to images, and Base64 conversion. Those requiring AGPL licensing or extensive low-level PDF manipulation might find iTextPdf more suitable.

For further comparison with other PDF libraries, explore Aspose vs IronPDF, Apryse vs IronPDF, QuestPDF vs IronPDF, and Syncfusion vs IronPDF to make an informed decision for your PDF development needs. For deployment guidance, review IronPDF installer options, software installer integration, and deployment best practices. The library's milestones highlight ongoing improvements, including Chrome rendering enhancements, compatibility updates, PDFium DOM updates, and stability improvements.

Please noteiTextPdf is a registered trademark of its respective owner. This site is not affiliated with, endorsed by, or sponsored by iTextPdf. All product names, logos, and brands are property of their respective owners. Comparisons are for informational purposes only and reflect publicly available information at the time of writing.

Frequently Asked Questions

How can I convert HTML to PDF in C#?

You can use IronPDF's RenderHtmlAsPdf method to convert HTML strings into PDFs. You can also convert HTML files into PDFs using RenderHtmlFileAsPdf.

What features does IronPDF offer for PDF creation and manipulation?

IronPDF provides features such as HTML to PDF conversion, PDF merging, encryption, digital signatures, watermarking, and DOCX to PDF conversion.

How does IronPDF simplify PDF signing?

IronPDF allows you to apply digital signatures to PDF files using X509 certificates, providing a straightforward method to secure your documents.

Can IronPDF be used on different operating systems?

Yes, IronPDF supports cross-platform compatibility. It works seamlessly on Windows, Linux, and Mac, and is compatible with .NET Core, .NET Standard, and .NET Framework.

How does iTextPDF differ from IronPDF in terms of document encryption?

While iTextPDF provides detailed setup for encryption standards, IronPDF simplifies the process with built-in encryption methods that are easy to implement.

What support resources are available for IronPDF users?

IronPDF offers extensive support through comprehensive documentation, video tutorials, a community forum, and 24/5 engineer support.

How does IronPDF handle DOCX to PDF conversion?

IronPDF includes native DOCX to PDF conversion capabilities, allowing for seamless integration without the need for additional libraries.

What licensing options are available for IronPDF?

IronPDF offers perpetual licenses with different tiers such as Lite, Plus, and Professional, along with options for royalty-free redistribution and continued product support.

How can I apply watermarks to PDFs using IronPDF?

IronPDF allows you to apply watermarks with ease using HTML and CSS, enabling you to add text or image watermarks quickly and customize them as needed.

What makes IronPDF suitable for developers working with .NET applications?

IronPDF is designed to be user-friendly with a simplified API, making it efficient for tasks like HTML to PDF conversion, encryption, and digital signing, ideal for .NET developers.

Curtis Chau
Technical Writer

Curtis Chau holds a Bachelor’s degree in Computer Science (Carleton University) and specializes in front-end development with expertise in Node.js, TypeScript, JavaScript, and React. Passionate about crafting intuitive and aesthetically pleasing user interfaces, Curtis enjoys working with modern frameworks and creating well-structured, visually appealing manuals.

...

Read More
iText Logo

Tired of expensive renewals and outdated product updates?

Make the easy switch from iText with our engineering migration support and a better deal.

IronPDF Logo