Ir para o conteúdo do rodapé
COMPARAçãO DE PRODUTOS

IronPDF vs iTextPdf: Comparação completa de bibliotecas PDF para .NET

Full Comparison

Looking for a detailed feature-by-feature breakdown? See how IronPDF stacks up against Itext on pricing, HTML support, and licensing.

View Full Comparison

O IronPDF se destaca por seu mecanismo de renderização HTML baseado no Chromium, oferecendo suporte completo a CSS3 e JavaScript , além de conversão integrada para DOCX. Em contrapartida, o iTextPdf oferece recursos empresariais avançados com licenciamento AGPL ou comercial, mas requer dependências externas para padrões web modernos e conversão de documentos.

Para desenvolvedores que trabalham com PDFs, ter uma biblioteca confiável para geração e manipulação de PDFs é essencial. No ecossistema .NET , duas bibliotecas PDF populares se destacam — IronPDF e iTextPdf — cada uma oferecendo ferramentas eficazes para criar, editar e gerenciar documentos PDF. Este artigo oferece uma comparação detalhada dessas bibliotecas com base em seus recursos, qualidade da documentação e políticas de preços.

O que são IronPDF e iTextPDF?

Como o IronPDF simplifica o desenvolvimento de PDFs?

IronPDF é uma biblioteca .NET confiável para gerenciamento de PDFs, compatível com vários ambientes .NET (Core 8, 7, 6, Framework e outros). Oferece um conjunto completo de funcionalidades , incluindo conversão de HTML para PDF , fusão de PDFs , criptografia e assinaturas digitais . A documentação do IronPDF é direta e os usuários têm acesso a um suporte técnico confiável. Os desenvolvedores frequentemente encontram soluções para problemas comuns por meio de discussões no Stack Overflow e outras plataformas de compartilhamento de código-fonte. A biblioteca fornece referências de API para orientações detalhadas de implementação e oferece suporte a métodos avançados de instalação por meio de pacotes NuGet . Para uma implementação rápida, explore o guia de início rápido e a visão geral da instalação para começar rapidamente.

O que torna o iTextPdf adequado para aplicações empresariais?

iTextPdf é uma biblioteca PDF avançada for Java e .NET (C#), focada no processamento de documentos em nível empresarial. Disponível sob licenças AGPL e comerciais, oferece flexibilidade para atender a diversos requisitos de projeto. O iTextPdf é altamente personalizável, o que o torna ideal para tarefas complexas em PDF, como criptografia de documentos, assinatura digital e criação de formulários. A biblioteca tem sido um elemento essencial em ambientes corporativos que exigem amplas capacidades de manipulação de PDF e conformidade com os padrões PDF/A para fins de arquivamento. Organizações que precisam estar em conformidade com a Seção 508 de acessibilidade geralmente optam por soluções de nível empresarial que oferecem suporte a padrões universais de acessibilidade.

Quais plataformas o IronPDF e o iTextPDF suportam?

Tanto o IronPDF quanto o iTextPdf oferecem suporte à funcionalidade multiplataforma, tornando-os versáteis para diversas necessidades de aplicativos dentro do .NET. Segue abaixo um resumo da compatibilidade de cada biblioteca.

  • Versões do .NET : Compatível com .NET Core (8, 7, 6, 5, 3.1+), .NET Standard (2.0+) e .NET Framework (4.6.2+).
  • Ambientes de aplicativos: Funciona perfeitamente em ambientes Windows, Linux, Mac, Docker, Azure e AWS.
  • IDEs compatíveis: Funciona bem com o Microsoft Visual Studio e o JetBrains Rider & ReSharper.
  • Sistemas Operacionais e Processadores: Compatível com Windows, Mac, Linux, x64, x86 e ARM.

  • Versões do .NET : Compatível com .NET Core 8, 7, 6, 5, 3.1+, .NET Standard 2.0+, .NET Framework 4.6.2+
  • Ambientes de aplicação : Funciona em Windows, Linux, Mac, Docker, Azure e AWS
  • IDEs suportados : Microsoft Visual Studio e Rider &
  • Sistemas Operacionais e Processadores : Windows, Mac, Linux, x64, x86, ARM
  • Plataformas móveis : suporte para Android através do MAUI
  • Suporte a contêineres : Implantação remota de contêineres para arquiteturas escaláveis

  • Versões do .NET : Compatível com .NET Core (2.x, 3.x), .NET Framework (4.6.1+) e .NET 5+.
  • Ambientes de aplicativos: Compatível com Windows, macOS, Linux e Docker.

Onde o iTextPdf pode ser implementado?

  • Versões do .NET : Compatível com .NET Core 2.x, 3.x, .NET Framework 4.6.1+ e .NET 5+.
  • Ambientes de aplicativos : Compatível com Windows, macOS, Linux e Docker
  • Implantações corporativas : Otimizado para ambientes de servidor com licenças AGPL ou comerciais.

Quais são as principais características do IronPDF em comparação com o iTextPDF?

A seguir, uma comparação detalhada dos principais recursos oferecidos por cada biblioteca.

Quais são as funcionalidades oferecidas IronPDF ?

  • Conversão de HTML para PDF: Suporta HTML, CSS, JavaScript e imagens.
  • Manipulação de PDF: Divida, mescle e edite documentos PDF.
  • Segurança: Recursos de criptografia e descriptografia de PDF.
  • Edição: Permite anotações, marcadores e esquemas.
  • Modelos: Aplique cabeçalhos, rodapés e números de página.
  • Marca d'água: Suporta marcas d'água de texto e imagem usando HTML/CSS para controle.
  • Carimbo em PDF: Adicione carimbos de imagens e texto em arquivos PDF.

Para obter mais informações sobre os recursos do IronPDF, visite a página de recursos do IronPDF . A biblioteca também oferece suporte à criação de PDFs a partir de diversas fontes, à conversão de PDFs entre formatos e à organização de PDFs com ferramentas profissionais.

Quais são os recursos empresariais oferecidos pelo iTextPdf?

  • Criação de PDF: Permite criar documentos PDF do zero.
  • Formulários: Oferece criação e edição de formulários em PDF.
  • Assinaturas digitais: Assine documentos PDF.
  • Compressão: Otimiza o tamanho dos arquivos PDF.
  • Extração de conteúdo: Extrai texto e imagens de PDFs.
  • Personalização: Alta capacidade de personalização para projetos complexos.

Como as duas bibliotecas lidam com a conversão de HTML para PDF?

Ambas as bibliotecas suportam a conversão de HTML para PDF, embora difiram na abordagem e na facilidade de uso. O IronPDF utiliza o mecanismo de renderização Chromium para precisão perfeita em cada pixel , enquanto o iTextPdf usa seu complemento pdfHTML com suporte a CSS mais limitado. O IronPDF suporta arquivos HTML , strings HTML e URLs como fontes de entrada, incluindo renderização completa de JavaScript . Para layouts complexos, o IronPDF lida com tipos de mídia CSS para tela e impressão e suporta margens personalizadas para um controle preciso.

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

' Instantiate the renderer
Dim renderer As New ChromePdfRenderer()

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

' Advanced example with external assets
Dim 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
Dim 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);
        }
    }
}
Imports iText.Html2pdf
Imports System.IO

Public Class HtmlToPdf
	Public Shared Sub ConvertHtmlToPdf()
		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
End Class
$vbLabelText   $csharpLabel

O IronPDF oferece uma abordagem direta para a conversão de HTML em PDF , com suporte para HTML, CSS e JavaScript. Ele converte diretamente de strings HTML ou inclui recursos com um caminho base opcional. A biblioteca também oferece suporte a arquivos HTML ZIP para projetos complexos e CSS responsivo para melhor renderização. Para conteúdo dinâmico, o IronPDF oferece opções de execução de JavaScript e atraso de renderização para garantir o carregamento completo da página. Recursos adicionais de renderização incluem controle da área de visualização e tamanhos de papel personalizados . O iTextPdf requer mais configuração, focando principalmente na conversão baseada em arquivos e com suporte limitado aos padrões modernos da web.

Qual biblioteca oferece melhor criptografia de PDF?

A criptografia é essencial quando a segurança é primordial. Eis como cada biblioteca lida com isso. O IronPDF oferece recursos de segurança completos, incluindo criptografia AES e gerenciamento de permissões . A biblioteca oferece suporte ao gerenciamento e à higienização de metadados para remover conteúdo potencialmente prejudicial.

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

' Load an encrypted PDF or create a new one
Dim 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();
    }
}
Imports iText.Kernel.Pdf
Imports System.Text

Public Class EncryptPdf
	Public Shared ReadOnly DEST As String = "encrypt_pdf.pdf"
	Public Shared ReadOnly OWNER_PASSWORD As String = "World"
	Public Shared ReadOnly USER_PASSWORD As String = "Hello"

	Protected Sub ManipulatePdf(ByVal dest As String)
		Dim document As 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()
	End Sub
End Class
$vbLabelText   $csharpLabel

O IronPDF oferece criptografia descomplicada e controle sobre as permissões de documentos . A biblioteca oferece suporte a registro personalizado para auditoria de segurança e gerenciamento de chaves de licença para implantações corporativas. Para maior segurança, o IronPDF oferece opções de controle de versão de arquivos PDF e configuração de registro . O iTextPdf requer uma configuração detalhada com foco nos padrões de criptografia. Para necessidades de segurança avançadas, o IronPDF também oferece suporte a assinaturas digitais com HSM para requisitos corporativos e autenticação Kerberos para ambientes seguros.

Como o IronPDF e o iTextPdf lidam com a redação de conteúdo?

A ocultação de informações em arquivos PDF é essencial para a privacidade e a segurança. Veja como cada biblioteca oferece suporte a esse recurso. O IronPDF oferece recursos completos de redação e higienização de PDFs para remover conteúdo potencialmente prejudicial. A biblioteca também oferece a função de achatamento de PDF para converter formulários e anotações em conteúdo estático.

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

Dim pdf As PdfDocument = 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();
        }
    }
}
Imports iText.Kernel.Pdf
Imports iText.Kernel.Colors

' Define areas to redact on each page
Private rectanglesToRedact() As Rectangle = { New Rectangle(100, 100, 200, 50) }

' Draw black rectangles to cover sensitive areas
Using pdfDoc As New PdfDocument(New PdfReader("input.pdf"), New PdfWriter("output_redacted.pdf"))
	Dim pageNum As Integer = 1
	Do While pageNum <= pdfDoc.GetNumberOfPages()
		Dim page As PdfPage = pdfDoc.GetPage(pageNum)
		Dim canvas As New PdfCanvas(page)
		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
$vbLabelText   $csharpLabel

O IronPDF oferece uma ferramenta de redação prática que oculta facilmente textos confidenciais em todas as páginas. A biblioteca também oferece recursos de substituição de texto para atualizar o conteúdo do documento e acesso ao DOM do PDF para manipulação detalhada do conteúdo. Para extrair conteúdo antes da redação, utilize extração de texto e imagem ou analise arquivos PDF programaticamente. O iTextPdf requer a definição e aplicação manual de retângulos pretos para cobrir áreas sensíveis. Para uma higienização completa de documentos, o IronPDF também oferece recursos de higienização de PDF para remover conteúdo potencialmente malicioso e o recurso de achatamento de PDF para converter elementos interativos em conteúdo estático.

Qual biblioteca facilita a criação de assinaturas digitais?

Automatizar a assinatura de documentos PDF pode economizar um tempo considerável. Veja a seguir uma comparação de como o IronPDF e o iTextPdf lidam com a assinatura digital. O IronPDF suporta vários métodos de assinatura , incluindo assinaturas baseadas em certificados e integração com HSM . A biblioteca também mantém um histórico de revisões para rastrear alterações em documentos e a validade das assinaturas.

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");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates

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

' Create PdfSignature object
Dim sig As New PdfSignature(cert) With {
    .SigningContact = "support@ironsoftware.com",
    .SigningLocation = "Chicago, USA",
    .SigningReason = "Document Approval"
}

' Sign PDF document
Dim pdf As PdfDocument = PdfDocument.FromFile("document.pdf")
pdf.Sign(sig)

' Apply timestamp
Dim timestampedSig As New PdfSignature(cert) With {
    .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}");
        }
    }
}
Imports System
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Signatures
Imports Org.BouncyCastle.Crypto
Imports Org.BouncyCastle.Pkcs
Imports Org.BouncyCastle.X509

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

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

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

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

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

Ao aplicar assinaturas digitais a arquivos PDF, o IronPDF oferece uma abordagem simples e eficiente usando certificados X509. Sua API simplifica a integração sem sacrificar o controle de segurança. O IronPDF também oferece suporte ao rastreamento do histórico de revisões para manter a integridade do documento e a vários tipos de assinatura , incluindo assinaturas visuais. A biblioteca integra-se com dispositivos HSM para maior segurança e oferece suporte à validação de certificados . Para fluxos de trabalho de documentos seguros, explore os recursos de assinatura e proteção de PDFs . O processo de assinatura do iTextPdf oferece mais opções de personalização, mas requer uma configuração complexa. Os desenvolvedores obtêm controle granular, mas enfrentam uma curva de aprendizado mais acentuada no gerenciamento de certificados e na configuração de assinaturas.

Como as duas bibliotecas aplicam marcas d'água em PDFs?

A inclusão de marcas d'água em PDFs é essencial para a identidade visual da marca, a confidencialidade e a proteção dos direitos autorais. Veja como o IronPDF e o iTextPdf aplicam marcas d'água a documentos PDF. O IronPDF oferece opções flexíveis de marca d'água com suporte a HTML/CSS . A biblioteca também permite camadas de fundo e de primeiro plano para sobreposições complexas.

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

' Stamps a Watermark onto a new or existing PDF
Dim renderer As New ChromePdfRenderer()

Dim 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
Dim watermarkHtml As String = "
<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();
    }
}
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()

		Dim gs1 As New PdfExtGState()
		gs1.SetFillOpacity(0.5F)
		over.SetExtGState(gs1)
		Dim canvasWatermark3 As Canvas = (New Canvas(over, pdfDoc.GetDefaultPageSize())).ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0)
		canvasWatermark3.Close()
		over.RestoreState()

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

A API do IronPDF permite a aplicação rápida de marcas d'água com flexibilidade de personalização em HTML e CSS. Essa abordagem cria marcas d'água visualmente distintas sem configurações complexas. Para maior controle, o IronPDF oferece suporte a camadas de fundo e primeiro plano para sobreposições complexas de documentos, múltiplas marcas d'água e posicionamento personalizado . A biblioteca também oferece integração de código de barras para fins de rastreamento e suporte a gráficos SVG para marcas d'água escaláveis. Para necessidades mais avançadas, explore os recursos de transformação de páginas PDF e desenho de linhas e retângulos . O iTextPdf permite a colocação de marcas d'água altamente personalizáveis ​​por meio de opções de configuração detalhadas, embora exija um esforço de codificação mais extenso. ### Qual biblioteca oferece melhor carimbo de imagem e texto?

Inserir conteúdo em PDFs é semelhante a adicionar marcas d'água, mas concentra-se na inclusão de elementos específicos, como imagens ou texto, para fins de rotulagem ou branding. Veja como o IronPDF e o iTextPdf executam essa tarefa. O IronPDF oferece amplas funcionalidades de estampagem com opções de posicionamento flexíveis . A biblioteca também permite desenhar texto e imagens bitmap diretamente em páginas PDF.

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");
Imports IronPdf
Imports IronPdf.Editing

Dim renderer As New ChromePdfRenderer()

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

' Create text stamper
Dim textStamper As New TextStamper() With {
    .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
Dim htmlStamper As New HtmlStamper() With {
    .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
Dim imageStamper As New ImageStamper(New Uri("___PROTECTED_URL_247___")) With {
    .VerticalAlignment = VerticalAlignment.Top,
    .HorizontalAlignment = HorizontalAlignment.Left,
    .MaxWidth = New Length(150),
    .MaxHeight = New Length(150)
}

' Stamp the image stamper on specific pages
pdf.ApplyStamp(imageStamper, {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();
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element

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

	Dim doc As New Document(pdfDoc)

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

	doc.Close()
End Sub
$vbLabelText   $csharpLabel

Os métodos de inserção de imagens e texto do IronPDF são simples e versáteis, permitindo a fácil adição de conteúdo personalizado ou etiquetas às páginas PDF. A API utiliza elementos de estilo HTML/CSS familiares para facilitar a personalização. Para necessidades complexas de carimbo, o IronPDF suporta vários carimbos de forma eficiente , integração com o Google Fonts e fontes da web . A biblioteca também permite desenhar texto e imagens bitmap diretamente em PDFs e oferece suporte à impressão de códigos de barras para rastreamento de estoque. Para um controle preciso, explore os recursos de tradução de objetos PDF e dimensionamento de objetos PDF . O iTextPdf também oferece recursos de inserção de imagens e texto, embora a configuração exija mais ajustes manuais e conhecimento da estrutura de layout de PDF. A capacidade de manipular o conteúdo diretamente nas páginas PDF oferece ferramentas de carimbo confiáveis, embora a configuração do iTextPdf exija mais esforço.

Ambas as bibliotecas conseguem converter arquivos DOCX para PDF?

Em alguns projetos, é necessário converter arquivos DOCX para o formato PDF. A seguir, apresentamos uma comparação de como o IronPDF e o iTextPdf lidam com essa tarefa, destacando suas diferenças. O IronPDF oferece conversão nativa de DOCX para PDF, além de suporte para outros formatos, incluindo documentos RTF .

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

' Instantiate Renderer
Dim renderer As New DocxToPdfRenderer()

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

' Advanced rendering with options
renderer.RenderingOptions.MarginTop = 50
renderer.RenderingOptions.MarginBottom = 50

' Handle mail merge
Dim mergeFields As New Dictionary(Of String, String) From {
    {"Name", "John Doe"},
    {"Date", DateTime.Now.ToShortDateString()}
}
Dim mergedPdf As PdfDocument = renderer.RenderDocxAsPdf("template.docx", mergeFields)

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

iTextPdf

Diferentemente do IronPDF, o iTextPdf não possui suporte integrado para conversão de DOCX para PDF. Para realizar essa conversão, os desenvolvedores precisam recorrer a bibliotecas de terceiros, como DocX ou Aspose.Words, para primeiro converter o arquivo DOCX para um formato compatível com PDF e, em seguida, processá-lo ou modificá-lo usando o iTextPdf.

O IronPDF oferece uma solução simples e integrada para conversão de DOCX para PDF , eliminando a necessidade de bibliotecas adicionais. Isso o torna altamente adequado para desenvolvedores que precisam de conversão rápida e integrada. O IronPDF também oferece suporte à conversão de RTF para PDF para formatos de documentos legados, de Markdown para PDF para fluxos de trabalho de documentação, de XML para PDF para dados estruturados e de imagem para PDF, incluindo suporte a TIFF com vários quadros . Para um processamento de documentos mais eficiente, explore os recursos de mala direta e geração de sumário . Em contrapartida, o iTextPdf depende de bibliotecas externas para a conversão de DOCX, exigindo configuração e dependências adicionais, o que aumenta a complexidade do projeto.

Quão bem o IronPDF e o iTextPdf suportam o Bootstrap e o CSS moderno?

Ao gerar PDFs a partir de aplicações web com estilo Bootstrap, o suporte completo ao framework garante a consistência do design sem a necessidade de arquivos CSS paralelos ou modificações de layout. Compreender as quebras de página em HTML para PDF e as considerações de design responsivo é crucial para resultados profissionais. Para obter melhores resultados, use tipos de mídia CSS e atrasos de renderização personalizados .

O IronPDF é compatível com frameworks CSS modernos?

O mecanismo Chromium do IronPDF oferece suporte completo para: Bootstrap 5: Layouts flexbox completos, CSS Grid, classes utilitárias, todos os componentes Bootstrap 4: Sistemas de cartões completos, navegação, utilitários flexíveis, design responsivo

  • Tailwind CSS: Todas as classes utilitárias com renderização precisa para cada navegador
  • Foundation: Sistema de grade completo e biblioteca de componentes CSS3 moderno: Flexbox, CSS Grid, propriedades personalizadas, animações, transições

Validação no mundo real: o IronPDF renderiza a página inicial do Bootstrap e todos os exemplos oficiais com precisão perfeita em cada pixel, utilizando seus recursos de CSS responsivo . A biblioteca também oferece suporte a tamanhos de papel personalizados e controle de viewport para uma renderização de layout aprimorada. Para layouts complexos, utilize as opções de renderização e as configurações de orientação da página . A biblioteca suporta idiomas internacionais e UTF-8 para aplicações globais.

Quais são as limitações de CSS do iTextPdf?

O iTextPDF utiliza pdfHTML com suporte seletivo a CSS3:

  • Suporte limitado ao Flexbox: Adicionado na versão 7.1.15, mas incompleto.
  • Sem CSS Grid: Layouts Bootstrap baseados em grade não são suportados
  • Limitações do Bootstrap 3: Os componentes modernos do Bootstrap 4/5 exigem soluções alternativas.
  • Conversão manual de layouts: layouts complexos geralmente exigem código específico para PDF.

A documentação do iTextPdf afirma explicitamente que recursos avançados de CSS podem não ser renderizados como esperado, exigindo que os desenvolvedores testem cada componente do Bootstrap e, muitas vezes, criem layouts simplificados.

Impacto no desenvolvimento: As equipes precisam manter um código de layout separado para a geração de PDFs ou testar e modificar extensivamente os componentes do Bootstrap, aumentando o tempo de desenvolvimento e reduzindo a consistência do design.

Para obter orientações completas sobre o framework Bootstrap e os recursos de renderização CSS3, consulte o Guia de CSS do Bootstrap e Flexbox . Os recursos adicionais incluem dicas de formatação perfeita em pixels , gerenciamento de fontes e soluções de espaçamento entre letras para uma tipografia consistente. Para aplicações web, explore os recursos de conversão de ASPX para PDF e geração de PDFs com Angular.js .

O que os exemplos de código nos dizem sobre IronPDF vs. iTextPdf?

Tabela comparativa de recursos entre as bibliotecas IronPDF e iTextPDF, mostrando as capacidades de manipulação de PDF, incluindo conversão para HTML, criptografia, redação, assinaturas, marcas d'água, carimbos e suporte a DOCX.

Para exemplos mais detalhados, visite os exemplos do IronPDF ou explore a biblioteca de exemplos de código . A seção de demonstrações fornece exemplos interativos das funcionalidades do IronPDF. Recursos adicionais incluem geração paralela de PDFs , processamento multithread e exemplos assíncronos para aplicações de alto desempenho.

Como o IronPDF e o iTextPDF se comparam em termos de preços e licenciamento?

Quais são as opções de preços do IronPDF?

O IronPDF oferece diferentes níveis e recursos adicionais para a compra de licenças. Os desenvolvedores também podem adquirir o Iron Suite , que dá acesso a todos os produtos da Iron Software pelo preço de dois. Se você ainda não está pronto para comprar uma licença, o IronPDF oferece um período de avaliação gratuito com todos os recursos para que você possa avaliá-los. A página de licenciamento fornece detalhes completos sobre as opções disponíveis. Para implantações empresariais, explore o gerenciamento de chaves de licença e a configuração programática de chaves de licença .

  • Licenças perpétuas: Oferecemos uma variedade de licenças perpétuas, dependendo do tamanho da sua equipe, das necessidades do seu projeto e do número de locais. Cada tipo de licença inclui suporte por e-mail.
  • Licença Lite: Esta licença custa $799 e suporta um desenvolvedor, um local e um projeto.
  • Licença Plus: Com suporte para três desenvolvedores, três locais e três projetos, esta é a próxima etapa em relação à licença Lite e custa $1,199. A licença Plus oferece suporte por chat e por telefone, além do suporte básico por e-mail.
  • Licença Profissional: Esta licença é adequada para equipes maiores, suportando dez desenvolvedores, dez locais e dez projetos para $2,399. Oferece os mesmos canais de suporte ao cliente que os planos anteriores, mas também oferece suporte para compartilhamento de tela.
  • Redistribuição livre de royalties: O licenciamento do IronPDF também oferece cobertura de redistribuição livre de royalties por um adicional $2,399.
  • Suporte ininterrupto ao produto: A IronPDF oferece acesso a atualizações contínuas do produto, melhorias nos recursos de segurança e suporte da sua equipe de engenharia por US$ 999/ano ou por uma compra única de US$ 1.999 para uma cobertura de 5 anos.
  • Iron Suite: Por $1,498, você terá acesso a todos os produtos da Iron Software , incluindo IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint e 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

Como o iTextPdf lida com o licenciamento?

  • Licença AGPL: A biblioteca iTextPDF Core é de código aberto sob a licença AGPL, que permite seu uso gratuito sob certas condições. Os desenvolvedores devem lançar quaisquer modificações sob a mesma licença.
  • Licença Comercial: Para desenvolvedores que não atendem às condições da AGPL, o iTextPDF oferece licenciamento comercial por meio de um modelo baseado em orçamento.

Para atualizações e transições de licença, visite a página de atualizações de licença do IronPDF . O guia de aplicação da chave de licença auxilia na implementação, e a configuração da chave de licença fornece opções de implantação. Para solucionar problemas de licenciamento, consulte Não foi possível conectar-se ao servidor de licenciamento e extensões de licenciamento .

Que documentação e suporte o IronPDF e o iTextPDF oferecem?

  • Documentação completa: Documentação extensa e fácil de usar, que abrange todos os recursos oferecidos.
  • Suporte 24 horas por dia, 5 dias por semana: Suporte técnico ativo disponível.
  • Tutoriais em vídeo: Guias em vídeo passo a passo estão disponíveis no YouTube.
  • Fórum da Comunidade: Comunidade engajada para apoio adicional.
  • Atualizações regulares: Atualizações mensais do produto para garantir os recursos mais recentes e os patches de segurança.

  • Documentação completa : Documentação extensa e fácil de usar, abrangendo todas as funcionalidades.
  • Suporte 24 horas por dia, 5 dias por semana : Suporte técnico ativo disponível.
  • Tutoriais em vídeo : Guias em vídeo passo a passo sobre YouTube
  • Fórum da Comunidade : Comunidade engajada para suporte adicional através do Stack Overflow e do GitHub.
  • Atualizações regulares : As atualizações mensais do produto garantem os recursos mais recentes e os patches de segurança mais recentes.
  • Exemplos de código : Ampla biblioteca de exemplos de código com implementações práticas.
  • Guias de Solução de Problemas : Guias detalhados para solução rápida de problemas e questões específicas da plataforma.

Para uma resolução de problemas detalhada, o IronPDF fornece guias para problemas comuns, como implantação na AWS , configuração no Azure , gerenciamento de memória , integração com o Docker , configuração do IIS e otimização de desempenho . Os guias específicos para cada plataforma abrangem a implementação no Windows , a configuração no Linux e o suporte ao macOS . Recursos adicionais incluem orientações sobre solicitações de engenharia , gerenciamento de logs do Azure , arquivos de log da AWS e informações sobre vulnerabilidades de segurança (CVEs) .

  • Documentação: A documentação do iText PDF aborda detalhadamente os recursos disponíveis.
  • Exemplos e tutoriais: Exemplos de código e tutoriais ajudam os desenvolvedores a começar.
  • Comunidade GitHub : Os desenvolvedores podem relatar problemas, enviar solicitações de pull e interagir com a equipe do iTextPDF.
  • Atualizações regulares: o iTextPDF oferece atualizações e melhorias frequentes.

Para obter mais detalhes sobre a documentação e o suporte do IronPDF , visite a página de Documentação do IronPDF e o canal da IronSoftware no YouTube . Explore guias práticos para recursos específicos, a referência da API para implementação detalhada e tutoriais para aprendizado completo. O tutorial de PDF em VB .NET e o guia da biblioteca de PDF em F# fornecem recursos específicos para cada linguagem. Para frameworks de aplicações modernas, explore o tutorial do Blazor , a visualização de PDFs com MAUI e a conversão de XAML para PDF . ## Qual biblioteca de PDF os desenvolvedores .NET seniores devem escolher?

No campo das ferramentas de manipulação de PDF for .NET, tanto o IronPDF quanto o iTextPdf oferecem soluções valiosas para desenvolvedores. O IronPDF destaca-se pela sua integração direta em plataformas .NET e por funcionalidades fáceis de usar, como a conversão de DOCX para PDF sem dependências externas. Para necessidades avançadas de renderização, o IronPDF oferece suporte à execução de JavaScript , WebGL e atrasos de renderização personalizados para conteúdo dinâmico. A biblioteca também inclui ouvintes de mensagens JavaScript e execução personalizada de JavaScript para PDFs interativos. Para lidar com cenários de renderização complexos, explore os recursos de espera ociosa na rede , configuração de atraso de renderização e otimização inicial de renderização . Em contrapartida, o iTextPdf é conhecido por sua versatilidade e recursos avançados, mantendo-se eficaz, especialmente quando combinado com outras ferramentas, embora exija dependências adicionais para a conversão para DOCX.

Para melhorar o desempenho, o IronPDF oferece processamento assíncrono , geração paralela e suporte a multithreading para lidar de forma eficiente com operações de PDF de alto volume. A biblioteca também oferece recursos avançados como compressão de PDF , linearização para visualização rápida na web e conformidade com PDF/A para requisitos de arquivamento. Funcionalidades adicionais para empresas incluem PDF/A-3 com suporte a ZUGFeRD para faturamento eletrônico, conformidade com PDF/UA para acessibilidade e controle de versão de PDF . Para implantações em nuvem, o IronPDF oferece opções de mecanismo remoto , suporte a contêineres Docker e uma comparação entre mecanismos nativos e remotos .

Em última análise, a escolha entre IronPDF e iTextPdf depende das necessidades específicas do projeto, das preferências de licenciamento e do nível de suporte necessário. Ambas as bibliotecas oferecem maneiras confiáveis ​​de simplificar os fluxos de trabalho de PDF em aplicativos .NET . Para desenvolvedores que priorizam padrões web modernos e facilidade de uso, a renderização baseada no Chrome e a API completa do IronPDF o tornam uma excelente escolha. Os tutoriais da biblioteca sobre criação , conversão e organização de PDFs oferecem orientações detalhadas. Para o processamento especializado de documentos, explore a geração de relatórios em PDF , a leitura de texto em PDF e a conversão de PDF para HTML . Funcionalidades adicionais incluem impressão em papel , suporte para impressoras em rede , rasterização para imagens e conversão para Base64 . Para quem precisa de licença AGPL ou manipulação complexa de PDFs em baixo nível, o iTextPdf pode ser mais adequado.

Para uma comparação mais aprofundada com outras bibliotecas de PDF, explore Aspose vs IronPDF , Apryse vs IronPDF , QuestPDF vs IronPDF e Syncfusion vs IronPDF para tomar uma decisão informada para suas necessidades de desenvolvimento de PDF. Para obter orientações sobre a implementação, consulte as opções do instalador IronPDF , a integração do instalador de software e as práticas recomendadas de implementação . Os marcos da biblioteca destacam melhorias contínuas, incluindo aprimoramentos de renderização no Chrome , atualizações de compatibilidade , atualizações do DOM do PDFium e melhorias de estabilidade .

ObserveiTextPdf é uma marca registrada de seu respectivo proprietário. Este site não é afiliado, endossado ou patrocinado pelo iTextPdf. Todos os nomes de produtos, logotipos e marcas são propriedade de seus respectivos proprietários. As comparações são apenas para fins informativos e refletem informações disponíveis publicamente no momento da redação.

Perguntas frequentes

Como posso converter HTML para PDF em C#?

Você pode usar o método RenderHtmlAsPdf do IronPDF para converter strings HTML em PDFs. Você também pode converter arquivos HTML em PDFs usando o RenderHtmlFileAsPdf .

Quais recursos o IronPDF oferece para criação e manipulação de PDFs?

O IronPDF oferece recursos como conversão de HTML para PDF, mesclagem de PDFs, criptografia, assinaturas digitais, marcas d'água e conversão de DOCX para PDF.

Como o IronPDF simplifica a assinatura de PDFs?

O IronPDF permite aplicar assinaturas digitais a arquivos PDF usando certificados X509, oferecendo um método simples para proteger seus documentos.

O IronPDF pode ser usado em diferentes sistemas operacionais?

Sim, o IronPDF oferece compatibilidade multiplataforma. Ele funciona perfeitamente no Windows, Linux e Mac, e é compatível com .NET Core, .NET Standard e .NET Framework.

Como o iTextPDF difere do IronPDF em termos de criptografia de documentos?

Embora o iTextPDF ofereça uma configuração detalhada para padrões de criptografia, o IronPDF simplifica o processo com métodos de criptografia integrados e fáceis de implementar.

Que recursos de suporte estão disponíveis para usuários do IronPDF?

A IronPDF oferece amplo suporte por meio de documentação completa, tutoriais em vídeo, um fórum da comunidade e suporte técnico 24 horas por dia, 5 dias por semana.

Como o IronPDF realiza a conversão de DOCX para PDF?

O IronPDF inclui recursos nativos de conversão de DOCX para PDF, permitindo uma integração perfeita sem a necessidade de bibliotecas adicionais.

Quais são as opções de licenciamento disponíveis para o IronPDF?

A IronPDF oferece licenças perpétuas em diferentes níveis, como Lite, Plus e Professional, além de opções para redistribuição livre de royalties e suporte contínuo ao produto.

Como posso adicionar marcas d'água a PDFs usando o IronPDF?

O IronPDF permite aplicar marcas d'água com facilidade usando HTML e CSS, possibilitando adicionar marcas d'água de texto ou imagem rapidamente e personalizá-las conforme necessário.

O que torna o IronPDF adequado para desenvolvedores que trabalham com aplicativos .NET?

O IronPDF foi projetado para ser fácil de usar, com uma API simplificada, tornando-o eficiente para tarefas como conversão de HTML para PDF, criptografia e assinatura digital, ideal para desenvolvedores .NET.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

A PHP Error was encountered

Severity: Warning

Message: sprintf(): Too few arguments

Filename: competitors/dialog_competitor_banner.php

Line Number: 111

Backtrace:

File: /var/www/ironpdf.com/application/views/products/competitors/dialog_competitor_banner.php
Line: 111
Function: sprintf

File: /var/www/ironpdf.com/application/views/products/blog/main_post.php
Line: 196
Function: view

File: /var/www/ironpdf.com/application/views/products/blog/blog_post.php
Line: 24
Function: include

File: /var/www/ironpdf.com/application/views/products/blog/index.php
Line: 83
Function: include

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 88
Function: view

File: /var/www/ironpdf.com/application/libraries/Render.php
Line: 552
Function: view

File: /var/www/ironpdf.com/application/controllers/Products/Blog.php
Line: 77
Function: render_products_view

File: /var/www/ironpdf.com/index.php
Line: 292
Function: require_once

iText Logo

Cansado de renovações caras e atualizações de produtos desatualizadas?

IronPDF Logo

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim