Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

Une comparaison entre IronPDF et ITextPDF

Pour les développeurs travaillant avec des PDF, disposer d'une bibliothèque fiable pour la génération et la manipulation de PDF est essentiel. In the .NET ecosystem, two popular PDF libraries stand out – IronPDF and iTextPdf – each offering powerful tools to create, edit, and manage PDF documents. Cet article fournit une comparaison approfondie de ces bibliothèques basée sur les capacités des fonctionnalités, la qualité de la documentation et les politiques de tarification.

Aperçu d'IronPDF et iTextPdf

IronPDF

IronPDF est une bibliothèque .NET robuste pour la gestion de PDF, compatible avec divers environnements .NET (Core 8, 7, 6, Framework, et plus). Elle offre un ensemble de fonctionnalités complet, incluant la conversion HTML en PDF, la fusion de PDF, le chiffrement, et les signatures numériques. La documentation d'IronPDF est simple, et les utilisateurs ont accès à un support technique fiable. Les développeurs trouvent souvent des solutions aux problèmes courants grâce aux discussions sur Stack Overflow et à d'autres plateformes de partage de code source.

iTextPdf

iTextPdf est une bibliothèque PDF avancée pour Java et .NET (C#) de la bibliothèque iText, avec un accent sur le traitement de documents au niveau entreprise. Elle est disponible sous licences AGPL et commerciales, ce qui offre une flexibilité pour une gamme de projets. Les logiciels iText tels que iTextPdf sont hautement personnalisables, ce qui les rend idéaux pour les tâches PDF complexes telles que le chiffrement de documents, la signature numérique, et la création de formulaires.

Compatibilité multiplateforme

IronPDF et iTextPdf prennent tous deux en charge la fonctionnalité multiplateforme, ce qui les rend polyvalents pour divers besoins d'application au sein de .NET. Voici une répartition de la compatibilité de chaque bibliothèque.

IronPDF

  • Versions .NET : Compatible avec .NET Core (8, 7, 6, 5, 3.1+), .NET Standard (2.0+), et .NET Framework (4.6.2+).
  • Environnements d'application : Fonctionne parfaitement sous Windows, Linux, Mac, Docker, Azure, et AWS.
  • IDEs pris en charge : Fonctionne bien avec Microsoft Visual Studio et JetBrains Rider & ReSharper.
  • Systèmes d'exploitation & Processeurs : Prend en charge Windows, Mac, Linux, x64, x86, ARM.

iTextPdf

  • Versions .NET : Prend en charge .NET Core (2.x, 3.x), .NET Framework (4.6.1+), et .NET 5+.
  • Environnements d'application : Compatible avec Windows, macOS, Linux, et Docker.

Comparaison des fonctionnalités clés : IronPDF vs. iTextPdf

Vous trouverez ci-dessous une comparaison détaillée des fonctionnalités clés fournies par chaque bibliothèque.

IronPDF

  • Conversion HTML en PDF : Prend en charge HTML, CSS, JavaScript, et images.
  • Manipulation de PDF : Diviser, fusionner, et éditer des documents PDF.
  • Sécurité : Capacités d'encryptage et de décryptage de PDF.
  • Édition : Permet les annotations, les signets, et les sommaires.
  • Modèles : Appliquer des en-têtes, des pieds de page, et des numéros de page.
  • Tatouage : Prend en charge les filigranes texte et image en utilisant HTML/CSS pour le contrôle.
  • Estampage PDF : Ajouter des images et des tampons texte sur des fichiers PDF.

Pour plus d'informations sur l'ensemble complet des fonctionnalités qu'offre IronPDF, visitez la page des fonctionnalités d'IronPDF.

iTextPdf

  • Création de PDF : Prend en charge la création de documents PDF à partir de zéro.
  • Formulaires : Offre la création et l'édition de formulaires PDF.
  • Signatures numériques : Signer des documents PDF.
  • Compression : Optimise les tailles de fichier PDF.
  • Extraction de contenu : Extrait le texte et les images des PDF.
  • Personnalisabilité : Haute personnalisabilité pour les projets complexes.

Comparaison des fonctionnalités PDF : IronPDF vs. iTextPdf

Conversion HTML en PDF

Les deux bibliothèques prennent en charge la conversion HTML en PDF, bien qu'elles diffèrent dans leur approche et leur facilité d'utilisation.

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

' Instantiate the renderer
Private renderer = New ChromePdfRenderer()

' Create a PDF from an HTML string
Private 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")
$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

IronPDF offre une approche simple pour la conversion HTML en PDF, y compris la prise en charge de HTML, CSS, et JavaScript. Il permet aux utilisateurs de convertir directement à partir de chaînes HTML ou d'inclure des ressources avec un chemin de base optionnel. iTextPdf, bien qu'efficace, nécessite un peu plus de configuration, en se concentrant davantage sur la conversion basée sur les fichiers.

Cryptage des fichiers PDF

Le chiffrement est essentiel dans les scénarios où la sécurité est primordiale. Voici comment chaque bibliothèque le gère.

IronPDF

using IronPdf;

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

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

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

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

' Load an encrypted PDF or create a new one
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")

' Set document security settings
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
$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

La méthode d'IronPDF est plus conviviale, offrant un chiffrement simple et un contrôle des permissions de document. iTextPdf, bien qu'efficace, nécessite une configuration détaillée avec un accent particulier sur les normes de chiffrement.

Rendre un document PDF confidentiel

L'occultation d'informations dans les fichiers PDF est essentielle pour la confidentialité et la sécurité. Voici comment chaque bibliothèque prend en charge cette fonctionnalité.

IronPDF

using IronPdf;

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

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

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

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

Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")

' Redact 'are' from all pages
pdf.RedactTextOnAllPages("are")
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

IronPDF offre un outil de rédaction pratique qui masque facilement le texte sensible sur toutes les pages. En revanche, iTextPdf exige des utilisateurs de définir et d'appliquer manuellement des rectangles noirs pour couvrir les zones sensibles.

Signer des documents PDF

L'automatisation de la signature de documents PDF peut permettre de gagner beaucoup de temps. Voici une comparaison côte à côte de la façon dont IronPDF et iTextPdf gèrent la signature numérique.

IronPDF

using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature object
var sig = new PdfSignature(cert);

// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;

// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);

// Create PdfSignature object
var sig = new PdfSignature(cert);

// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates

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

' Create PdfSignature object
Private sig = New PdfSignature(cert)

' Sign PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("document.pdf")
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
$vbLabelText   $csharpLabel

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

En ce qui concerne l'application de signatures numériques sur les fichiers PDF, IronPDF fournit un moyen simple et efficace de le faire avec des certificats X509. Son API simplifie le processus, facilitant l'intégration dans un flux de travail sans sacrifier le contrôle sur la sécurité de la signature. En comparaison, le processus iTextPDF pour signer des documents est une configuration plus complexe mais offre des options de personnalisation supplémentaires. Les développeurs ont plus de contrôle granulaire, bien qu'ils puissent faire face à une courbe d'apprentissage plus raide en naviguant dans la configuration des signatures et la gestion des certificats d'iTextPDF.

Appliquer des filigranes à des documents PDF

Le tatouage de PDF peut être essentiel pour le branding, la confidentialité, et la protection des droits d'auteur. Voici comment IronPDF et iTextPDF appliquent des filigranes aux documents PDF.

IronPDF

using IronPdf;

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

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;

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

var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf

' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()

Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
$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

L'API d'IronPDF permet une application de filigranes rapide et intuitive avec la flexibilité d'utiliser HTML et CSS pour la personnalisation. Cette approche est conviviale et facilite la création de filigranes visuellement distincts sans configuration étendue. iTextPDF, en revanche, permet un placement de filigrane hautement personnalisable à travers ses options de configuration plus détaillées, bien qu'il nécessite un effort de codage plus étendu.

Tamponner des images et du texte sur un PDF

L'estampage de contenu sur les PDF est similaire à l'application de filigranes, mais se concentre davantage sur l'ajout d'éléments spécifiques, comme des images ou du texte, à des fins d'étiquetage ou de branding. Voici comment IronPDF et iTextPDF réalisent cette tâche.

IronPDF

using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

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

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

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

// Create text stamper
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");

// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

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

' Create text stamper
Private textStamper As New TextStamper() With {
	.Text = "Text Stamper!",
	.FontFamily = "Bungee Spice",
	.UseGoogleFont = True,
	.FontSize = 30,
	.IsBold = True,
	.IsItalic = True,
	.VerticalAlignment = VerticalAlignment.Top
}

' Stamp the text stamper
pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")

' Create image stamper
Dim imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}

' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
$vbLabelText   $csharpLabel

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

Les méthodes de tamponnage d'image et de texte d'IronPDF sont rationalisées et polyvalentes, permettant aux développeurs d'ajouter facilement du contenu ou des étiquettes de marque sur les pages PDF. L'API s'appuie sur des éléments de style HTML/CSS familiers, rendant la personnalisation simple. iTextPDF offre également des fonctionnalités de tamponnage d'image et de texte, bien que sa configuration nécessite plus de configuration manuelle et une connaissance du structure de mise en page du PDF. La capacité de manipuler et de styliser le contenu directement sur la page PDF fournit aux développeurs des outils de tamponnage robustes, bien que la configuration d'iTextPDF puisse demander un peu plus d'efforts.

Convertir DOCX en PDF

Dans certains projets, il est nécessaire de convertir des fichiers DOCX au format PDF. Voici une comparaison de la façon dont IronPDF et iText gèrent cette tâche, mettant en évidence leurs différences.

IronPDF

using IronPdf;

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

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

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;

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

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

// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf

' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()

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

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

iTextPDF

Contrairement à IronPDF, iTextPDF n'a pas de support intégré pour la conversion des DOCX en PDF. Pour effectuer cette conversion, les développeurs doivent s'appuyer sur des bibliothèques tierces telles que DocX ou Aspose.Words pour d'abord convertir le fichier DOCX en un format compatible PDF, qui peut ensuite être traité ou modifié à l'aide d'iTextPDF.

IronPDF fournit une solution intégrée simple pour la conversion DOCX en PDF, éliminant le besoin de bibliothèques supplémentaires. Cela le rend très adapté aux développeurs qui ont besoin d'une approche rapide et intégrée. En revanche, iTextPDF s'appuie sur des bibliothèques externes pour convertir les fichiers DOCX, nécessitant une configuration et des dépendances supplémentaires, ce qui peut augmenter la complexité du projet.

Support de Bootstrap et des frameworks CSS modernes

Lors de la génération de PDF à partir d'applications web stylisées Bootstrap, la prise en charge complète des frameworks garantit une cohérence de conception sans nécessiter de fichiers CSS parallèles ou de modifications de mise en page.

IronPDF : Support complet du framework Bootstrap

Le moteur Chromium d'IronPDF offre un support complet pour :

  • Bootstrap 5 : Mises en page flexbox complètes, CSS Grid, classes utilitaires, tous les composants
  • Bootstrap 4 : Systèmes de cartes complets, navigation, utilitaires flexibles, conception réactive
  • Tailwind CSS : Toutes les classes utilitaires avec un rendu précis par navigateur
  • Foundation : Système de grille complet et bibliothèque de composants
  • CSS3 moderne : Flexbox, CSS Grid, propriétés personnalisées, animations, transitions

Real-world validation: IronPDF renders the Bootstrap homepage and all official examples with pixel-perfect accuracy.

iTextPDF : Support Bootstrap limité

iTextPDF utilise pdfHTML avec prise en charge CSS3 sélective :

  • Soutien flexbox limité : Ajouté dans la version 7.1.15 mais incomplet
  • Pas de CSS Grid : Les mises en page Bootstrap basées sur la grille ne sont pas prises en charge
  • Limitations Bootstrap 3 : Les composants modernes Bootstrap 4/5 nécessitent des solutions de contournement
  • Conversion manuelle de la mise en page : Les mises en page complexes nécessitent souvent un code spécifique PDF

La documentation d'iTextPDF indique explicitement que les fonctionnalités CSS avancées peuvent ne pas se rendre comme prévu, obligeant les développeurs à tester chaque composant Bootstrap et souvent à créer des mises en page simplifiées.

Impact sur le développement : Les équipes doivent maintenir un code de mise en page distinct pour la génération de PDF ou tester et modifier intensivement les composants Bootstrap, augmentant le temps de développement et réduisant la cohérence de la conception.

Pour des conseils complets sur le framework Bootstrap et les capacités de rendu CSS3, consultez le Guide CSS Bootstrap & Flexbox.

Résumé de la comparaison des exemples de code

Image de comparaison IronPDF vs iTextPDF

Pour des exemples plus détaillés, visitez Exemples IronPDF.

Tarification et licence : IronPDF vs. Bibliothèque iTextPdf

Tarification et licences d'IronPDF

IronPDF a différents niveaux et fonctionnalités supplémentaires pour l'achat d'une licence. Les développeurs peuvent également acheter l'Iron Suite, qui donne accès à tous les produits IronSoftware au prix de deux. Si vous n'êtes pas prêt à acheter une licence, IronPDF propose une version d'essai gratuite.

  • Licences perpétuelles : Offre une gamme de licences perpétuelles selon la taille de votre équipe, vos besoins en projet et le nombre de sites. Chaque type de licence est accompagné d'un support par courrier électronique.
  • Licence Lite : Cette licence coûte $799 et prend en charge un développeur, une localisation, et un projet.
  • Licence Plus : Soutenant trois développeurs, trois emplacements et trois projets, c'est le prochain niveau après la licence lite et coûte $1,199. La licence Plus offre un support chat et un support par téléphone en plus de l'assistance par e-mail de base.
  • Licence Professionnelle : Cette licence est adaptée aux équipes plus grandes, soutenant dix développeurs, dix emplacements, et dix projets pour $2,399. Elle offre les mêmes canaux de support de contact que les niveaux précédents mais offre également un support par partage d'écran.
  • Redistribution sans redevance : La licence d'IronPDF offre également une couverture de redistribution sans redevance pour un coût supplémentaire de $2,399.
  • Support produit ininterrompu : IronPDF offre l'accès aux mises à jour continues du produit, aux améliorations des fonctionnalités de sécurité, et au support de leur équipe d'ingénierie pour soit 999$/an soit un achat unique de 1999$ pour une couverture de 5 ans.
  • Iron Suite : Pour $1,498, vous avez accès à tous les produits Iron Software, y compris IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint, et IronWebScraper.

Image de tarification IronPDF vs iTextPDF

Licences iTextPDF

  • Licence AGPL : La bibliothèque iTextPDF Core est open source sous licence AGPL, ce qui est gratuit à utiliser sous conditions. Les développeurs doivent publier les modifications sous la même licence.
  • Licence commerciale : Pour les développeurs ne répondant pas aux conditions AGPL, iTextPDF propose des licences commerciales via un modèle basé sur un devis.

Documentation et support : IronPDF vs. iTextPdf

IronPDF

  • Documentation complète : Documentation étendue et conviviale couvrant toutes les fonctionnalités offertes.
  • Support 24/5 : Support technique actif disponible.
  • Tutoriels vidéo : Guides vidéo étape par étape disponibles sur YouTube.
  • Forum communautaire : Communauté engagée pour un support supplémentaire.
  • Mises à jour régulières : Mises à jour mensuelles du produit pour assurer les dernières fonctionnalités et correctifs de sécurité.

iTextPDF

iTextPDF propose une documentation et un support solides pour son ensemble de fonctionnalités étendu.

  • Documentation : La documentation iText PDF couvre de manière exhaustive les fonctionnalités disponibles.
  • Exemples et tutoriels : Des exemples de code et des tutoriels aident les développeurs à commencer.
  • Communauté GitHub : Les développeurs peuvent signaler des problèmes, soumettre des pull requests, et interagir avec l'équipe iTextPDF.
  • Mises à jour régulières : iTextPDF fournit des mises à jour et des améliorations fréquentes.

For more details on IronPDF documentation and support, visit the IronPDF Documentation and the IronSoftware YouTube Channel.

Conclusion

Dans le domaine des outils de manipulation de PDF pour .NET, à la fois IronPDF et iTextPDF offrent de solides solutions pour les développeurs. IronPDF se distingue par son intégration simple sur les plateformes .NET et ses fonctionnalités conviviales comme la conversion DOCX en PDF sans dépendances externes. En revanche, iTextPDF, connu pour sa polyvalence et sa richesse en fonctionnalités, reste un choix puissant, surtout lorsqu'il est couplé avec d'autres outils, bien qu'il nécessite des dépendances supplémentaires pour la conversion DOCX.

En fin de compte, le choix entre IronPDF et iTextPDF dépendra des besoins spécifiques de votre projet, des préférences en matière de licence, et du niveau de support requis. Les deux bibliothèques fournissent des moyens fiables de rationaliser les flux de travail PDF dans les applications .NET.

Veuillez noteriTextPDF est une marque déposée de son propriétaire respectif. Ce site n'est affilié à, soutenu par, ou sponsorisé par iTextPDF. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont à des fins d'information uniquement et reflètent les informations disponibles publiquement au moment de la rédaction.

Questions Fréquemment Posées

Comment puis-je convertir HTML en PDF en C# ?

Vous pouvez utiliser la méthode RenderHtmlAsPdf d'IronPDF pour convertir des chaînes HTML en PDFs. Vous pouvez également convertir des fichiers HTML en PDFs en utilisant RenderHtmlFileAsPdf.

Quelles fonctionnalités IronPDF offre-t-il pour la création et la manipulation de PDF ?

IronPDF offre des fonctionnalités telles que la conversion de HTML en PDF, la fusion de PDF, le chiffrement, les signatures numériques, l'ajout de filigranes et la conversion de DOCX en PDF.

Comment IronPDF simplifie-t-il la signature de PDF ?

IronPDF vous permet d'appliquer des signatures numériques aux fichiers PDF à l'aide de certificats X509, offrant une méthode simple pour sécuriser vos documents.

IronPDF peut-il être utilisé sur différents systèmes d'exploitation ?

Oui, IronPDF prend en charge la compatibilité multiplateforme. Il fonctionne parfaitement sous Windows, Linux et Mac, et est compatible avec .NET Core, .NET Standard et .NET Framework.

En quoi iTextPDF diffère-t-il d'IronPDF en termes de chiffrement de documents ?

Bien que iTextPDF fournisse un réglage détaillé pour les normes de chiffrement, IronPDF simplifie le processus avec des méthodes de chiffrement intégrées faciles à mettre en œuvre.

Quelles ressources de support sont disponibles pour les utilisateurs d'IronPDF ?

IronPDF offre un support étendu grâce à une documentation complète, des tutoriels vidéo, un forum communautaire et un support technique 24/5.

Comment IronPDF gère-t-il la conversion de DOCX en PDF ?

IronPDF inclut des capacités de conversion native de DOCX en PDF, permettant une intégration transparente sans besoin de bibliothèques supplémentaires.

Quelles sont les options de licence disponibles pour IronPDF ?

IronPDF offre des licences perpétuelles avec différents niveaux tels que Lite, Plus et Professional, ainsi que des options pour une redistribution sans redevance et un support produit continu.

Comment puis-je appliquer des filigranes aux PDF en utilisant IronPDF ?

IronPDF vous permet d'appliquer des filigranes facilement en utilisant HTML et CSS, vous permettant d'ajouter des filigranes textuels ou d'image rapidement et de les personnaliser au besoin.

Qu'est-ce qui rend IronPDF adapté aux développeurs travaillant avec des applications .NET ?

IronPDF est conçu pour être convivial avec une API simplifiée, le rendant efficace pour des tâches comme la conversion de HTML en PDF, le chiffrement et la signature numérique, idéal pour les développeurs .NET.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite