Passer au contenu du pied de page
UTILISATION DE IRONPDF

Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en C# avec exemple

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

Ajout d'en-têtes et de pieds de page aux documents PDF en C

L'ajout d'en-têtes et de pieds de page aux documents PDF est essentiel pour créer des rapports, des factures et des documents commerciaux professionnels. Les développeurs à la recherche de solutions iTextSharp utilisant PdfPageEventHelper et la méthode OnEndPage constateront que les bibliothèques .NET modernes offrent des approches beaucoup plus simples pour obtenir les mêmes résultats.

Ce guide explique comment ajouter des en-têtes et des pieds de page dans les fichiers PDF en utilisant C#, en comparant l'approche traditionnelle d'iText 7 avec l'API concise d' IronPDF . À la fin, vous comprendrez les deux implémentations -- de la création d'un nouveau Document à la génération du fichier PDF final -- et vous pourrez choisir l'approche qui correspond le mieux aux exigences de votre projet.

Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 1 - IronPDF

Pourquoi les en-têtes et pieds de page PDF sont-ils importants dans les documents Professional ?

Les en-têtes et les pieds de page remplissent des fonctions essentielles dans les documents PDF professionnels. Ils assurent une image de marque cohérente grâce aux logos, facilitent la navigation grâce aux numéros de page, affichent des métadonnées importantes telles que les dates et les titres de documents, et établissent l'authenticité des documents grâce aux horodatages et aux informations de version.

Dans les environnements d'entreprise, les en-têtes et les pieds de page ont souvent une signification juridique. Les rapports financiers nécessitent des horodatages pour les pistes d'audit. Les contrats doivent être numérotés pour garantir leur exhaustivité. Les documents internes peuvent nécessiter des avis de confidentialité sur chaque page. Pour répondre à ces exigences au niveau programmatique, il faut une bibliothèque PDF qui gère de manière fiable l'injection de contenu au niveau de la page.

Les principales raisons d'ajouter des en-têtes et des pieds de page par programmation sont les suivantes :

  • Conformité aux audits : les horodatages et les numéros de version sur chaque page satisfont aux exigences réglementaires
  • Cohérence de la marque : logos et style de l'entreprise appliqués uniformément à tous les documents générés
  • Navigation : les numéros de page et les titres des sections aident les lecteurs à trouver rapidement l'information.
  • Authenticité : le nom de l'auteur, la date de création et l'identifiant du document préviennent les litiges relatifs à son intégrité.

Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 2 - Fonctionnalités

Comment ajouter un en-tête et un pied de page de texte en C# ?

IronPDF offre la méthode la plus directe pour ajouter des en-têtes et des pieds de page aux documents PDF dans les applications .NET . En utilisant la classe ChromePdfRenderer combinée avec TextHeaderFooter ou HtmlHeaderFooter, vous pouvez générer des en-têtes et des pieds de page avec un minimum de code - pas besoin de créer des cellules séparées ni de gérer manuellement un objet contentbyte.

Avant d'écrire le moindre code, ajoutez IronPDF à votre projet à l'aide de NuGet:

Install-Package IronPdf
dotnet add package IronPdf
Install-Package IronPdf
dotnet add package IronPdf
SHELL

La bibliothèque ne nécessite aucune dépendance externe et fonctionne immédiatement après son installation. Il cible .NET 5, 6, 7, 8 et 10 et fonctionne sous Windows, Linux et macOS sans configuration spécifique à la plateforme.

Dans les anciens modèles iTextSharp, les développeurs créaient des méthodes d'assistance telles que private static void AddContent() pour injecter manuellement la logique d'en-tête et de pied de page. IronPDF élimine totalement la nécessité d'utiliser ce type de texte passe-partout.

Voici un exemple complet qui ajoute un en-tête et un pied de page à un fichier PDF :

using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
using IronPdf;

// Initialize the PDF renderer
var renderer = new ChromePdfRenderer();

// Configure the text header
renderer.RenderingOptions.TextHeader = new TextHeaderFooter
{
    CenterText = "Quarterly Sales Report",
    DrawDividerLine = true,
    FontSize = 14
};

// Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = new TextHeaderFooter
{
    LeftText = "{date}",
    RightText = "Page {page} of {total-pages}",
    DrawDividerLine = true,
    FontSize = 10
};

// Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25;
renderer.RenderingOptions.MarginBottom = 25;

// Generate PDF from HTML content
var pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>");
pdf.SaveAs("report-with-headers.pdf");
Imports IronPdf

' Initialize the PDF renderer
Dim renderer = New ChromePdfRenderer()

' Configure the text header
renderer.RenderingOptions.TextHeader = New TextHeaderFooter With {
    .CenterText = "Quarterly Sales Report",
    .DrawDividerLine = True,
    .FontSize = 14
}

' Configure the text footer with page number and date
renderer.RenderingOptions.TextFooter = New TextHeaderFooter With {
    .LeftText = "{date}",
    .RightText = "Page {page} of {total-pages}",
    .DrawDividerLine = True,
    .FontSize = 10
}

' Set margins to accommodate header and footer
renderer.RenderingOptions.MarginTop = 25
renderer.RenderingOptions.MarginBottom = 25

' Generate PDF from HTML content
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Sales Data</h1><p>Content goes here...</p>")
pdf.SaveAs("report-with-headers.pdf")
$vbLabelText   $csharpLabel

La classe TextHeaderFooter fournit des propriétés pour positionner le texte à gauche, au centre ou à droite de la zone d'en-tête ou de pied de page. La propriété DrawDividerLine ajoute une ligne de séparation Professional entre l'en-tête ou le pied de page et le contenu principal du document. Les champs fusionnables comme {page}, {total-pages} et {date} se remplissent automatiquement avec des valeurs dynamiques lors de la génération du PDF.

IronPDF gère automatiquement les calculs de marges, garantissant ainsi que les en-têtes et les pieds de page ne chevauchent pas le contenu de votre document. La classe TextHeaderFooter prend en charge les types de polices de IronSoftware.Drawing.FontTypes, vous donnant le contrôle sur la typographie sans dépendances externes.

Sortie

Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 4 - Sortie PDF

Remarquez que l'ensemble de l'implémentation tient dans un seul bloc de code avec des affectations de propriétés claires et lisibles. Il n'est pas nécessaire de créer un fichier de classe séparé, de calculer les positions des pixels ou de gérer les objets canvas. La bibliothèque simplifie ces complexités, vous permettant de vous concentrer sur le contenu plutôt que sur les aspects techniques de la génération de PDF.

Comment créer des en-têtes et des pieds de page au format HTML ?

Pour des designs plus sophistiqués, la classe HtmlHeaderFooter d'IronPDF permet une mise en forme HTML et CSS complète. Cette approche est particulièrement précieuse lorsque les en-têtes doivent inclure un logo image, des mises en page complexes ou un style spécifique à la marque, sans créer manuellement des objets PdfPCell ou utiliser des constructeurs new Phrase.

using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
using IronPdf;
using System;

var renderer = new ChromePdfRenderer();

// Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    MaxHeight = 25,
    DrawDividerLine = true,
    BaseUrl = new Uri(@"C:\assets\").AbsoluteUri
};

// Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = new HtmlHeaderFooter
{
    HtmlFragment = @"
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    MaxHeight = 20
};

renderer.RenderingOptions.MarginTop = 30;
renderer.RenderingOptions.MarginBottom = 25;

var pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>");
pdf.SaveAs("styled-document.pdf");
Imports IronPdf
Imports System

Dim renderer As New ChromePdfRenderer()

' Create an HTML header with logo and styling
renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='width: 100%; font-family: Arial, sans-serif;'>
            <img src='logo.png' style='height: 30px; float: left;' />
            <span style='float: right; font-size: 12px; color: #666;'>
                Confidential Document
            </span>
        </div>",
    .MaxHeight = 25,
    .DrawDividerLine = True,
    .BaseUrl = New Uri("C:\assets\").AbsoluteUri
}

' Create an HTML footer with page numbering
renderer.RenderingOptions.HtmlFooter = New HtmlHeaderFooter With {
    .HtmlFragment = "
        <div style='text-align: center; font-size: 10px; color: #999;'>
            <span>Generated on {date} at {time}</span>
            <br/>
            <span>Page {page} of {total-pages}</span>
        </div>",
    .MaxHeight = 20
}

renderer.RenderingOptions.MarginTop = 30
renderer.RenderingOptions.MarginBottom = 25

Dim pdf = renderer.RenderHtmlAsPdf("<h1>Project Proposal</h1><p>Document content...</p>")
pdf.SaveAs("styled-document.pdf")
$vbLabelText   $csharpLabel

Cet exemple de code montre comment les en-têtes HTML peuvent incorporer des images à côté du texte. La propriété BaseUrl établit le chemin racine pour la résolution des URL d'images relatives, ce qui simplifie l'inclusion des logos d'entreprise ou d'autres graphiques. La propriété MaxHeight garantit que l'en-tête ne dépasse pas les dimensions spécifiées, maintenant ainsi des mises en page de document cohérentes.

Les champs fusionnables ({page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}) fonctionnent de manière identique dans les en-têtes et les pieds de page HTML, permettant l'insertion dynamique de contenu sans code supplémentaire. Pour obtenir des conseils sur la mise en œuvre de différents styles d'en-tête, consultez le guide pratique En-têtes et pieds de page .

L'approche HTML excelle dans la création de documents de marque. Les équipes marketing peuvent fournir des modèles HTML que les développeurs intègrent directement, garantissant ainsi une reproduction au pixel près des conceptions approuvées. Les propriétés CSS comme font-family, color, background-color et border fonctionnent comme prévu, permettant des traitements visuels sophistiqués qui nécessiteraient un code de bas niveau important dans d'autres bibliothèques.

Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 3 - Comment ajouter un en-tête et un pied de page à un PDF - IronPDF

Comment ajouter des en-têtes à des documents PDF existants ?

Une exigence courante consiste à ajouter des en-têtes et des pieds de page aux fichiers PDF existants, qu'il s'agisse de documents téléchargés, de fichiers fusionnés ou de PDF générés par d'autres systèmes. IronPDF gère ce scénario avec les méthodes AddHtmlHeaders et AddHtmlFooters.

using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
using IronPdf;

// Load an existing PDF document
var pdf = PdfDocument.FromFile("customer-profile.pdf");

// Define the header to add
var header = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    MaxHeight = 20
};

// Define the footer to add
var footer = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    MaxHeight = 15
};

// Apply headers and footers to all pages
pdf.AddHtmlHeaders(header);
pdf.AddHtmlFooters(footer);
pdf.SaveAs("document-with-new-headers.pdf");
Imports IronPdf

' Load an existing PDF document
Dim pdf = PdfDocument.FromFile("customer-profile.pdf")

' Define the header to add
Dim header As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>REVISED COPY - {date}</div>",
    .MaxHeight = 20
}

' Define the footer to add
Dim footer As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: right;'>Page {page}</div>",
    .MaxHeight = 15
}

' Apply headers and footers to all pages
pdf.AddHtmlHeaders(header)
pdf.AddHtmlFooters(footer)
pdf.SaveAs("document-with-new-headers.pdf")
$vbLabelText   $csharpLabel

La classe PdfDocument représente un PDF chargé ou rendu et fournit des méthodes pour les modifications post-rendu. Cette séparation entre le rendu et la modification permet des flux de travail où les documents PDF passent par plusieurs étapes de traitement. La méthode AddHtmlHeaders applique automatiquement l'en-tête à chaque page, bien que vous puissiez également cibler des pages spécifiques en passant une collection d'index de page.

Entrée

Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 6 - Exemple d'entrée

Sortie

Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 7 - En-tête PDF existant

Cette capacité s'avère inestimable dans les systèmes de gestion de documents qui reçoivent des fichiers PDF de diverses sources, telles que des documents numérisés, des téléchargements d'utilisateurs ou des réponses d'API tierces. IronPDF normalise l'image de marque ou la numérotation des pages avant la distribution ou l'archivage.

Comment ajouter des en-têtes différents sur des pages différentes ?

Certains documents exigent que la première page comporte un en-tête différent (ou pas d'en-tête du tout), tandis que les pages suivantes utilisent un format standard. IronPDF prend en charge cette fonctionnalité grâce à l'application d'en-têtes basée sur l'index de page ; il n'est pas nécessaire de vérifier les conditions à l'intérieur des gestionnaires void OnEndPage ni de gérer manuellement les compteurs de boucle :

using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
using IronPdf;
using System.Collections.Generic;
using System.Linq;
using System.Text;

var renderer = new ChromePdfRenderer();

// Build multi-page HTML with print page-breaks between pages
var pages = new List<string>
{
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
};

var sb = new StringBuilder();
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>");
sb.AppendLine("<style>");
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }");
sb.AppendLine("  .page-break { page-break-after: always; }");
sb.AppendLine("</style>");
sb.AppendLine("</head><body>");

for (int i = 0; i < pages.Count; i++)
{
    sb.AppendLine(pages[i]);
    if (i < pages.Count - 1)
        sb.AppendLine("<div class='page-break'></div>");
}
sb.AppendLine("</body></html>");

var pdf = renderer.RenderHtmlAsPdf(sb.ToString());

// Create the standard header for pages 2 onwards
var standardHeader = new HtmlHeaderFooter
{
    HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    MaxHeight = 20
};

// Apply to all pages except the first (index 0)
var pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList();
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices);
pdf.SaveAs("document-skip-first-page-header.pdf");
Imports IronPdf
Imports System.Collections.Generic
Imports System.Linq
Imports System.Text

Dim renderer As New ChromePdfRenderer()

' Build multi-page HTML with print page-breaks between pages
Dim pages As New List(Of String) From {
    "<section><h1>Title Page</h1><p>Intro text on page 1.</p></section>",
    "<section><h2>Report</h2><p>Detailed report content on page 2.</p></section>",
    "<section><h2>Appendix</h2><p>Appendix content on page 3.</p></section>"
}

Dim sb As New StringBuilder()
sb.AppendLine("<!doctype html><html><head><meta charset='utf-8'>")
sb.AppendLine("<style>")
sb.AppendLine("  body { font-family: Arial, sans-serif; margin: 20px; }")
sb.AppendLine("  .page-break { page-break-after: always; }")
sb.AppendLine("</style>")
sb.AppendLine("</head><body>")

For i As Integer = 0 To pages.Count - 1
    sb.AppendLine(pages(i))
    If i < pages.Count - 1 Then
        sb.AppendLine("<div class='page-break'></div>")
    End If
Next
sb.AppendLine("</body></html>")

Dim pdf = renderer.RenderHtmlAsPdf(sb.ToString())

' Create the standard header for pages 2 onwards
Dim standardHeader As New HtmlHeaderFooter With {
    .HtmlFragment = "<div style='text-align: center;'>Standard Header - Page {page}</div>",
    .MaxHeight = 20
}

' Apply to all pages except the first (index 0)
Dim pageIndices = Enumerable.Range(1, pdf.PageCount - 1).ToList()
pdf.AddHtmlHeaders(standardHeader, 1, pageIndices)
pdf.SaveAs("document-skip-first-page-header.pdf")
$vbLabelText   $csharpLabel

Le deuxième paramètre dans AddHtmlHeaders spécifie le numéro de page de départ pour le champ fusionnable {page}, tandis que le troisième paramètre accepte une collection d'indices de page pour recevoir l'en-tête. Ce contrôle granulaire permet des mises en page de documents complexes sans logique conditionnelle alambiquée. L' exemple des en-têtes et pieds de page avancés couvre des scénarios supplémentaires, notamment la différenciation des pages paires/impaires.

Sortie

Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 9 - En-têtes différents pour chaque page

Comment mettre en œuvre un contenu dynamique au-delà des numéros de page ?

Le système de champs fusionnables prend en charge plusieurs valeurs dynamiques qui se remplissent automatiquement lors du rendu. Le tableau suivant répertorie tous les champs disponibles et leur signification :

Champs fusionnables pris en charge dans les en-têtes et pieds de page IronPDF
Champ Valeur insérée Utilisation typique
`{page}` numéro de page actuel Pieds de page affichant " Page 3 "
`{total-pages}` Nombre total de pages Pieds de page affichant " Page 3 sur 10 "
`{date}` Date actuelle au format local Horodatage des audits, dates des rapports
`{time}` Heure actuelle au format local Pieds de page de conformité réglementaire
`{html-title}` Contenu de la balise HTML ``</td> <td>En-têtes de document affichant le titre de la page</td> </tr> <tr> <td>`{pdf-title}`</td> <td>titre des métadonnées du document PDF</td> <td>Pieds de page de marque avec nom du document</td> </tr> <tr> <td>`{url}`</td> <td>URL source lors du rendu à partir d'une adresse web</td> <td>Pieds de page d'archives pour le contenu Web</td> </tr> </tbody> </table> <p>Pour un contenu véritablement dynamique -- valeurs déterminées au moment de l'exécution -- vous pouvez construire la chaîne de fragment HTML avec des valeurs interpolées avant de l'affecter à la propriété <code>HtmlFragment</code>. Cette approche permet d'inclure dans les en-têtes des valeurs extraites de la base de données, des informations sur l'utilisateur ou des données calculées :</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Cliquez pour copier" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Cliquez pour copier" data-copied-text="Copié dans le presse-papiers" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Mode plein écran" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Quitter le plein écran" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; string userName = GetCurrentUserName(); string documentVersion = "v2.3.1"; var renderer = new ChromePdfRenderer(); renderer.RenderingOptions.HtmlHeader = new HtmlHeaderFooter { HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " + $"| Version: {documentVersion} " + "| Page {page} of {total-pages}</div>", MaxHeight = 20 }; var pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>"); pdf.SaveAs("dynamic-header-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Dim userName As String = GetCurrentUserName() Dim documentVersion As String = "v2.3.1" Dim renderer As New ChromePdfRenderer() renderer.RenderingOptions.HtmlHeader = New HtmlHeaderFooter With { .HtmlFragment = $"<div style='font-size:10px;'>Prepared by: {userName} " & $"| Version: {documentVersion} " & "| Page {page} of {total-pages}</div>", .MaxHeight = 20 } Dim pdf = renderer.RenderHtmlAsPdf("<h1>Annual Report</h1><p>Body content here.</p>") pdf.SaveAs("dynamic-header-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>Notez que les jetons <code>{page}</code> et <code>{total-pages}</code> sont laissés sous forme de chaînes simples dans la concaténation de chaînes C# -- et non à l'intérieur de la partie interpolée. Lors du rendu PDF, IronPDF remplace automatiquement ces jetons. Ce modèle fonctionne pour toute valeur d'exécution : noms d'utilisateurs d'Active Directory, identifiants de documents d'une base de données, chaînes de version de votre pipeline de génération ou totaux calculés par votre moteur de reporting.</p> <p>La combinaison de champs fusionnables et d'interpolation de chaînes de caractères permet de réaliser des modèles de pieds de page sophistiqués, courants dans les documents commerciaux. Les services juridiques ont souvent besoin de pieds de page indiquant le titre du document, la date et le nombre de pages. Les rapports financiers peuvent nécessiter des horodatages pour des raisons de conformité réglementaire. Ces exigences sont satisfaites sans code personnalisé pour chaque type de document.</p> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-36-49-quoi-ressemble-l-approche-d-itext-7" data-heading-level="2" data-heading-text="À quoi ressemble l'approche d'iText 7?"> <h2 id="anchor-36-49-quoi-ressemble-l-approche-d-itext-7">À quoi ressemble l'approche d'iText 7?</h2> <p>Les développeurs qui connaissent iText 7 (le successeur d'iTextSharp) savent que l'ajout d'en-têtes et de pieds de page nécessite la mise en œuvre de gestionnaires d'événements. La bibliothèque utilise un système d'événements de page dans lequel vous créez une classe qui répond aux événements du cycle de vie du document comme <code>OnEndPage</code> et <code>OnCloseDocument</code>.</p> <p>Voici à quoi ressemble la même implémentation d'en-tête et de pied de page avec iText 7, en utilisant le modèle <code>ITextEvents</code> :</p> <pre class='naked-code'><code class="language-csharp">using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Cliquez pour copier" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Cliquez pour copier" data-copied-text="Copié dans le presse-papiers" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Mode plein écran" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Quitter le plein écran" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using iText.Kernel.Pdf; using iText.Layout; using iText.Layout.Element; using iText.Kernel.Events; using iText.Kernel.Geom; using iText.Layout.Properties; // Event handler class for headers and footers -- similar to PdfPageEventHelper public class ITextEvents : IEventHandler { private string _header; public string Header { get { return _header; } set { _header = value; } } public void HandleEvent(Event currentEvent) { PdfDocumentEvent docEvent = (PdfDocumentEvent)currentEvent; PdfDocument pdfDoc = docEvent.GetDocument(); PdfPage page = docEvent.GetPage(); Rectangle pageSize = page.GetPageSize(); // Create a new PdfCanvas for the contentbyte object PdfCanvas pdfCanvas = new PdfCanvas( page.NewContentStreamBefore(), page.GetResources(), pdfDoc); Canvas canvas = new Canvas(pdfCanvas, pageSize); // Add header text at calculated position canvas.ShowTextAligned( new Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER); // Add footer with page number int pageNumber = pdfDoc.GetPageNumber(page); canvas.ShowTextAligned( new Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER); canvas.Close(); } } // Usage in main code var writer = new PdfWriter("report.pdf"); var pdfDoc = new PdfDocument(writer); var document = new Document(pdfDoc); // Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, new ITextEvents()); document.Add(new Paragraph("Sales Data")); document.Add(new Paragraph("Content goes here...")); document.Close();</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports iText.Kernel.Pdf Imports iText.Layout Imports iText.Layout.Element Imports iText.Kernel.Events Imports iText.Kernel.Geom Imports iText.Layout.Properties ' Event handler class for headers and footers -- similar to PdfPageEventHelper Public Class ITextEvents Implements IEventHandler Private _header As String Public Property Header As String Get Return _header End Get Set(value As String) _header = value End Set End Property Public Sub HandleEvent(currentEvent As [Event]) Implements IEventHandler.HandleEvent Dim docEvent As PdfDocumentEvent = CType(currentEvent, PdfDocumentEvent) Dim pdfDoc As PdfDocument = docEvent.GetDocument() Dim page As PdfPage = docEvent.GetPage() Dim pageSize As Rectangle = page.GetPageSize() ' Create a new PdfCanvas for the contentbyte object Dim pdfCanvas As New PdfCanvas(page.NewContentStreamBefore(), page.GetResources(), pdfDoc) Dim canvas As New Canvas(pdfCanvas, pageSize) ' Add header text at calculated position canvas.ShowTextAligned(New Paragraph("Quarterly Sales Report"), pageSize.GetWidth() / 2, pageSize.GetTop() - 20, TextAlignment.CENTER) ' Add footer with page number Dim pageNumber As Integer = pdfDoc.GetPageNumber(page) canvas.ShowTextAligned(New Paragraph($"Page {pageNumber}"), pageSize.GetWidth() / 2, pageSize.GetBottom() + 20, TextAlignment.CENTER) canvas.Close() End Sub End Class ' Usage in main code Dim writer As New PdfWriter("report.pdf") Dim pdfDoc As New PdfDocument(writer) Dim document As New Document(pdfDoc) ' Register the event handler for END_PAGE pdfDoc.AddEventHandler(PdfDocumentEvent.END_PAGE, New ITextEvents()) document.Add(New Paragraph("Sales Data")) document.Add(New Paragraph("Content goes here...")) document.Close()</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>Cette implémentation illustre la différence architecturale fondamentale entre les deux bibliothèques. iText 7 nécessite la création d'une classe de gestionnaire séparée qui implémente <code>IEventHandler</code> (similaire à l'ancienne <code>PdfPageEventHelper</code>), calculant manuellement les positions de page à l'aide de coordonnées flottantes et gérant les objets <code>PdfCanvas</code> et <code>Canvas</code> pour les opérations de dessin. Le gestionnaire reçoit des événements pour chaque page via le type d'événement <code>END_PAGE</code> -- un détail qui piège de nombreux développeurs qui utilisent par erreur <code>START_PAGE</code>.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-sortie" data-heading-level="3" data-heading-text="Sortie"> <h3 id="anchor-sortie">Sortie</h3> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-8.webp" alt="Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# (exemple : Image 8) ?" loading="lazy" class="img-responsive add-shadow img-popup" width="883" height="951" /></p> <p>Le système de coordonnées dans iText 7 est basé sur le coin inférieur gauche de la page, ce qui nécessite des calculs explicites pour le positionnement. L'obtention du nombre final de pages nécessite une complexité supplémentaire avec les modèles <code>PdfTemplate</code> qui sont remplis pendant <code>OnCloseDocument</code> -- un modèle qui ajoute plus de code répétitif à un flux de travail déjà complexe.</p> <p>Pour les développeurs issus du développement web, cette approche basée sur les coordonnées semble étrangère par rapport au modèle déclaratif HTML/CSS. Chaque décision de positionnement nécessite de comprendre les dimensions de la page, les décalages de marge et la mesure du texte – des aspects qui sont abstraits dans les approches basées sur HTML.</p> <p>iText 7 fonctionne également sous licence AGPL, ce qui signifie que les applications utilisant iTextSharp ou iText 7 doivent être open-source, sauf si une licence commerciale est achetée. Il s'agit d'un élément important à prendre en compte lors du choix d'une bibliothèque pour un projet commercial.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-comment-les-deux-approches-se-comparent-elles" data-heading-level="2" data-heading-text="Comment les deux approches se comparent-elles ?"> <h2 id="anchor-comment-les-deux-approches-se-comparent-elles">Comment les deux approches se comparent-elles ?</h2> <p>Les différences apparaissent plus clairement lorsqu'on compare les fonctionnalités spécifiques. Le tableau suivant résume les principales distinctions :</p> <table class="content__data-table" data-content-table> <caption>Comparaison des fonctionnalités d'en-tête et de pied de page entre IronPDF et iText 7</caption> <thead> <tr> <th>Caractéristique</th> <th>IronPDF</th> <th>iText 7 / iTextSharp</th> </tr> </thead> <tbody> <tr> <td>Style de mise en œuvre</td> <td>Affectation de propriété sur les options de rendu</td> <td>Classe de gestionnaire d'événements implémentant IEventHandler</td> </tr> <tr> <td>Prise en charge HTML/CSS</td> <td>HTML et CSS complets via HtmlHeaderFooter</td> <td>Aucune prise en charge native du HTML ; nécessite un dessin de canevas de bas niveau.</td> </tr> <tr> <td>Total des numéros de page</td> <td>Automatique via le champ `{total-pages}`</td> <td>Nécessite que le modèle PDF soit rempli dans OnCloseDocument</td> </tr> <tr> <td>Image dans l'en-tête</td> <td>Balise HTML standard `<img loading="lazy" class="img-responsive add-shadow img-popup" alt=" related to Comment les deux approches se comparent-elles ?">` avec BaseUrl</td> <td>Nécessite un objet image et un positionnement manuel</td> </tr> <tr> <td>Ajouter au PDF existant</td> <td>Méthodes AddHtmlHeaders / AddHtmlFooters</td> <td>Nécessite un retraitement via un tampon ou une boucle d'événements</td> </tr> <tr> <td>Ciblage par page</td> <td>Liste des indices de page transmis à la méthode</td> <td>Logique conditionnelle à l'intérieur du gestionnaire d'événements</td> </tr> <tr> <td>Modèle de licence</td> <td>Commercial avec essai gratuit</td> <td>AGPL (logiciel libre) ou commercial</td> </tr> <tr> <td>Multiplateforme</td> <td>Windows, Linux, macOS ; compatible Docker</td> <td>Windows, Linux, macOS</td> </tr> </tbody> </table> <p>L'expérience de développement diffère également de manière significative lors de la résolution de problèmes. L'approche d'IronPDF basée sur le HTML signifie que vous pouvez prévisualiser la conception de votre en-tête dans un navigateur avant de l'intégrer dans votre code de génération de PDF. Si quelque chose ne semble pas correct, vous pouvez ajuster le HTML et le CSS en utilisant les outils de développement du navigateur qui vous sont familiers. Avec iText 7, le débogage des problèmes de positionnement nécessite la génération répétée de PDF de test et la mesure manuelle des coordonnées.</p> <p>L'approche basée sur HTML vous permet d'appliquer directement vos compétences existantes en développement web. Toute mise en page réalisable avec HTML et CSS fonctionne dans les en-têtes et pieds de page IronPDF , des agencements flexbox aux grilles d'images. L' <a href="/fr/examples/html-headers-and-footers/" target="_blank">exemple des en-têtes et pieds de page HTML</a> illustre des possibilités de style supplémentaires.</p> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-personnalisation-de-l-apparence-de-l-en-t36-49te-et-du-pied-de-page" data-heading-level="3" data-heading-text="Personnalisation de l'apparence de l'en-tête et du pied de page"> <h3 id="anchor-personnalisation-de-l-apparence-de-l-en-t36-49te-et-du-pied-de-page">Personnalisation de l'apparence de l'en-tête et du pied de page</h3> <p>L'ajustement des en-têtes et des pieds de page implique plusieurs propriétés qui affectent le positionnement et la présentation visuelle. La classe <code>TextHeaderFooter</code> offre les options de personnalisation suivantes :</p> <pre class='naked-code'><code class="language-csharp">using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <div class="code-content code-content-inner"> <div class="code_window" > <div class="language-selection__content-page-wrapper"> </div> <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Cliquez pour copier" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Cliquez pour copier" data-copied-text="Copié dans le presse-papiers" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Mode plein écran" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Quitter le plein écran" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-cs"><code>using IronPdf; using IronSoftware.Drawing; var renderer = new ChromePdfRenderer(); var footer = new TextHeaderFooter { LeftText = "Confidential", CenterText = "{pdf-title}", RightText = "Page {page} of {total-pages}", Font = FontTypes.Arial, FontSize = 9, DrawDividerLine = true, DrawDividerLineColor = Color.Gray }; renderer.RenderingOptions.TextFooter = footer; renderer.RenderingOptions.MarginBottom = 20; var pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>"); pdf.SaveAs("board-report.pdf");</code></pre> <pre class="prettyprint linenums lang-vb"><code>Imports IronPdf Imports IronSoftware.Drawing Dim renderer As New ChromePdfRenderer() Dim footer As New TextHeaderFooter With { .LeftText = "Confidential", .CenterText = "{pdf-title}", .RightText = "Page {page} of {total-pages}", .Font = FontTypes.Arial, .FontSize = 9, .DrawDividerLine = True, .DrawDividerLineColor = Color.Gray } renderer.RenderingOptions.TextFooter = footer renderer.RenderingOptions.MarginBottom = 20 Dim pdf = renderer.RenderHtmlAsPdf("<h1>Board Report</h1><p>Executive summary content.</p>") pdf.SaveAs("board-report.pdf")</code></pre> </div> <div class="code_window_bottom"> <span class="language_selection"> <span class="ls-span">$vbLabelText  </span> <span> <label class="switch"> <input type="checkbox" checked="checked"> <span class="slider round"></span> </label> </span> <span class="ls-span">$csharpLabel</span> </span> </div> </div> </div> <p>La propriété <code>Font</code> accepte les valeurs de <code>IronSoftware.Drawing.FontTypes</code>, y compris Helvetica, Arial, Courier et Times New Roman. La propriété <code>DrawDividerLine</code> ajoute une ligne horizontale Professional entre le pied de page et le contenu principal. Vous pouvez personnaliser la couleur de la ligne en utilisant <code>DrawDividerLineColor</code> pour correspondre aux couleurs de votre marque ou au thème de votre document.</p> <p>Pour les en-têtes et pieds de page basés sur HTML, la propriété <code>LoadStylesAndCSSFromMainHtmlDocument</code> hérite éventuellement des styles du document principal rendu, assurant ainsi une cohérence visuelle entre les en-têtes et le contenu du corps. Ceci est particulièrement utile lorsque votre document principal utilise des feuilles de style CSS personnalisées qui doivent également s'appliquer aux régions de l'en-tête et du pied de page.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-5.webp" alt="Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 5 - Compatibilité multiplateforme" loading="lazy" class="img-responsive add-shadow img-popup" width="1530" height="655" /></p> </section> <section class="md__article-chunk md__article-chunk__level-3" aria-labelledby="anchor-d36-49ploiements-multiplateformes-et-conteneuris36-49s" data-heading-level="3" data-heading-text="Déploiements multiplateformes et conteneurisés"> <h3 id="anchor-d36-49ploiements-multiplateformes-et-conteneuris36-49s">Déploiements multiplateformes et conteneurisés</h3> <p>Les applications .NET modernes sont souvent déployées dans des conteneurs Linux, Azure App Services ou des fonctions AWS Lambda. IronPDF prend en charge le déploiement multiplateforme sur Windows, Linux et macOS sans nécessiter de configuration supplémentaire. La bibliothèque fonctionne dans des conteneurs Docker dès sa sortie de l'emballage, ce qui la rend adaptée aux architectures microservices et aux applications cloud-natives.</p> <p>Cette capacité multiplateforme s'étend aux fonctionnalités d'en-tête et de pied de page : le même code qui génère des PDF avec en-têtes sur une machine de développement Windows produit un résultat identique lorsqu'il est déployé sur un serveur de production Linux. Il n'est pas nécessaire d'installer des polices supplémentaires, de configurer des moteurs de rendu ou de gérer des chemins de code spécifiques à la plateforme.</p> <p>Pour les équipes exécutant des charges de travail conteneurisées, la <a href="/fr/get-started/linux/" target="_blank">documentation de déploiement Docker IronPDF</a> fournit des conseils de configuration pour diverses images de base et plateformes d'orchestration. Le comportement cohérent de la bibliothèque dans tous les environnements élimine une source courante de bogues dans les flux de travail de génération de PDF.</p> <p>Selon <a href="https://learn.microsoft.com/en-us/dotnet/core/deploying/" target="_blank" rel="nofollow noopener noreferrer">la documentation .NET de Microsoft</a> , les applications .NET conteneurisées bénéficient d'un comportement d'exécution cohérent dans tous les environnements – un principe que le moteur de rendu d'IronPDF renforce pour les tâches de génération de PDF. De même, <a href="https://docs.docker.com/get-started/" target="_blank" rel="nofollow noopener noreferrer">la documentation officielle de Docker</a> explique les bonnes pratiques de conteneurisation des charges de travail .NET qui s'appliquent directement aux services de génération de PDF.</p> <p>La <a href="https://itextpdf.com/resources/api-documentation" target="_blank" rel="nofollow noopener noreferrer">documentation d'iText 7</a> confirme également la prise en charge multiplateforme, mais la complexité supplémentaire de son modèle événementiel signifie que le débogage des problèmes de rendu multiplateforme peut être plus complexe qu'avec une approche déclarative basée sur HTML.</p> </section> </section> <section class="md__article-chunk md__article-chunk__level-2" aria-labelledby="anchor-quelles-sont-vos-prochaines-36-49tapes" data-heading-level="2" data-heading-text="Quelles sont vos prochaines étapes ?"> <h2 id="anchor-quelles-sont-vos-prochaines-36-49tapes">Quelles sont vos prochaines étapes ?</h2> <p>La mise en œuvre d'en-têtes et de pieds de page dans vos documents PDF ne prend que quelques minutes avec IronPDF. Installez la bibliothèque via NuGet Package Manager :</p> <pre class='naked-code'><code class="language-bash">Install-Package IronPdf dotnet add package IronPdf</code></pre> <div class="code-content code-content-inner" > <div class="code_window" > <div class="code_window_content"> <div class="code-window__action-buttons-wrapper code-window__action-buttons-wrapper--content-page"> <button title="Cliquez pour copier" class="code-window__action-button code-window__action-button--copy copy-clipboard" data-copy-text="Cliquez pour copier" data-copied-text="Copié dans le presse-papiers" data-clipboard-id="code-explorer" data-placement="bottom" > <i class="fa-kit fa-copy-example"></i> </button> <button title="Mode plein écran" class="code-window__action-button code-window__action-button--full-screen js-full-screen-code-example-modal" > <i class="fas fa-expand"></i> </button> <button title="Quitter le plein écran" class="code-window__action-button code-window__action-button--exit-full-screen js-exit-full-screen-code-example-modal" > <i class="fas fa-compress"></i> </button> </div> <pre class="prettyprint linenums lang-shell"><code>Install-Package IronPdf dotnet add package IronPdf</code></pre> </div> <div class="code_window_bottom"> <span class="pull-right"><span class="ls-span" style='font-weight: 600'>SHELL</span> </div> </div> </div> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-10.webp" alt="Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 10 - Installation" loading="lazy" class="img-responsive add-shadow img-popup" width="1280" height="818" /></p> <p>À partir de là, ces ressources vous aideront à aller plus loin :</p> <ul> <li><strong><a href="/fr/docs/" target="_blank">Documentation de prise en main</a></strong> : couvre l'ensemble des fonctionnalités de génération et de manipulation de fichiers PDF</li> <li><strong><a href="/fr/how-to/headers-and-footers/" target="_blank">Guide pratique des en-têtes et pieds de</a></strong> page : instructions étape par étape pour tous les cas de figure</li> <li><strong><a href="/fr/examples/html-headers-and-footers/" target="_blank">Exemple d'en-têtes et de pieds de page HTML</a></strong> -- exemples de code prêts à l'emploi pour les en-têtes basés sur HTML</li> <li><strong><a href="/fr/examples/adding-headers-and-footers-advanced/" target="_blank">Exemple d'en-têtes et de pieds de page avancés</a></strong> : ciblage par page et différenciation des pages paires/impaires</li> <li><strong><a href="/fr/object-reference/api/IronPdf.TextHeaderFooter.html" target="_blank">Référence de l'API TextHeaderFooter</a></strong> -- liste complète des propriétés pour les en-têtes et pieds de page textuels</li> <li><strong><a href="/fr/object-reference/api/IronPdf.HtmlHeaderFooter.html" target="_blank">Référence de l'API HtmlHeaderFooter</a></strong> -- API complète pour les en-têtes et pieds de page HTML</li> <li><strong><a href="/fr/get-started/linux/" target="_blank">Guide de déploiement Docker</a></strong> : configuration pour les conteneurs Linux et les environnements cloud</li> <li><strong><a href="/fr/licensing/" target="_blank">Options de licence IronPDF</a></strong> : des forfaits pour les développeurs individuels et les équipes Enterprise</li> </ul> <p><a href="#trial-license" data-modal-id="trial-license" class="js-modal-open">Démarrez votre essai gratuit</a> pour tester les implémentations d'en-tête et de pied de page dans vos propres projets. L'essai comprend toutes les fonctionnalités sans limite de temps, vous permettant d'évaluer la bibliothèque par rapport à vos besoins réels en matière de documents PDF avant de vous engager sur une licence.</p> <p><img src="/static-assets/pdf/blog/read-header-footer-itextsharp/read-header-footer-itextsharp-11.webp" alt="Comment ajouter un en-tête et un pied de page à un PDF avec iTextSharp et IronPDF en C# ? Exemple : Image 11 - Licences" loading="lazy" class="img-responsive add-shadow img-popup" width="1757" height="741" /></p> <p>L'ajout d'en-têtes et de pieds de page aux documents PDF en C# peut être simple ou complexe, selon la bibliothèque choisie. Si iText 7 offre un contrôle de bas niveau via des gestionnaires d'événements et des opérations sur le canevas, IronPDF propose les mêmes fonctionnalités grâce à une API qui exploite des concepts HTML et CSS familiers. Pour les développeurs privilégiant une implémentation rapide et un code maintenable, IronPDF réduit l'implémentation des en-têtes et pieds de page de plusieurs dizaines de lignes (incluant les classes de gestion, la configuration des cellules et la structure des tableaux) à quelques affectations de propriétés seulement.</p></section> </div> <section id="article__faqs" class="bg" style="min-height: 500px; contain-intrinsic-size: auto 1065px;"> <h2 class="article__faqs__heading-title">Questions Fréquemment Posées</h2> <div class="article__faqs__questions-and-answers container-fluid"> <div class="tab-pane in active" id="ta-faq"> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Comment puis-je ajouter des en-têtes et des pieds de page aux PDF en utilisant iTextSharp ?</h3> <p class="question-answer">Pour ajouter des en-têtes et des pieds de page aux PDF à l'aide d'iTextSharp, vous pouvez définir un gestionnaire d'événement de page qui personnalise les pages du document pendant le processus de création du PDF. Il s'agit de remplacer la méthode OnEndPage pour inclure le contenu de l'en-tête et du pied de page souhaité.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Quels sont les avantages de l'utilisation d'IronPDF pour l'ajout d'en-têtes et de pieds de page ?</h3> <p class="question-answer">IronPDF simplifie le processus d'ajout d'en-têtes et de pieds de page en fournissant une API directe et prend en charge diverses options de style. Il s'intègre parfaitement aux projets C# et offre des fonctionnalités supplémentaires telles que la conversion de HTML en PDF, ce qui en fait un outil polyvalent pour la manipulation des PDF.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">IronPDF et iTextSharp peuvent-ils être utilisés ensemble ?</h3> <p class="question-answer">Oui, IronPDF et iTextSharp peuvent être utilisés ensemble dans un projet C#. Si iTextSharp est excellent pour la manipulation programmatique des PDF, IronPDF le complète en offrant des fonctionnalités supplémentaires telles que la conversion de HTML en PDF, ce qui peut être utile pour générer dynamiquement des en-têtes et des pieds de page.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Existe-t-il un moyen de styliser les en-têtes et les pieds de page à l'aide d'IronPDF ?</h3> <p class="question-answer">IronPDF vous permet de styliser les en-têtes et les pieds de page à l'aide de HTML et de CSS. Les développeurs ont ainsi la possibilité de créer des conceptions et des mises en page visuellement attrayantes pour leurs documents PDF.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Comment IronPDF gère-t-il les numéros de page dans les en-têtes et les pieds de page ?</h3> <p class="question-answer">IronPDF peut insérer automatiquement des numéros de page dans les en-têtes et les pieds de page. Il propose des options pour formater les numéros de page en fonction de vos besoins, comme l'inclusion du nombre total de pages ou l'ajustement du numéro de la page de départ.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Quel est l'avantage d'utiliser C# pour la manipulation de PDF avec IronPDF ?</h3> <p class="question-answer">L'utilisation de C# pour la manipulation de PDF avec IronPDF offre une grande sécurité de type, une intégration facile avec les applications .NET et l'accès à une large gamme de bibliothèques et d'outils qui améliorent le processus de développement. L'API C# d'IronPDF est conçue pour être intuitive et conviviale, ce qui la rend accessible aux développeurs de tous niveaux.</p> </div> </div> <div class="faq-item"> <div class="faq-collapse"> <i class="fa-solid fa-plus"></i> <i class="fa-solid fa-minus"></i> </div> <div class="faq-content"> <h3 class="question-header">Puis-je convertir des documents existants en PDF à l'aide d'IronPDF ?</h3> <p class="question-answer">Oui, IronPDF peut convertir en PDF divers formats de documents, notamment HTML, ASPX et d'autres contenus basés sur le web. Cette fonctionnalité est particulièrement utile pour créer des PDF à partir de pages web ou de contenu généré dynamiquement.</p> </div> </div> </div> </div> </section> <script> document.addEventListener("DOMContentLoaded", function() { onViewLoadAsync( "#article__faqs", function() { }, ["common__faqs.js", "content__faqs.css", "article__faqs.css"] ); const articleFaqs = document.querySelector("#article__faqs .tab-pane"); if (!articleFaqs) return; articleFaqs.addEventListener("click", (evt) => { const targeted = evt.target.closest(".faq-item"); if (!targeted) return; targeted.classList.toggle("faq-item--active"); }); }); </script> <div class="author-details" id="author"> <div class="d-flex column-gap-4"> <div class="col_image"> <img loading="lazy" src="/img/how-tos/authors/curtis.png" alt="Curtis Chau" class="author-image" width="64" height="64"> </div> <div class="col_detail"> <div class="author-details__connect"> <div class="d-flex align-items-center flex-wrap"> <div class="author-details__connect__author"> <div class="author-name text-no-wrap"> <a href="https://ironsoftware.com/fr/about-us/authors/curtis/" aria-label="">Curtis Chau</a> </div> <div class="author-details__connect__linkedin"> <a href="https://www.linkedin.com/in/curtis-chau-937368213/" target="_blank"><i class="fa-brands fa-linkedin" target="_blank" rel="nofollow"></i></a> </div> <div class="author-details__connect__website"> <a href="https://github.com/CurtisChau" target="_blank"><i class="fa-solid fa-globe"></i></a> </div> </div> <div class="author-details__chat"> <a href="#live-chat-support"><i class="fa-solid fa-comments"></i>  <span class="d-none d-md-inline">Discutez maintenant avec l'équipe d'ingénierie </a></span> </div> </div> </div> <div class="author-job-title">Rédacteur technique</div> <div class="author-bio"><p>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 ...</div><a class="author-job-title__read-more" href="https://ironsoftware.com/fr/about-us/authors/curtis/">Lire la suite</a> </div> </div> </div> <div class="feedback_form"> </div> <div class="blog_end_line"></div> <div class="page_blog_listing module section_blog_listing"> <section class="col-12" id="blog_post--related-articles"> <h2>Articles connexes</h2> <div class="container-fluid blog_post--related-articles__list"> <div class="row row-cols-1 row-cols-sm-2 row-cols-lg-3 g-4"> <div class="col"> <article class="h-100"> <a href="/fr/blog/using-ironpdf/ironpdf-monthly-statements/" class="d-block h-100 item_box" title="Générer des relevés de compte mensuels au format PDF"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Mis à jour<time datetime="2026-03-31">30 mars 2026</time></span></div> <h3 class="post_header">Générer des relevés de compte mensuels au format PDF</h3> <p class="post_description">Grâce à la bibliothèque IronPDF for C# PDF, les développeurs peuvent convertir du HTML en fichiers PDF fiables à l'intérieur d'un projet .NET sans dépendre de services externes.</p> <p class="read_more">Lire la suite<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/fr/blog/using-ironpdf/ironpdf-form-to-pdf/" class="d-block h-100 item_box" title="Transformer des formulaires de demande en ligne en résumés PDF à l'aide d'IronPDF"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"><img class="object-fit-cover" alt="Transformer des formulaires de demande en ligne en résumés PDF à l'aide d'IronPDF" src="/static-assets/pdf/blog/ironpdf-form-to-pdf/ironpdf-form-to-pdf-1.webp" width="1865" height="487" decoding="async" loading="lazy"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Mis à jour<time datetime="2026-03-31">30 mars 2026</time></span></div> <h3 class="post_header">Transformer des formulaires de demande en ligne en résumés PDF à l'aide d'IronPDF</h3> <p class="post_description">Apprenez à utiliser IronPDF pour produire un enregistrement traçable de la soumission d'un formulaire Web -- utile à des fins de conformité gouvernementale.</p> <p class="read_more">Lire la suite<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> <div class="col"> <article class="h-100"> <a href="/fr/blog/using-ironpdf/ironpdf-fintech-receipts/" class="d-block h-100 item_box" title="Reçus et relevés de transactions au format PDF en C# pour les applications FinTech"> <div class="ratio ratio-16x9 blog_listing_image_placeholder ironpdf"><img class="object-fit-cover" alt="Reçus et relevés de transactions au format PDF en C# pour les applications FinTech" src="/static-assets/pdf/blog/ironpdf-fintech-receipts/ironpdf-fintech-receipts-1.webp" width="1865" height="487" decoding="async" loading="lazy"></div> <div class="p-4"> <div class="info d-flex"><span class="post_date d-block flex-grow-1">Mis à jour<time datetime="2026-03-31">30 mars 2026</time></span></div> <h3 class="post_header">Reçus et relevés de transactions au format PDF en C# pour les applications FinTech</h3> <p class="post_description">Lisez pour savoir comment utiliser IronPDF pour créer des enregistrements traçables et horodatés des transactions au point de service</p> <p class="read_more">Lire la suite<i class="fa-solid fa-chevron-right"></i></p> </div> </a> </article> </div> </div> </div> </section> </div> <div class="blog_end_line"></div> <div class="blog_bottom_nav"><div class="blog_bottom_nav row row-cols-2"><div class="text-start text-truncate"><a href="/fr/blog/using-ironpdf/dynamic-pdf-generation/" class="link previous">Comment générer des PDF de manière dynamique en .NET à l'aide d'IronPDF</a></div><div class="text-end text-truncate"><a href="/fr/blog/using-ironpdf/retrieve-pdf-file-from-database-apr-net/" class="link next">Comment récupérer des fichiers PD...</a></div></div></div> </article> </div> <div id="blog_sidebar--right" class="blog_sidebar--right"> <aside id="blog_post--right_content" class="right_column right_sidebar_wrapper"> <div class="sticky-top z-0 specific_sticky_height"> <!-- Tutorial Videos Start --> <!-- Tutorial Videos End --> <div class="block_on_this_page"> <div id="blog_right_scrollspy_menu" class="menu_wrapper"> <h2 class="table_of_contents--header">Sur cette page</h2> <ul id="scroll-menu" class="blog_post_on_this_page"> <li> <a href="#anchor-ajout-d-en-t36-49tes-et-de-pieds-de-page-aux-documents-pdf-en-c" class=""><span>Ajout d'en-têtes et de pieds de page aux documents PDF en C</span></a> </li> <li> <a href="#anchor-pourquoi-les-en-t36-49tes-et-pieds-de-page-pdf-sont-ils-importants-dans-les-documents-professional36-49" class=""><span>Pourquoi les en-têtes et pieds de page PDF sont-ils importants dans les documents Professional ?</span></a> </li> <li> <a href="#anchor-comment-ajouter-un-en-t36-49te-et-un-pied-de-page-de-texte-en-c-36-49" class=""><span>Comment ajouter un en-tête et un pied de page de texte en C# ?</span></a> <ul class=""> <li class=""> <a href="#anchor-sortie"><span>Sortie</span></a> </li> </ul> </li> <li> <a href="#anchor-comment-cr36-49er-des-en-t36-49tes-et-des-pieds-de-page-au-format-html" class=""><span>Comment créer des en-têtes et des pieds de page au format HTML ?</span></a> </li> <li> <a href="#anchor-comment-ajouter-des-en-t36-49tes-36-49-des-documents-pdf-existants" class=""><span>Comment ajouter des en-têtes à des documents PDF existants ?</span></a> <ul class=""> <li class=""> <a href="#anchor-entr36-49e"><span>Entrée</span></a> </li> <li class=""> <a href="#anchor-sortie"><span>Sortie</span></a> </li> </ul> </li> <li> <a href="#anchor-comment-ajouter-des-en-t36-49tes-diff36-49rents-sur-des-pages-diff36-49rentes36-49" class=""><span>Comment ajouter des en-têtes différents sur des pages différentes ?</span></a> <ul class=""> <li class=""> <a href="#anchor-sortie"><span>Sortie</span></a> </li> </ul> </li> <li> <a href="#anchor-comment-mettre-en-36-49uvre-un-contenu-dynamique-au-del36-49-des-num36-49ros-de-page" class=""><span>Comment mettre en œuvre un contenu dynamique au-delà des numéros de page ?</span></a> </li> <li> <a href="#anchor-36-49-quoi-ressemble-l-approche-d-itext-7" class=""><span>À quoi ressemble l'approche d'iText 7?</span></a> <ul class=""> <li class=""> <a href="#anchor-sortie"><span>Sortie</span></a> </li> </ul> </li> <li> <a href="#anchor-comment-les-deux-approches-se-comparent-elles" class=""><span>Comment les deux approches se comparent-elles ?</span></a> <ul class=""> <li class=""> <a href="#anchor-personnalisation-de-l-apparence-de-l-en-t36-49te-et-du-pied-de-page"><span>Personnalisation de l'apparence de l'en-tête et du pied de page</span></a> </li> <li class=""> <a href="#anchor-d36-49ploiements-multiplateformes-et-conteneuris36-49s"><span>Déploiements multiplateformes et conteneurisés</span></a> </li> </ul> </li> <li> <a href="#anchor-quelles-sont-vos-prochaines-36-49tapes" class=""><span>Quelles sont vos prochaines étapes ?</span></a> </li> </ul> </div> </div> <div> <div class="nuget-sidebar-wrapper nuget-sidebar-wrapper--right-sidebar nuget-variant-3"> <div class="nuget-sidebar-header-block"> <div class="nuget-sidebar-header-block__logo-block"> <a href="https://nuget.org/packages/IronPdf" target="_blank"><img loading="lazy" src="/img/nuget.blue.svg" alt="Gratuit pour le développement à partir de NuGet" width="38" height="38" data-modal-id="trial-license-after-download" class="js-modal-open"></a> </div> <div class="nuget-sidebar-header-block__text-block" data-bs-toggle="modal"> <p class="nuget-sidebar-header-block__text-block__big-text"> <a href="https://nuget.org/packages/IronPdf" target="_blank" data-modal-id="trial-license-after-download" class="js-modal-open"> Installer avec <span class="nuget-sidebar-header-block__text-block__big-text--blue">NuGet</span> <span class="nuget-sidebar-header-block__text-block__small-text">nuget.org/packages/<span class="text-block__small-text--inline-block">IronPdf</span></span> </a> </p> </div> </div> <div class="nuget-sidebar-cli vwo-nuget-copy vwo-nuget-copy--ironpdf" data-bs-custom-class="tooltipCopyToClipboard"> <div class="nuget-sidebar-cli__command"> <p class="nuget-sidebar-cli__command__text"> PM > <span class="js-nuget-sidebar-cli__command__text">Install-Package IronPdf</span> </p> </div> <div class="nuget-sidebar-cli__copy-block"> <span class="fas copy-icon-white"></span> </div> </div> </div> </div> <div class="join_bug_bounty"> <h2>Signaler un problème</h2> <ul class="list-unstyled rt-list"> <li class="list-unstyled__item-flex-align-items-center"><i class="fa-regular fa-pen-to-square"></i>   <button class="js-modal-open" data-modal-id="article-feedback-modal">Rejoignez notre Bug Bounty pour Iron Swag</button> </li> </ul> </div> </div> </div> </aside> </div> </div> <!-- offcanvas menu --> <div id="offcanvas_blog_right_sidebar" class="offcanvas offcanvas-end offcanvas_blog_right_sidebar" data-bs-scroll="true" data-bs-backdrop="false" tabindex="-1" aria-labelledby="offcanvas_blog_right_sidebar"> <!-- button toggle offcanvas right sidebar --> <div id="button_toggle_blog_right_sidebar" class="button_toggle_blog_right_sidebar" data-bs-toggle="offcanvas" data-bs-target="#offcanvas_blog_right_sidebar" aria-controls="offcanvasScrolling"> <div class="button_icons_open_offcanvas"><i class="fa-solid fa-angle-left"></i><i class="fa-solid fa-list-ul ms-1"></i></div> <div class="button_icons_close_offcanvas" style="display:none;"><i class="fa-solid fa-x"></i></div> </div> <div class="offcanvas-body" style="box-shadow: 0px 4px 12px 0px rgba(0, 0, 0, 0.25); background-color:#fafafb; padding:0 20px 0;"> <div id="place_holder_offcanvas_blog_right_sidebar"></div> </div> </div> <!-- A/B test new content layout 2025 May, end --> <section style="container-type: inline-size;"></section> </main> <section class="bifrost"></section> <div class="modal fade img-popup-modal" id="img-popup-modal" tabindex="-1" role="dialog" aria-hidden="true"> <div class="modal-dialog" data-bs-dismiss="modal"> <div class="modal-loaded donotdelete" style="font-size: 1px; display: none;"></div> <div class="modal-content" > <div class="modal-title"> <!--<button type="button" class="close" data-bs-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>--> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <img class="img-popup-fullsize" loading="lazy" src="" alt=" related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en C# avec exemple"> <p class="img-popup-caption"></p> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var element = document.querySelector("#img-popup-modal"); document.onElementViewportIntersect(element, function() { importModal(["image-popup.js", "modals/image-popup.css"], "img-popup-modal"); }); }) </script> <div class="modal cv-auto" id="download-modal"> <div class="modal-dialog products-download dm-IronPDF ironpdf"> <div class="modal-loaded donotdelete"></div> <div class="modal-content"> <div class="modal-header"> <i data-bs-dismiss="modal" aria-hidden="true" class="fas fa-times slide-out-close"></i> </div> <div class="modal-body"> <div class="dm-col-left"> <div class="products-title">Essayez IronPDF gratuitement</div> <div class="subtitle">Installez en 5 minutes</div> <div class="image-box"> <img class="img-responsive" loading="lazy" src="/img/license-types/icon-lightbulb.svg" alt="Icon Lightbulb related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en C# av..."> </div> </div> <div class="dm-col-right"> <div class="row"> <div class="col-md-6"> <div class="js-modal-open product-item nuget vwo-nuget-copy" data-modal-id="trial-license-after-download" > <div class="product-section" style="padding: 33px 25px 28px;"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/nuget-logo.svg" alt="Bibliothèque C# NuGet pour PDF" > </div> <div class="col-lg-10 product-info"> <div class="products-title">Installer avec <span>NuGet</span></div> <div class="subtitle"><strong>Version :</strong> 2026.4</div> </div> </div> <div class="js-open-modal-ignore copy-nuget-section" data-toggle="tooltip" data-copy-text="Cliquez pour copier" , data-copied-text="Copié dans le presse-papiers" data-placement="top" title="Cliquez pour copier"> <div class="copy-nuget-row vwo-nuget-copy"> <pre class="install-script">Install-Package IronPdf</pre> <div class="copy-button"> <button class="btn btn-default copy-nuget-script" type="button" data-toggle="popover" data-placement="top" data-content="Copié dans le presse-papiers" aria-label="Copier la commande du gestionnaire de packages" data-original-title="Cliquez pour copier" title="Cliquez pour copier"> <span class="fas copy-icon-white"></span> </button> </div> </div> </div> <div class="nuget-link"> nuget.org/packages/IronPdf/ </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet</span></li> <li><span>Sélectionnez Parcourir et recherchez « IronPDF »</span></li> <li><span>Sélectionnez le package et installez</span></li> </ol> </div> </div> </div> <div class="col-md-6"> <div class="js-modal-open product-item dll" data-modal-id="trial-license-after-download" > <div class="product-section"> <div class="row"> <div class="col-lg-2 product-image"> <img class="img-responsive add-shadow" loading="lazy" src="/img/dll-img.png" alt="C# PDF DLL" > </div> <div class="col-lg-10 product-info"> <div class="products-title">Télécharger <span>DLL</span></div> <div class="subtitle"><strong>Version :</strong> 2026.4</div> </div> </div> <div class="download-dll-section"> <a class="btn btn-red download-library-dropdown dark-version" href="/packages/IronPdf.zip" data-toggle="tooltip" data-placement="bottom" data-html="true" title="<div class='library_download_dropdown_tooltip'><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>Windows</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.MacOs.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>macOS</span></span></div><div class='library_download_dropdown_tooltip__menuitem' data-download-link='/packages/IronPdf.Linux.zip'><span class='library_download_dropdown_tooltip__menuitem_text'><i class='library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux'></i><span class='library_download_dropdown_tooltip_menuitem_text-label'>Linux</span></span></div></div>" download><i class="fas fa-download"></i> Téléchargez maintenant</a> <div class="subtitle">ou téléchargez l'installateur Windows <a href="/packages/IronPdfInstaller.zip" class="ga-windows-installer" title="Téléchargez l'installateur Iron Software pour Windows">ici</a>.</div> </div> </div> <div class="product-section"> <ol class="product-description"> <li><span>Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution</span></li> <li><span>Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »</span></li> </ol> </div> </div> </div> </div> <div class="licensing-link"> Licences à partir de <a href="/fr/licensing/" target="_blank">749 $</a> </div> </div> </div> <div class="dm-modal-footer"> <div class="dm-col-left"> </div> <div class="dm-col-right"> <p class="helpscout-text">Vous avez une question ? <a href="#live-chat-support">Contactez</a> notre équipe de développement.</p> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#download-modal", "download-modal", ["modals/download.css", "download-modal.js"], () => { const dlSection = qs("#download-modal .col-md-6, #download-modal .ironpdf-java__maven-install-section"); const packageUrl = "/packages/IronPdf.zip"; const filename = "IronPdf.zip" if (!dlSection) return; registerDownloadAction(dlSection, "click", packageUrl, filename); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15">15</span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000">1000</span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1">1</span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div class="trial-license__info_2410 d-none d-lg-block"> <div class="bg_product_logo d-none d-xl-block ironpdf"><!-- bg-product-logo --></div> <div class="content_wrapper pt-4 pt-lg-5"> <div class="header type_installed flex-column flex-lg-row js_control_type_installed"> <div class="header__animate_icon installed"> <div class="package_icon_bg"><img class="platform_logo" src="/img/modals/new-design-2410/logo_nuget.svg" width="43" height="42" alt="Nuget Logo" loading="lazy"></div> </div> <div> <div class="header__title text-center text-lg-start"> Maintenant que vous avez installé avec NuGet </div> </div> </div> <div class="header type_downloading flex-column flex-lg-row js_control_type_downloading"> <div class="header__animate_icon downloading"></div> <div> <div class="header__title text-center text-lg-start"> Votre navigateur est en train de télécharger <span class="header__title__product_name">IronPDF</span> </div> </div> </div> <h3 class="header_subtitle text-center text-lg-start type_installed">Étape suivante : Commencer l'essai gratuit de 30 jours</h3> <p class="text-center text-lg-start">Pas de carte de crédit requise</p> <ul class="highlight d-none d-lg-block"> <li><span class="icon_test"></span>Testez dans un environnement en direct</li><li><span class="icon_calendar"></span>Produit pleinement fonctionnel</li><li><span class="icon_support"></span>Support technique 24/5</li> </ul> </div> </div> <style> /* @media (min-width: 992px) { #trial-license-after-download .trial-license__action { } } */ </style> <div class="trial-license__action" style="min-height: 550px;" > <div class="trial-license__action-title" style=" "> Obtenez votre clé d'essai <strong>30 jours</strong> gratuitement. </div> <div class="trial-license__exit-intent-form-sent-title"> Merci.<br>Si vous souhaitez parler à notre équipe de licences : </div> <div id="hubspot-form__thank_you" class="hubspot-form__thank_you"> <p><section class="formright_submitted"><img loading="lazy" src="/img/icons/greencheck_in_yellowcircle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"><div class="thank-you__header">Le formulaire d'essai a été soumis<br><em>avec succès</em>.</div><p>Votre clé d'essai devrait être dans l'e-mail.<br>Si ce n'est pas le cas, veuillez contacter<br><a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a></p></section></p> </div> <div id="hubspot-form__form__trial-license-after-download" class="hubspot-form__form-wrapper"> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var trialLicenseHbsptOptions_form_1a = { region: "na1", portalId: "22630553", formId: "b93685fb-4445-4114-8b0a-4af3ec564c41", locale: "fr", target: "#trial-license-after-download .place_holder--form_1a", cssClass: "hsform_error_v2 hsform_floating_label hsform_intl_phone", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Veuillez entrer une adresse e-mail valide","firstname":"Veuillez entrer votre nom","countrycode":"","phone":"Un num\u00e9ro de t\u00e9l\u00e9phone valide ne peut contenir que des chiffres, +()-. ou x","preferred_communication":"Veuillez s\u00e9lectionner une m\u00e9thode de contact pr\u00e9f\u00e9r\u00e9e"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); buildCountryCodeForPhoneFields($form, 'div.hs-fieldtype-phonenumber'); removeHSFormPlaceHolder($form); }, onFormSubmitted: function($form, data) { trigger_goal('trial_form_submitted'); // trigger goal start // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end setTimeout(function () { $("#trial-license-after-download .trial-license__action-features").hide(); }, 0); // hide 1st form place holder $("#trial-license-after-download .place_holder--form_1a").hide(); $("#trial-license-after-download .place_holder--form_1b").hide(); // show 2nd form place holder $("#trial-license-after-download .place_holder--form_2").show(); /// push submited data to 2nd form setTimeout(function() { $("#trial-license-after-download .trialFormTwo input[name='email']").val(data.submissionValues.email).change(); }, 1000); history.pushState("", document.title, window.location.pathname + "#trial-license-after-download-form-sent"); }, translations: { fr: { fieldLabels: {"email":"Votre email professionnel","firstname":"Nom","countrycode":"Code de composition","phone":"Num\u00e9ro de t\u00e9l\u00e9phone","preferred_communication":"M\u00e9thode de contact pr\u00e9f\u00e9r\u00e9e"} } }, submitText: "Continue", submitButtonClass: "hs-button primary large arrow_right", inlineMessage: "<div class=\"d-none\"></div>", }; // var for form 1b var trialLicenseHbsptOptions_form_1b = Object.assign({}, trialLicenseHbsptOptions_form_1a); trialLicenseHbsptOptions_form_1b.formId = "8c54dcae-960c-4452-b83c-06affb378052"; trialLicenseHbsptOptions_form_1b.target = "#trial-license-after-download .place_holder--form_1b"; // var for form 2 var trialLicenseHbsptOptions_form_2 = { region: "na1", portalId: "22630553", formId: "febf5e33-1edd-45f9-b9b0-6ead75fb1b9a", locale: "fr", cssClass: "trialFormTwo", target: "#trial-license-after-download .place_holder--form_2", inlineMessage: "<div class=\"d-none\"></div>", onFormSubmitted: function ($form, data) { // setCookie("stopFlag", "1", 1); setLocalStorageIfTrialSubmitted(); // Trigger HubSpot goal trigger_goal('second_trial_form_submitted'); $(".hubspot-form__form-wrapper").css("display", "none"); $("#trial-license-after-download .hubspot-form__thank_you").css("padding-top", "60px").show(); // Specific to modal #trial-license-after-download $("#trial-license-after-download .hubspot-form__thank_you section.formright_submitted").css("display", "block"); $("#trial-license-after-download .hubspot-form__thank_you").css("display", "block"); $("#trial-license-after-download .trial-license__action-title").css("display", "none"); $("#trial-license-after-download .trial-license__action-features-single, #trial-license .trial-license__action-features-single").css("display", "none"); // Specific to modal #trial-license $("#trial-license .trial-license__action-title").css("display", "none"); }, }; var selector = document.querySelector("#hubspot-form__form__trial-license-after-download"); const modalSelector = document.querySelector("#trial-license-after-download"); modalSelector?.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1a); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_1b); embedCustomHubspotForm(selector, trialLicenseHbsptOptions_form_2); }, { once: true }); });</script> <div class="place_holder--form_1a vwo_ab_test_phone_extension_a"></div> <div class="place_holder--form_1b vwo_ab_test_phone_extension_b"></div> <div class="place_holder--form_2"></div> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> Planifier un appel </a> </div> <div class="trial-license__exit-intent-form-sent-description"> Vous avez une question ? <a href="#live-chat-support" onclick="return show_helpscout(event)">Contactez</a> notre équipe de développement. </div> <div class="flex-grow-1"><!-- spacer --></div> <div class="trial-license__action-features"> <div class="trial-license__action-features-single"> Aucune carte de crédit ou création de compte requise </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download", debug()); }); }); </script> <div class="modal cv-auto" id="trial-license-after-download-form-sent" tabindex="-1" data-bs-backdrop="true" data-form-id="b93685fb-4445-4114-8b0a-4af3ec564c41" data-ironproduct-key="ironpdf" data-js-modal-id="trial-license-after-download-form-sent"> <div class="modal-config" data-for-product="ironpdf"> <span class="trial-license-inactive-timeout" data-trial-license-inactive-timeout="15">15</span> <span class="trial-license-inactive-timeout-interval" data-trial-license-inactive-timeout-interval="1000">1000</span> <span class="trial-license-reset-state-in-days" data-trial-license-reset-state-in-days="1">1</span> </div> <div class="modal-dialog"> <div class="modal-content modal-content_border-0 modal-content_padding-0"> <div class="trial-license-after-download-form-sent-modal__status__css-loaded" style="display:none; font-size:0px;"><!-- a place holder, when css completely load the font-size will change to 1px; then it will trigger js to make modal visible --></div> <div class="modal-header"> <i class="slide-out-close-bold" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body modal-body_padding-0"> <div class="modal-loaded donotdelete"></div> <div class="trial-license trial-license_light"> <div class="trial-license__info_2410 d-none d-lg-block"> <div class="bg_product_logo d-none d-xl-block ironpdf"><!-- bg-product-logo --></div> <div class="content_wrapper pt-4 pt-lg-5"> <div class="header type_installed flex-column flex-lg-row js_control_type_installed"> <div class="header__animate_icon installed"> <div class="package_icon_bg"><img class="platform_logo" src="/img/modals/new-design-2410/logo_nuget.svg" width="43" height="42" alt="Nuget Logo" loading="lazy"></div> </div> <div> <div class="header__title text-center text-lg-start"> Maintenant que vous avez installé avec NuGet </div> </div> </div> <div class="header type_downloading flex-column flex-lg-row js_control_type_downloading"> <div class="header__animate_icon downloading"></div> <div> <div class="header__title text-center text-lg-start"> Votre navigateur est en train de télécharger <span class="header__title__product_name">IronPDF</span> </div> </div> </div> <h3 class="header_subtitle text-center text-lg-start type_installed">Étape suivante : Commencer l'essai gratuit de 30 jours</h3> <p class="text-center text-lg-start">Pas de carte de crédit requise</p> <ul class="highlight d-none d-lg-block"> <li><span class="icon_test"></span>Testez dans un environnement en direct</li><li><span class="icon_calendar"></span>Produit pleinement fonctionnel</li><li><span class="icon_support"></span>Support technique 24/5</li> </ul> </div> </div> <style> /* @media (min-width: 992px) { #trial-license-after-download-form-sent .trial-license__action { padding-top: 3px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; } } */ </style> <div class="trial-license__action" style="min-height: 270px;" > <div class="trial-license__action-title" style=" "> <strong>Merci.<br> Voir vos options de licence :</strong> </div> <div class="trial-license__exit-intent-form-sent-title"> Merci.<br>Si vous souhaitez parler à notre équipe de licences : </div> <div class="trial-license__action-buttons" style=" "> <a class="trial-license__action-button trial-license__action-button_red trial-license__action-button_wide" style=" " href="/fr/licensing/" > <span class="trial-license__action-button-text"> Voir les licences </span> </a> </div> <div class="trial-license__exit-intent-form-sent-action-button"> <a class="btn btn-red btn-red--exit-intent-form-sent" href="https://help.ironsoftware.com/meetings/ironsoftware/schedule-a-call-with-sales" target="_blank"> <i class="fa fa-phone-alt" aria-hidden="true"></i> Planifier un appel </a> </div> <div class="trial-license__action-description trial-license__action-description_highlighted" style=" "> Une question ? <!-- --><a href="#live-chat-support" >Contactez-nous</a><!-- --> avec notre équipe de développement. </div> <div class="trial-license__exit-intent-form-sent-description"> Vous avez une question ? <a href="#live-chat-support" onclick="return show_helpscout(event)">Contactez</a> notre équipe de développement. </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-after-download-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css"]; importModal(modals, "trial-license-after-download-form-sent", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> /* trialFormSetStep("#trial-license", 1); modalId = "#trial-license"; */ function trialFormSetStep(modal_id, step) { // check is suite modal const isSuite = getHsProductCodeFromUrl() === 'suite'; const modal = document.querySelector(modal_id); const show = (selector) => modal.querySelector(selector).style.display = 'block'; const hide = (selector) => modal.querySelector(selector).style.display = 'none'; if (step === 1) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms show('.page_one'); hide('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 2) { // left contents show('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); show('.page_two'); hide('.page_three'); hide('.page_submitted'); } else if (step === 3) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); show('.page_three'); hide('.page_submitted'); hide('.right .trusted_by'); show('.right .trial_key_sent'); } else if (step === 4) { // left contents hide('.group__started_for_free'); show('.group__started_for_free_completed'); show('.group__booking'); hide('.group__booking_completed'); // right forms hide('.page_one'); hide('.page_two'); hide('.page_three'); show('.page_submitted'); show('.right .trusted_by'); hide('.right .trial_key_sent'); } /* override for suite modal */ if (isSuite == true) { // left contents for suite hide('.group__started_for_free'); hide('.group__started_for_free_completed'); hide('.group__booking'); hide('.group__booking_completed'); show('.group__suite'); hide('.formright_submitted--products'); show('.formright_submitted--suite'); } } window.addEventListener("load", function() { // enabled 3 steps form (won test) window.IRON = window.IRON || {}; window.IRON.enabled3StepsTrialForm = true; }); window.addEventListener("DOMContentLoaded", function() { trialFormSetStep("#trial-license", 1); }); </script> <script data-hbspt-form> /* settings of from one */ var hsFormOptions_one = { region: "na1", portalId: "22630553", formId: "78c61202-075f-4baa-909b-54216b9dede2", // new form information form for all product formInstanceId: "modal-trial-license", locale: "fr", target: "#trial-license .placeholder__hsform--one", cssClass: "hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "Continuer →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Veuillez entrer une adresse e-mail valide","firstname":"Veuillez entrer votre nom","countrycode":"","phone":"Un num\u00e9ro de t\u00e9l\u00e9phone valide ne peut contenir que des chiffres, +()-. ou x","preferred_communication":"Veuillez s\u00e9lectionner une m\u00e9thode de contact pr\u00e9f\u00e9r\u00e9e"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { trialFormSetStep("#trial-license", 2); // trigger goal start trigger_goal('trial_form_submitted'); setLocalStorageIfTrialSubmitted(); // trigger VWO goal window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(238);}); // Fire Custom Event when form submited dataLayer.push({'event':'trial-from-submitted'}); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end /// push submited data to 2nd form and mark readonly setTimeout(function() { $(".modal#trial-license .placeholder__hsform--two input[name='email']").attr('readonly', true).val(data.submissionValues.email).change(); }, 200); }, translations: { fr: { fieldLabels: {"email":"Votre email professionnel","firstname":"Nom","countrycode":"Code de composition","phone":"Num\u00e9ro de t\u00e9l\u00e9phone","preferred_communication":"M\u00e9thode de contact pr\u00e9f\u00e9r\u00e9e"} } }, }; /* settings of from two */ var hsFormOptions_two = { region: "na1", portalId: "22630553", formId: "dbd072d1-1098-4c98-bdc3-7255fc2e0d6b", // existing trial form for each product locale: "fr", target: "#trial-license .placeholder__hsform--two", cssClass: "trialFormTwo hsform_error_v2 hsform_floating_label", submitButtonClass: "hs-button primary large", submitText: "Continuer →", inlineMessage: "<div class=\"d-none\"></div>", onFormReady: function ($form) { var hsFormErrorTooltipMessages = {"email":"Veuillez entrer une adresse e-mail valide","firstname":"Veuillez entrer votre nom","countrycode":"","phone":"Un num\u00e9ro de t\u00e9l\u00e9phone valide ne peut contenir que des chiffres, +()-. ou x","preferred_communication":"Veuillez s\u00e9lectionner une m\u00e9thode de contact pr\u00e9f\u00e9r\u00e9e"}; buildFormErrorTooltips($form, hsFormErrorTooltipMessages); removeHSFormPlaceHolder($form); }, onFormSubmitted: function ($form, data) { // change step to meeting form trialFormSetStep("#trial-license", 3); // trigger window resize for HubSpot meeting form to recalculate the height after update data-src window.dispatchEvent(new Event('resize')); setTimeout(function() { // update iframe from data-src, start const email = data['submissionValues']['email']; const name = data['submissionValues']['firstname']; const phone = data['submissionValues']['phone']; var bookingFormUrl = $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src bookingFormUrl = bookingFormUrl + '&email=' + email; bookingFormUrl = bookingFormUrl + '&firstname=' + name; bookingFormUrl = bookingFormUrl + '&phone=' + phone; $('#trial-license .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', bookingFormUrl); // update iframe from data-src, end // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { }); // listen for the meeting form submit, start // const meetingEventOrigin = 'https://meetings.hubspot.com'; const meetingEventOrigin = 'https://hub.ironsoftware.com'; function handleMessage(event) { // Validate the origin first if (event.origin === meetingEventOrigin) { // only if meetingBookSucceeded if (event.data?.meetingBookSucceeded === true) { // goal for meeting form of 3 steps trial window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(239);}); // Remove this listener after success window.removeEventListener('message', handleMessage); trialFormSetStep("#trial-license", 4); } } } // Register the listener window.addEventListener('message', handleMessage); // listen for the meeting form submit, end }, 200); }, translations: { fr: { fieldLabels: {"email":"Votre email professionnel","firstname":"Nom","countrycode":"Code de composition","phone":"Num\u00e9ro de t\u00e9l\u00e9phone","preferred_communication":"M\u00e9thode de contact pr\u00e9f\u00e9r\u00e9e"} } }, } // load embed forms after hsoptions is ready document.addEventListener("DOMContentLoaded", function() { const selector = document.querySelector("#trial-license .placeholder__hsform--one"); const modalSelector = document.querySelector("#trial-license.modal_new"); modalSelector.addEventListener("shown.bs.modal", function() { embedCustomHubspotForm(selector, hsFormOptions_one); embedCustomHubspotForm(selector, hsFormOptions_two, false); }, { once: true }); }); </script> <div class="modal modal_new trial-license-new cv-auto" id="trial-license" tabindex="-1" data-bs-backdrop="true" data-form-id="dbd072d1-1098-4c98-bdc3-7255fc2e0d6b" style="" data-js-modal-id="trial-license"> <div class="modal-dialog modal-dialog-scrollable modal-fullscreen"> <div class="modal-content p-0"> <div class="position-relative z-1"> <i class="fa-solid fa-x" data-bs-dismiss="modal" aria-hidden="true" style="position:absolute; top:12px; right:12px; width:40px; height:40px; cursor:pointer; display:flex; align-items:center; justify-content:center;font-size:18px; color:#181818;"></i> </div> <div class="modal-body p-0"> <div id="formtrial" class="modal_body"> <div class="modal-loaded donotdelete"></div> <div class="d-flex h-100 gap-0"> <div class="left d-none d-lg-block"> <div class="wrapper"> <div style="flex:0 1 56px;"><!-- spacer --></div> <div><img src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" loading="lazy"></div> <div style="flex:0 1 48px;"><!-- spacer --></div> <div class="bg_wrapper group__started_for_free"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="40" height="40" alt="Clé bleue dans un cercle" loading="lazy">Commencez GRATUITEMENT</div> <div class="subtitle">Pas de carte de crédit requise</div> </section> <section class="content"> <article> <div class="h2">Testez dans un environnement en direct</div> <p>Testez en production sans filigranes.<br>Fonctionne où que vous en ayez besoin.</p> <div class="floating_icon"><i class="fa-kit fa-square-arrow-in"></i></div> </article> <article> <div class="h2">Produit entièrement fonctionnel</div> <p>Profitez de 30 jours de produit entièrement fonctionnel.<br>Configurez-le et faites-le fonctionner en quelques minutes.</p> <div class="floating_icon"><i class="fa-kit fa-calendar-bottom-check"></i></div> </article> <article> <div class="h2">Support technique 24/5</div> <p>Accès complet à notre équipe de support technique durant votre essai produit</p> <div class="floating_icon"><i class="fa-regular fa-messages-question"></i></i></div> </article> </section> </div> <div class="bg_wrapper group__started_for_free_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="Clé grise dans un cercle" loading="lazy">Commencez GRATUITEMENT</div> <div class="subtitle">Le formulaire d'essai a été soumis avec succès.</div> </section> <section class="content"> </section> </div> <div class="bg_wrapper group__booking"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/calendar_circle_blue.svg" width="40" height="40" alt="Calendrier en cercle" loading="lazy">Réservez une démonstration en direct gratuite</div> <div class="subtitle">Pas de contact, pas de détails de carte, pas d'engagement <span class="detail">Réservez une démo personnelle de 30 minutes.<span></div> </section> <section class="content"> <div class="title_of_listing">Voilà ce à quoi vous pouvez vous attendre :</div> <article> <p>Une démonstration en direct de notre produit et de ses fonctionnalités clés</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>Obtenez des recommandations de fonctionnalités spécifiques au projet</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> <article> <p>Nous répondons à toutes vos questions afin de nous assurer que vous disposez de toutes les informations dont vous avez besoin. (Sans aucun engagement)</p> <div class="floating_icon"><i class="fa-regular fa-circle-check"></i></div> </article> </section> </div> <div class="bg_wrapper group__booking_completed"> <section class="title"> <div class="h1"><img src="/img/modals/trial-license-new/checked_circle_grey.svg" width="40" height="40" alt="Clé grise dans un cercle" loading="lazy">Réservez une démonstration en direct gratuite</div> <div class="subtitle">Votre réservation a été effectuée <span class="detail">Vérifiez votre e-mail pour la confirmation</span></div> </section> <section class="content"> </section> </div> <style> ul.suite_features { list-style: none; li + li { margin-top: 6px } } .grid_listing_products { margin-top: 48px; display: grid; grid-template-columns: auto auto; row-gap:16px; justify-content: space-between; } </style> <div class="group__suite" style="display:none;"> <h2 class="iron_color--deep_blue iron_font--black iron_fs--30" style="margin:0 0 16px;">Want to deploy IronSuite to a live project for FREE?</h2> <h3 class="iron_color--pink iron_font--bold iron_fs--20" style="margin:24px 0 16px;">What’s included?</h3> <ul class="suite_features iron_color--black iron_font--normal iron_fs--18 p-0 m-0"> <li><i class="fa-solid fa-check iron_color--green me-2"></i>Test in production without watermarks</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>30 days fully functional product</li> <li><i class="fa-solid fa-check iron_color--green me-2"></i>24/5 technical support during trial</li> </ul> <div class="grid_listing_products"> <div><img src="\img\products\h-126\logo-ironpdf.svg" height="32" width="auto" alt="ironpdf Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironword.svg" height="32" width="auto" alt="ironword Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironxl.svg" height="32" width="auto" alt="ironxl Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironppt.svg" height="32" width="auto" alt="ironppt Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironocr.svg" height="32" width="auto" alt="ironocr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironbarcode.svg" height="32" width="auto" alt="ironbarcode Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironqr.svg" height="32" width="auto" alt="ironqr Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironprint.svg" height="32" width="auto" alt="ironprint Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironzip.svg" height="32" width="auto" alt="ironzip Logo" loading="lazy"></div> <div><img src="\img\products\h-126\logo-ironwebscraper.svg" height="32" width="auto" alt="ironwebscraper Logo" loading="lazy"></div> </div> </div> <div style="flex:1 1 auto;"><!-- spacer --></div> <div class="modal_new_trial__support_team"> <div class="image_wrapper"> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-6.webp" loading="lazy" alt="Support Team Member 6 related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF e..."> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-14.webp" loading="lazy" alt="Support Team Member 14 related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF ..."> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-4.webp" loading="lazy" alt="Support Team Member 4 related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF e..."> <img class="lazy" width="64" height="64" aria-label="" src="/img/support-team/support-team-member-2.webp" loading="lazy" alt="Support Team Member 2 related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF e..."> </div> <div class="online">En ligne 24/5</div> </div> <div class="need_help"><strong>Vous avez besoin d'aide?</strong> Notre équipe commerciale se fera un plaisir de vous aider.</div> <a href="https://ironsoftware.com/fr/enterprise/trial" class="enterprise-trial__cta">Essayez l'Essai Enterprise<i class="fa-solid fa-arrow-right"></i></a> <div style="flex:0 1 48px;"><!-- spacer --></div> </div> </div> <div class="right" style="flex:1 1 auto;"> <div class="wrapper"> <div style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-none text-center"> <img loading="lazy" src="/img/products/ironpdf-logo-text-dotnet.svg" alt="ironpdf_for_dotnet_log2o" class="product_logo" style="max-height:50px;" height="50" width="auto"> </div> <!-- Page One --> <div class="right_content page_one"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="Clé dans le cercle bleu" loading="lazy"></div> <div class="h2">Obtenez votre <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">clé d'essai de 30 jours</strong> instantanément.</div> </div> <div style="height:48px;"><!-- spacer --></div> <div class="placeholder__hsform--one"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="bullet_checked">Aucune carte de crédit ou création de compte requise</div> </div> </div> <!-- Page Two --> <div class="right_content page_two" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/key_circle_blue.svg" width="80" height="80" alt="Clé dans le cercle bleu" loading="lazy"></div> <div class="h2">Obtenez votre <strong class="visible-xs-block visible-sm-inline visible-md-inline visible-lg-inline">clé d'essai de 30 jours</strong> instantanément.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="placeholder__hsform--two"></div> <div> <div class="no_credit_required"><img loading="lazy" src="/img/modals/trial-license-new/bullet_checked.svg" width="16" height="16" alt="Clé bleue dans un cercle">Aucune carte de crédit ou création de compte requise</div> </div> </div> <!-- Page Three (meeting form) --> <div class="right_content page_three" style="display:none;"> <div class="header"> <div><img src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="80" height="80" alt="Green Check in orange circle" loading="lazy"></div> <div class="h2">Le formulaire d'essai a été soumis <span class="iron_font--bold">avec succès</span>.</div> </div> <div style="height:24px;"><!-- spacer --></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/iron-software-sales/demo-trial?embed=true"></div> <!-- End of Meetings Embed Script --> </div> </div> <!-- Page Submitted --> <div class="right_content page_submitted formright_submitted" style="display:none;"> <div class="d-none d-md-block" style="flex:0 1 80px;"><!-- spacer --></div> <div class="d-block d-md-none" style="flex:0 1 24px;"><!-- spacer --></div> <!-- submitted for products --> <div class="formright_submitted--products" style="display:block;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">Merci de commencer un essai</div> <div class="text p-3"></p><p>Veuillez vérifier votre email pour la clé de licence d'essai.</p><p>Si vous ne recevez pas d'email, veuillez démarrer un <a href="#livechat" onclick="return window.HubSpotConversations.widget.open()">live chat</a> ou envoyer un email à <a href="mailto:support@ironsoftware.com">support@ironsoftware.com</a></p></div> <div> <div style="margin:0 auto; width:100%; max-width:248px;"> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_red m-0" style="width:100%; font-size:14px;" href="https://www.nuget.org/packages/IronPdf/" target="_blank"><i class="trial-license__action-button-icon nuget-icon-white2"></i><span class="trial-license__action-button-text">Installer avec NuGet</span></a></div> <div class="my-3"><a class="trial-license__action-button trial-license__action-button_white m-0" style="width:100%; font-size:14px;" href="/fr/licensing/"><span class="trial-license__action-button-text">Voir les licences</span></a></div> </div></div> </div> <!-- submitted for suite --> <div class="formright_submitted--suite" style="display:none; padding-top:80px;"> <div><img loading="lazy" src="/img/modals/trial-license-new/green_check_in_orange_circle.svg" width="100" height="100" alt="badge_greencheck_in_yellowcircle"></div> <div class="title">Merci</div> <div class="text p-3">Votre clé d'essai devrait être dans l'e-mail.<br>Si elle ne l'est pas, veuillez contacter <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a></div> </div> </div> <div style="flex:1 1 96px"><!-- spacer --></div> <section class="trusted_by"> <ul class="our_clients"><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_aetna.svg" alt="Logo Aetna" width="80" height="20"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_nasa.svg" alt="Logo NASA" width="64" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_ge.svg" alt="Logo GE" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_porsche.svg" alt="Logo Porsche" width="40" height="52"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_usds.svg" alt="Logo USDA" width="54" height="54"></li><li><img class="img-fluid" loading="lazy" src="/img/modals/trial-license-new/logo_qatar.svg" alt="Logo Qatar" width="114" height="32"></li></ul> <div class="h2">Rejoignez les millions d'ingénieurs qui ont essayé IronPDF</div> </section> <section class="trial_key_sent text-center iron_color--black iron_font--normal iron_fs--14 iron_lh--16" style="display:none;"> Votre clé d'essai devrait être dans l'e-mail.<br>Si elle ne l'est pas, veuillez contacter <a href="mailto:support@ironsoftware.com" aria-label="Contact support" class="iron_color--deep_blue iron_font--medium iron_hover_color--pink">support@ironsoftware.com</a> </section> <div style="flex:0 1 80px"><!-- spacer --></div> </div> </div> </div> </div> </div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license", debug()); }); }); </script> <script> function getHsProductCodeFromUrl() { const url = window.location.href; if (url.includes("ironpdf.com") || url.includes("ironpdf.local")) { if (url.includes("/java/")) return "pdf-java"; if (url.includes("/python/")) return "pdf-python"; if (url.includes("/nodejs/")) return "pdf-nodejs"; return "pdf"; } else if (url.includes("ironsoftware.com") || url.includes("ironsoftware.local")) { if (url.includes("/word/")) return "word"; if (url.includes("/ocr/")) return "ocr"; if (url.includes("/webscraper/")) return "webscraper"; if (url.includes("/barcode/")) return "barcode"; if (url.includes("/excel/")) return "excel"; if (url.includes("/qr/")) return "qr"; if (url.includes("/zip/")) return "zip"; if (url.includes("/word/")) return "word"; if (url.includes("/print/")) return "print"; if (url.includes("/securedoc/")) return "securedoc"; if (url.includes("/ppt/")) return "ppt"; if (url.includes("/python/excel/")) return "excel-python"; return "suite"; } } function enabledAbandonTrialForm() { function s(e = "") { const headers = new Headers(); headers.append("Content-Type", "application/json"); const body = JSON.stringify({ "fields": [{ "name": "email", "value": e }, { "name": "interested_products", "value": getHsProductCodeFromUrl() } ], "context": { "pageUri": window.location.href, "pageName": window.location.href.split('#')[0] } }); fetch("https://api.hsforms.com/submissions/v3/integration/submit/22630553/e036830d-c04a-4cb9-a5a0-2ba606d5de9f", { method: "POST", headers: headers, body: body, redirect: "follow" }).then((response) => response.text()).then((result) => console.log(result)).catch((error) => console.error(error)); } const w = 'email'; const t = 'trial-license'; const l = 'trial-license-new'; const f = 'name'; const fullScreenTrialModal = document.getElementById(t); if (fullScreenTrialModal && fullScreenTrialModal.classList.contains(l)) { fullScreenTrialModal.addEventListener('hide.bs.modal', function() { let e = []; document.querySelectorAll('#' + t + ' input[' + f + '="' + w + '"]').forEach(function(input) { if (input.value != '' && input.value != null && input.value.length >= 4) { e.push(input.value); } }); if (e.length > 0) { s(e[0]); } }); } }; function enabledSocialTrial() { const target = '.modal#trial-license .right_content.page_one'; const insertAfter = '.no_credit_required'; // Add place holder for social login document.querySelector(target + ' ' + insertAfter).insertAdjacentHTML("afterend", '<div id="firebaseui-auth-container"><div class="or_separator">OR</div></div>'); const firebaseuiAuthContainer = document.querySelector(target + ' #firebaseui-auth-container'); const currentPageUri = window.location.href; function submitHsform(formData) { const myHeaders = new Headers(); const hsu = "https://api.hsforms.com/submissions/v3/integration/submit/23795711/98897ae8-f5f7-4636-ae9e-98d808bc59b7"; myHeaders.append("Content-Type", "application/json"); const raw = JSON.stringify({ "fields": [{ "name": "email", "value": formData.email }, { "name": "firstname", "value": formData.name }, { "name": "comment", "value": "Submit via social login" } ], "context": { "pageUri": currentPageUri, "pageName": "Trial Submit" } }); fetch(hsu, { method: "POST", headers: myHeaders, body: raw, redirect: "follow" }) .then((response) => response.text()) .then((result) => console.log(result)) .catch((error) => console.error(error)); } // helper to load a script function loadScript(src) { return new Promise(resolve => { const s = document.createElement('script'); s.src = src; s.onload = resolve; document.head.appendChild(s); }); } // helper to load CSS function loadCSS(href) { const l = document.createElement('link'); l.rel = "stylesheet"; l.href = href; document.head.appendChild(l); } // Make sure related files are loaded, prevent miss behavior. Promise.all([ loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-app-compat.js"), loadScript("https://www.gstatic.com/firebasejs/9.23.0/firebase-auth-compat.js"), loadScript("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.js"), loadCSS("https://www.gstatic.com/firebasejs/ui/6.0.1/firebase-ui-auth.css"), ]).then(() => { // Firebase config const firebaseConfig = { apiKey: "AIzaSyCsJiQyqdfI_YcNRxxpVUJ_pvicKmH9dX4", authDomain: "iron-authentication.firebaseapp.com", projectId: "iron-authentication", storageBucket: "iron-authentication.firebasestorage.app", messagingSenderId: "381801101678", appId: "1:381801101678:web:2d637bb0cdf2377998e97f" }; // init authn app firebase.initializeApp(firebaseConfig); // FirebaseUI const ui = new firebaseui.auth.AuthUI(firebase.auth()); ui.start('#firebaseui-auth-container', { signInFlow: 'popup', signInOptions: [{ provider: firebase.auth.GoogleAuthProvider.PROVIDER_ID, scopes: [ 'email', 'profile', ], customParameters: { prompt: 'select_account' } }, { provider: firebase.auth.GithubAuthProvider.PROVIDER_ID, scopes: [ 'user:email', 'read:user', ], customParameters: { prompt: 'select_account' } }, ], callbacks: { signInSuccessWithAuthResult: function(authResult) { const user = authResult.user; const userEmail = user.email || user.providerData[0]?.email; const userName = user.displayName; // Place info into the HS form const emailInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="email"]'); const nameInput = document.querySelector('.modal#trial-license .right_content.page_two .placeholder__hsform--two form input[name="firstname"]'); // interact the dom document.querySelector('.modal#trial-license .right_content.page_one').style.display = 'none'; document.querySelector('.modal#trial-license .right_content.page_two').style.display = 'block'; var emailInputField = document.querySelector('.modal#trial-license .placeholder__hsform--two input[name="email"]'); if (emailInputField) { emailInputField.readOnly = true; emailInputField.value = userEmail; emailInputField.dispatchEvent(new Event('change', { bubbles: true })); } if (emailInput) { emailInput.value = userEmail; emailInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } if (nameInput) { nameInput.value = userName; nameInput.dispatchEvent(new InputEvent('input', { bubbles: true, cancelable: true })); } submitHsform({ "email": userEmail, "name": userName }) firebaseuiAuthContainer.style.display = 'none'; return false; } } }); }); return; } // enabledAbandonTrialForm(); // enabledSocialTrial(); </script> <script> document.addEventListener("DOMContentLoaded", function() { var selector = "#trial-license-form-sent"; document.onElementViewportIntersect(selector, function() { var modals = ["trial-license.util.js", "modals/trial-license.css", "modals/trial-license-new.css"]; importModal(modals, "trial-license-form-sent", debug()); }); }); </script> <div class="modal fade" id="talk-to-sales" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content talk_to_sales"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal"><img src="/img/modals/talk_to_sales/icon_close_modal.svg" width="20" height="20" alt="close modal" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo"><img src="/img/modals/talk_to_sales/main_logo.svg" width="220" height="40" alt="Logo Iron Suite Enterprise" loading="lazy"></div> <div class="h2">Parlez à l'Équipe de Vente</div> <p class="sub_title">Réservez une Consultation sans Engagement</p> <div class="team_expert_photo"> <img src="/img/modals/talk_to_sales/team_expert.webp" width="248" height="56" alt="Équipe de conseil Iron Software Entreprise" class="img-fluid" loading="lazy"> </div> <div class="how_we_help"> <div class="h3">Comment pouvons-nous vous aider :</div> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Consultez votre flux de travail et vos points de douleur</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Voyez comment d'autres entreprises répondent à leurs besoins en matière de documents .NET</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Toutes vos questions reçoivent une réponse pour vous assurer d'avoir toutes les informations nécessaires. (Aucun engagement de quelque nature que ce soit.)</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Obtenez un devis personnalisé pour les besoins de votre projet</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div style="flex:0 1 84px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="form_title">Obtenez Votre Consultation sans Engagement</div> <p class="sub_title">Remplissez le formulaire ci-dessous ou envoyez un email à <a href="mailto:sales@ironsoftware.com" aria-title="">sales@ironsoftware.com</a></p> </div> <div id="form_wrapper" class="form_wrapper" style="min-height: 488px;"> <div class="form_placeholder"></div> <p class="text_below_form"><i class="fa-solid fa-shield-heart"></i>Vos informations seront toujours <strong>gardées confidentielles.</strong></p> </div> <div style="flex:0 1 98px; min-height:24px;"><!-- spacer --></div> <div class="trusted_by"> <div class="h3">De confiance par des millions d'ingénieurs dans le monde entier</div> <div><img src="/img/modals/talk_to_sales/trusted_by_logos.webp" width="552" height="97" alt="Logos des clients d'Iron Software" class="img-fluid" loading="lazy"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot // HubSpot form CSS is global; with multiple instances it can affect the wrong form. // Toggle the stylesheet with the modal to prevent modal submissions // from visually updating the page form. let hsCss; var salesTalkSelector = document.querySelector("#talk-to-sales"); salesTalkSelector?.addEventListener("hidden.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss = document.querySelector(`link[rel="stylesheet"][type="text/css"][href="/front/css/hbsptforms.css?v=1776149867"]`); hsCss && (hsCss.disabled = true); } }); salesTalkSelector?.addEventListener("show.bs.modal", (evt) => { if (evt.target.id === "talk-to-sales") { hsCss && (hsCss.disabled = false); } }); var this_hsFormID = "dd27b8f3-83d9-4518-8fbc-8d07ec8b0761"; var this_hsFormSubmitText = "Demander un Devis"; var this_hsFormSubmittedText = '<div class="hsform_submitted_badge"></div><div class="hsform_submitted_text">Merci ! pour avoir soumis le formulaire</div>'; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: "fr", inlineMessage: this_hsFormSubmittedText, submitText: this_hsFormSubmitText, target: "#form_wrapper", cssClass: "hsform_talk-to-sales iron_hsform_error_v2", translations: { "fr": { fieldLabels: {"email":"Votre email professionnel","firstname":"Nom","countrycode":"Code de composition","phone":"Numéro de téléphone","preferred_communication":"Méthode de contact préférée"} } }, onFormReady: function($form) { // alway scoped with $form // inject error element (icon and tooltip) var this_hsFormErrors = {"email":"Veuillez entrer une adresse e-mail valide","firstname":"Veuillez entrer votre nom","countrycode":"","phone":"Un numéro de téléphone valide ne peut contenir que des chiffres, +()-. ou x","preferred_communication":"Veuillez sélectionner une méthode de contact préférée"}; var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": this_hsFormErrors.firstname || "Veuillez entrer votre nom", ".hs-form-field.hs-email": this_hsFormErrors.email || "Veuillez entrer une adresse e-mail valide", ".hs-form-field.hs-phone": this_hsFormErrors.phone || "Un numéro de téléphone valide ne peut contenir que des chiffres, +()-. ou x", } for (var classname in this_hsFormErrorTooltipMessages) { const errorElement = $('<div/>', { class: 'iron-hsform-error-element', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(errorElement); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, el) { bootstrap.Tooltip.getOrCreateInstance(this); }); }, onFormSubmitted: function($form) { // hide form header, form making sense of submitted form $form.parent().parent().parent().find('.content_right__hsform_header').hide(); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(229);}); } }; setupModalPopupWithHubSpotForm(salesTalkSelector, "talk-to-sales", ["modals/talk_to_sales.css"], this_hsFormConfig, "#talk-to-sales div.form_wrapper"); }); </script> <!-- modal start --> <div class="modal fade cv-auto" id="booking-demo" tabindex="-1"> <div class="modal-dialog modal-fullscreen modal-dialog-scrollable"> <div class="modal-content modal_booking_demo"> <div class="modal-loaded donotdelete"></div> <!-- close modal button --> <button type="button" class="button_close_modal" data-bs-dismiss="modal" aria-label="Close"><img src="/img/modals/booking_demo/icon_close_modal.svg" width="20" height="20" alt="close modal button" loading="lazy"></button> <!-- modal content, start --> <div class=""> <div class="d-flex align-items-stretch vh-100"> <div class="content_left d-none d-md-flex flex-column"> <div class="product_logo_wrapper"><img class="product_logo" src="/img/products/ironpdf-logo-text-dotnet-white.svg" width="170" height="28" alt="IronPDF pour .Net" loading="lazy"></div> <div style="flex:0 1 56px;"><!-- spacer --></div> <div class="h2">Réservez une démonstration en direct gratuite</div> <p class="sub_title">Réservez une démonstration personnelle de 30 minutes.</p> <p class="sub_title_emphasis">Pas de contrat, pas de détails de carte, pas d'engagement.</p> <div style="flex:0 1 12px;"><!-- spacer --></div> <div class="team_expert_photo_wrapper"> <img loading="lazy" src="/img/modals/booking_demo/team_expert.webp" width="496" height="112" alt="Équipe de démonstration de produits Iron Software" class="team_expert_photo"> </div> <div style="flex:0 1 40px;"><!-- spacer --></div> <div class="how_we_help"> <span class="h3">Voilà ce à quoi vous pouvez vous attendre :</h3> <ul> <li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Une démonstration en direct de notre produit et de ses fonctionnalités clés</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Obtenez des recommandations de fonctionnalités spécifiques au projet</span></li><li><span class="d-block"><i class="far fa-check-circle"></i></span><span class="d-block flex-grow-1">Toutes vos questions sont répondues pour vous assurer d'avoir toutes les informations dont vous avez besoin.<br>(Aucun engagement quel qu'il soit.)</span></li> </ul> </div> </div> <div class="content_right d-flex flex-column"> <div class="d-none d-md-block" style="flex:0 0 48px;"><!-- spacer --></div> <div class="d-none d-md-block hsform_progress"> <div class="line"></div> <div class="dot step-1"></div> <div class="dot step-2"></div> <div class="text step-1">CHOISIR UN TEMPS</div> <div class="text step-2">VOS INFORMATIONS</div> </div> <div class="form_title">Réservez votre <strong>Démonstration en direct</strong> gratuite</div> <div class="d-none d-md-block" style="height:72px;"><!-- spacer --></div> <div class="content_right__hsform_header"> <div class="text-center"> <img loading="lazy" src="/img/modals/booking_demo/booking_badge.svg" class="img-fluid mx-auto" width="234" height="170" alt="Booking Badge related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en C# ave..."> </div> </div> <div class="hsform_loader_wrapper"> <div class="hsform_loader"></div> </div> <div class="form_wrapper hsform_schedule_email" style="min-height: 201px;"></div> <div class="hsform_schedule_meeting"> <!-- Start of Meetings Embed Script --> <div class="meetings-iframe-container" data-src="https://hub.ironsoftware.com/meetings/ironsoftware/demo?embed=true"></div> <!-- End of Meetings Embed Script --> </div> <div style="flex:0 0 24px;"><!-- spacer --></div> <div style="flex:0 1 98px;"><!-- spacer --></div> <div class="trusted_by"> <h3 class="h3">De confiance par des millions d'ingénieurs dans le monde entier</h3> <div><img loading="lazy" src="/img/modals/booking_demo/trusted_by_logos.webp" width="574" height="54" alt="Logos des clients d'Iron Software" class="img-fluid"></div> </div> </div> </div> </div> <!-- modal content, end --> </div> </div> </div> <script data-hbspt-form> document.addEventListener("DOMContentLoaded", function() { var bookingDemoSelector = document.querySelector("#booking-demo"); // iron_hsform_error_v2 (2024 DEC) // required: css group ".iron_hsform_error_v2" // required: label from hubspot window.currentModalID = "#booking-demo"; var this_hsFormID = "28570e7d-08f2-41c5-ab5b-b00342515d68"; var this_hsFormSubmitText = "Commencer la réservation"; var this_hsFormConfig = { region: "na1", portalId: "22630553", formId: this_hsFormID, locale: 'en', submitText: this_hsFormSubmitText, cssClass: "iron_hsform_meeting iron_hsform_error_v2", onFormReady: function($form) { /* create error tooltip, start */ // alway scoped with $form // inject error element (icon and tooltip), then hide them var this_hsFormErrorTooltipMessages = { ".hs-form-field.hs-firstname": "Veuillez entrer votre nom", ".hs-form-field.hs-email": "Veuillez entrer une adresse e-mail valide", ".hs-form-field.hs-phone": "", }; for (var classname in this_hsFormErrorTooltipMessages) { const invalidAttr = $('<div/>', { class: 'invalid-field', 'data-toggle': 'tooltip', 'data-placement': 'top', title: this_hsFormErrorTooltipMessages[classname] }); $form.find(classname).append(invalidAttr); } // create bootstrap's tooltip inside this form only $form.find('[data-toggle="tooltip"]').each(function(index, element) { bootstrap.Tooltip.getOrCreateInstance(element); }); /* create error tooltip, end */ }, onFormSubmitted: function($form, data) { $(currentModalID + ' .content_right__hsform_header').hide(); $(currentModalID + ' .hsform_schedule_email').hide(); $(currentModalID + ' .trusted_by').hide(); $(currentModalID + ' .hsform_loader_wrapper').show(); dataLayer.push({ 'event': 'book_live_demo' }); window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(234); }); setTimeout(function() { // collect email address after form submitted const email = data['submissionValues']['email']; // get data-src from next form var nextFormDataSrc = $('.hsform_schedule_meeting .meetings-iframe-container').attr('data-src'); // generate new data-src nextFormDataSrc = nextFormDataSrc + '&email=' + email // inject new data-src to next form $(currentModalID + ' .hsform_schedule_meeting .meetings-iframe-container').attr('data-src', nextFormDataSrc); // call next form manually after update data-src $.getScript('https://static.hsappstatic.net/MeetingsEmbed/ex/MeetingsEmbedCode.js', function() { $(currentModalID + ' .hsform_loader_wrapper').hide(); $(currentModalID + ' .hsform_schedule_meeting').show(); }); }, 0); }, }; /* for form progress, start */ var hsMeetingFormActivated = false; window.addEventListener("message", function(event) { if (event.origin == "https://meetings.hubspot.com" && event.data == "readyForConsentListener" && hsMeetingFormActivated == false) { hsMeetingFormActivated = true; $(currentModalID + ' .hsform_progress').css("visibility", "visible"); $(currentModalID + ' .hsform_progress .step-1.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data != "readyForConsentListener" && hsMeetingFormActivated) { // console.log('>> second meeting form displaying') $(currentModalID + ' .hsform_progress .step-1.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-1.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-1.text').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').addClass('active'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('active'); $(currentModalID + ' .hsform_progress .line').addClass('active'); } if (event.origin == "https://meetings.hubspot.com" && event.data.meetingBookSucceeded && hsMeetingFormActivated) { // console.log('>> meeting form submitted') $(currentModalID + ' .hsform_progress .step-2.dot').addClass('completed'); $(currentModalID + ' .hsform_progress .step-2.dot').html('<i class="fas fa-check"></i>'); $(currentModalID + ' .hsform_progress .step-2.text').addClass('completed'); } }); /* for form progress, end */ setupModalPopupWithHubSpotForm(bookingDemoSelector, "booking-demo", ["modals/booking_demo.css"], this_hsFormConfig, "#booking-demo .form_wrapper.hsform_schedule_email"); }); </script> <!-- modal end --> <!-- Article Documentation Typeform Modal START --> <div class="modal fade cv-auto" id="article-feedback-modal" tabindex="-1" data-bs-backdrop="true" aria-modal="true" aria-hidden="true" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <i class="fas fa-times slide-out-close" data-bs-dismiss="modal" aria-hidden="true"></i> </div> <div class="modal-body"> <div class="modal-loaded donotdelete"></div> <div class="article-feedabck__wrapper" id="anchor-improve-the-article" data-tf-widget="zrOqRbmz" data-tf-iframe-props="title=Article feedback" data-tf-medium="snippet" data-tf-hidden="source=https://ironpdf.com/fr/blog/using-ironpdf/read-header-footer-itextsharp" data-tf-disable-auto-focus ></div> <script> document.addEventListener("DOMContentLoaded", function() { setupModalPopup("#article-feedback-modal", "article-feedback-modal", ["https://embed.typeform.com/next/embed.js", "modals/article-typeform.css"]); }); </script> </div> </div> </div> </div> <!-- Article Documentation Typeform Modal END --> <!-- Full Width Code Example Modal START --> <div class="modal full-width-code-example-modal cv-auto" tabindex="-1" id="fullWidthCodeExample" role="dialog"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-loaded donotdelete"></div> <div class="modal-header"> <button title="Close" data-bs-dismiss="modal" aria-hidden="true" class="full-width-code-example-modal__close-button"> <i class="fas fa-times" data-bs-dismiss="modal" aria-hidden="true"></i> </button> </div> <div class="modal-body"></div> </div> </div> </div> <script> document.addEventListener("DOMContentLoaded", function() { var copyButtonSibling = null; const fwCSEl = document.querySelector("#fullWidthCodeExample"); const fwCSModal = bsModal(fwCSEl); document.querySelectorAll(".js-full-screen-code-example-modal").forEach((exBtn) => { exBtn.addEventListener("click", (ev) => { copyButtonSibling = Array.from(getSiblings(exBtn)).filter(sibling => sibling.classList.contains('js-clipboard-button') || sibling.classList.contains('copy-clipboard'))[0]; let copyHoverVal = copyButtonSibling.getAttribute("title"); let copyDataHoverVal = copyButtonSibling.getAttribute("data-original-title"); let codeExampleContent = exBtn.closest(".code-content")?.cloneNode(true); if (!codeExampleContent) { codeExampleContent = exBtn.closest(".code-explorer__content").cloneNode(true); } if (codeExampleContent) { fwCSEl.querySelector(".modal-body").replaceChildren(codeExampleContent); fwCSEl.querySelector(".copy-clipboard")?.setAttribute("title", copyDataHoverVal != '' ? copyDataHoverVal : copyHoverVal); openModalPopup("fullWidthCodeExample", null, false); } }); }); fwCSEl.addEventListener("click", (ev) => { const target = ev.target.closest(".js-exit-full-screen-code-example-modal, .full-width-code-example-modal__close-button"); if (!target) return; const sib = Array.from(getSiblings(target)).filter(sibling => sibling.classList.contains('copy-clipboard'))[0]; if (!sib) return; copyButtonSibling.setAttribute('title', sib.getAttribute('title')); fwCSModal.then((modal) => { modal.hide(); }); }); setupModalPopup("#fullWidthCodeExample", "fullWidthCodeExample", ["modals/code-examples.css"]); }); </script> <!-- Full Width Code Example Modal END --> <script> // toggle dropdown trial form function vwoEnabledHsFormAtStickyFooter() { load_$(() => { // load hubspot form dynamically function dynamicLoadHsForms(formOption, target) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; option.target = target; hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } // disable open the modal on click at sticky footer bar const $footerSticky = $("#footer-sticky"); $footerSticky.replaceWith($footerSticky.clone(true)); // hide default black cta button $('#footer-sticky-cta-button').hide(); // show a variant hsform $('#placeHolderForHsFormAtStickyFooter').show(); // styling variant $("#footer-sticky").css({ 'cursor': 'default', 'height': '52px' }); $('#footer-sticky .support-text').css({ 'cursor': 'default', }); // hsform options const hsFormOptionsAtStickyFooter = { portalId: "22630553", region: "na1", locale: "en", formId: "78c61202-075f-4baa-909b-54216b9dede2", formInstanceId: "sticky-footer-trial", submitText: "Essai gratuit", inlineMessage: "Merci, veuillez vérifier votre email pour votre essai gratuit.", onFormReady: function($form) { // insert product_id to form hidden input // $form.find('input[name="2-12260276/trial_products"]').val(window.IRON.product.code.toUpperCase()).change(); const el = document.querySelector('#placeHolderForHsFormAtStickyFooter'); const tooltip = new bootstrap.Tooltip(el, { placement: 'top', trigger: 'manual', title: 'Email requis pour recevoir la clé d\'évaluation', }); const emailInput = $form.find('input[type="email"]')[0]; const observer = new MutationObserver((mutations) => { const mutation = mutations[0]; if (mutation.attributeName === 'class') { if (emailInput.classList.contains('invalid')) { tooltip.show(); setTimeout(() => { tooltip.hide(); }, 3000); } else { tooltip.hide(); } } }); observer.observe(emailInput, { attributes: true, attributeFilter: ['class'] }); }, onFormSubmitted: function($form, data) { // trigger goal start window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() { _vis_opt_goal_conversion(237); }); // Fire Custom Event when form submited dataLayer.push({ 'event': 'trial-from-submitted' }); // HubSpot hubspot_custom_conversion_trigger("pe22630553_trial_from_submitted_v2"); // trigger goal end const nextForm = ".modal#trial-license .placeholder__hsform--two form"; const waitForTargetInput = setInterval(() => { if ($(nextForm).length) { clearInterval(waitForTargetInput); $(nextForm + " input[name='email']").val(data.submissionValues.email).change(); $(nextForm + " input[name='email']").attr('readonly', true); } }, 100); // open full trial modal, jump to step 2 trialFormSetStep('#trial-license', 2); $('#trial-license').modal('show'); }, }; dynamicLoadHsForms(hsFormOptionsAtStickyFooter, "#placeHolderForHsFormAtStickyFooter"); }); } </script> <div id="footer-sticky" class="fixed-support-bar footer-sticky__vwo-test js-hide-footer-on-scroll js-search-offset-block js-modal-open" data-modal-id="trial-license" > <div class="support-text"> <span class="support-text__full-power">Essai de 30 jours → Produit complet. Pas de limites. Pas de carte.</span> <a id="footer-sticky-cta-button" aria-label="Licence d'essai d'Iron Software" class="js-fixed-support-bar-button vwo-homepage-start-trial-cta-button--control btn btn-red btn-white-red" > <i class="fas fa-key d-inline"></i><span class="d-inline">Essai gratuit</span> </a> <div id="placeHolderForHsFormAtStickyFooter"><!-- placeholder --></div> </div> </div> <script> // enabled for debug /* window.onload = function() { vwoEnabledHsFormAtStickyFooter(); }; */ </script> <footer id="footer" class="footer"> <!-- Iron Suite Products --> <div id="new-sc" class="main_product_page new-footer"> <div class="footer__wrapper"> <div class="footer__header"> <a href="https://ironsoftware.com/fr/about-us/1-percent-for-the-planet/" class="footer__header-logo"> <img class="footer__logo" src="/img/footer/logo-1_percent.svg" alt="Logo 1 Percent related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en C# av..." width="204" height="32" loading="lazy"> </a> <div class="footer__header-content"> <div class="footer__header-tagline"> <div class="footer__icon-wrapper"> <img class="footer__icon" src="/img/footer/textlogo-iron_suite.svg" alt="Textlogo Iron Suite related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en ..." width="201" height="32" loading="lazy"> </div> <h2 class="footer__title"><span>IronPDF fait partie de </span>IRON<strong>SUITE</strong></h2> <p class="footer__subtitle">10 API .NET <span>pour vos documents</span></p> </div> <div class="footer__cta"> <a href="https://ironsoftware.com/fr/suite/" class="footer__btn buy-all__btn">Suite complète – 10 produits <i class="fa-solid fa-caret-right"></i></a> <a href="https://ironsoftware.com/fr/suite/#trial-license" class="footer__btn free-trial__btn"><i class="fa-solid fa-key"></i>  Essai gratuit <i class="fa-solid fa-caret-right"></i></a> </div> </div> </div> <div class="footer__divider d-none d-xl-block"></div> <div class="footer__products"> <h2 class="visually-hidden" id="footer__products__heading">Liens des produits</h2> <ul class="footer__products-list" aria-labelledby="footer__products__heading"> <li class="footer__product"> <a href="/fr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_pdf.svg" alt="ironpdf_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Créer, lire et modifier des PDF. HTML vers PDF pour .NET.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/word/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_word.svg" alt="ironword_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Modifier des fichiers DOCX. Sans Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/excel/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_xl.svg" alt="ironxl_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Modifier des fichiers Excel et CSV. Sans Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/ppt/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ppt.svg" alt="ironppt_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Créer, lire et modifier des présentations. Sans Office Interop.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/ocr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_ocr.svg" alt="ironocr_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> OCR en 125 langues.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/barcode/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_barcode.svg" alt="ironbarcode_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Lire et écrire des QR & barcodes.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/qr/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_qr.svg" alt="ironqr_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Lire et écrire des QR codes.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/zip/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_zip.svg" alt="ironzip_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Compressez et décompressez des archives.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/print/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_print.svg" alt="ironprint_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Imprimer des documents avec .NET.</span> </a> </li> <li class="footer__product"> <a href="https://ironsoftware.com/fr/csharp/webscraper/" class="footer__product-link"> <div class="d-flex align-items-center"> <div class="footer__hash-icon-wrapper d-none d-md-inline-flex"> <img src="/img/footer/icon-hash.svg" alt="Icon Hash related to Liens des produits" width="27.95" height="24" loading="lazy"> </div> <div class="footer__product-icon-wrapper"> <img src="/img/footer/textlogo-iron_webscraper.svg" alt="ironwebscraper_logo" width="auto" height="14" loading="lazy"> </div> </div> <span class="footer__product-text"><strong class="d-none d-md-inline">-</strong> Extraire des données structurées des sites web.</span> </a> </li> </ul> </div> </div> </div> <nav class="footer__first-row-wrappe" role="navigation"> <div class="footer__first-row__first-column"> <div class="footer__first-row__logo"> <a href="#"> <img loading="lazy" src="/img/products/footer-top-logo-ironpdf-for-net.svg" alt="IronPDF for .NET" width="268" height="44"> </a> </div> <div class="footer__first-row__logo-description"> <p>Lorsque vous avez besoin que votre PDF ressemble à HTML, rapidement.</p> </div> </div> <div class="footer__first-row__second-column"> <section class="bifrost"></section> <div class="footer__first-row__second-column__navigation"> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Documentation</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/fr/examples/using-html-to-create-a-pdf/" > Exemples de code </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/how-to/create-new-pdfs/" > Guides pratiques </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/object-reference/api/" target="_blank" > Référence API </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/features/" > Caractéristiques </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/blog/" > Blog </a> </li> <li> <a class="footer__first-row__navigation__link i18n__distrans" href="/assets/ironpdf-brochure.pdf" target="_blank" > Brochure Produit </a> </li> <li> <a class="footer__first-row__navigation__link" data-bs-toggle="tooltip" data-bs-placement="right" title="Aide les LLMs et des outils comme ChatGPT et Claude à mieux comprendre notre documentation" href="/fr/llms.txt" target="_blank" > Index AI-Compatible (llms.txt) </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Tutoriels</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/fr/docs/" > Commencer </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/tutorials/html-to-pdf/" > HTML en PDF </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/tutorials/csharp-edit-pdf-complete-tutorial/" > Éditer des PDFs en C# </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/how-to/pixel-perfect-html-to-pdf/" > Débogage HTML Chrome </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Alternatives à VS</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/fr/competitors/aspose-vs-ironpdf/" > IronPDF vs Aspose </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/competitors/syncfusion-vs-ironpdf/" > IronPDF vs Syncfusion </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/competitors/itext-vs-ironpdf/" > IronPDF vs iText </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/competitors/apryse-vs-ironpdf/" > IronPDF vs Apryse </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/competitors/questpdf-vs-ironpdf/" > IronPDF vs QuestPDF </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Licence</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link" href="/fr/licensing/" > Acheter une licence </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/fr/resellers/" target="_blank" > Trouver un revendeur </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/licensing/upgrades/" > Mises à niveau de licence </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/licensing/extensions/" > Renouvellements de Licence </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/get-started/license-keys/" > Utilisation de clés de licence </a> </li> <li> <a class="footer__first-row__navigation__link" href="/fr/licensing/eula/" > CLUF </a> </li> <li> <a class="footer__first-row__navigation__link" href="https://ironsoftware.com/fr/enterprise/" > Entreprise </a> </li> </ul> </nav> <nav class="footer__first-row__navigation"> <p class="footer__first-row__navigation__title">Essayer IronPDF Gratuitement</p> <ul class="footer__first-row__navigation__links-list"> <li> <a class="footer__first-row__navigation__link footer__first-row__navigation__link--highlight js-modal-open" href="https://www.nuget.org/packages/IronPdf/" target="_blank" data-modal-id="trial-license-after-download" > <i class="nuget-icon-pink"></i> Télécharger sur NuGet </a> </li> <li> <p class="footer__first-row__navigation__link ga-dll-installer footer-dropdown-menuitem download-library-dropdown dll-installer center-dropdown js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdf.zip " data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-html="true" data-bs-title='<div class="library_download_dropdown_tooltip v2"><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-microsoft"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">Windows</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.MacOs.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-apple"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">macOS</span></span></div><div class="library_download_dropdown_tooltip__menuitem" data-download-link="/packages/IronPdf.Linux.zip"><span class="library_download_dropdown_tooltip__menuitem_text"><i class="library_download_dropdown_tooltip__menuitem_fa-icon fab fa-linux"></i><span class="library_download_dropdown_tooltip_menuitem_text-label">Linux</span></span></div></div>' data-bs-custom-class='dl-dropdown-tooltip' data-bs-trigger='manual'> <i class="fas fa-download"></i> Télécharger DLL <i class="fas fa-caret-down"></i> </p> </li> <li> <p class="footer__first-row__navigation__link ga-windows-installer js-modal-open--downloading" data-modal-id="trial-license-after-download" data-url=" /packages/IronPdfInstaller.zip " > <i class="fab fa-microsoft"></i> Installeur Windows </p> </li> <li> <a class="footer__first-row__navigation__link js-modal-open" href="#trial-license" data-modal-id="trial-license" > <i class="fas fa-key"></i> Essai gratuit </a> </li> </ul> </nav> </div> </div> </nav> <nav id="footer__breadcrumbs-navigation-menu"> <div class="container-fluid"> <div class="navigation-container"> <ol class="breadcrumb"> <li class="breadcrumb-item"><a href="/fr/" aria-label="Go to IronPDF">IronPDF</a></li><li class="breadcrumb-item"><a href="/fr/blog/" aria-label="Go to Blog IronPDF">Blog IronPDF</a></li><li class="breadcrumb-item"><a href="/fr/blog/using-ironpdf/" aria-label="Go to Utilisation de IronPDF">Utilisation de IronPDF</a></li><li class="breadcrumb-item active">Lire En-tête Pied de page iTextSharp</li></ol> <a id="footer__topscroll-link" class="top-return-link" href="#top"> Retour en haut </a> </div> </div> </nav> <nav class="footer__additional-background-wrapper d-none" role="navigation"> <h2 class="visually-hidden" id="footer__global-navigation-menu-heading">Menu de Navigation Global</h2> <div class="footer__fourth-row-wrapper"> <div class="footer__fourth-row-wrapper__logo-block"> <h3 class="visually-hidden">Logo de l'Entreprise et Adresse</h3> <a href="https://ironsoftware.com/fr/"> <img class="footer__fourth-row-wrapper__logo-icon" loading="lazy" src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20"> </a> <div class="footer__fourth-row-wrapper__address text-center text-md-end" aria-labelledby="footer-main-links-heading"> <address> 205 N. Michigan Ave. Chicago, IL 60601 USA +1 (312) 500-3060 </address> </div> </div> <div class="footer__fourth-row-wrapper__contact-links-block"> <h3 class="visually-hidden" id="footer__main-navlinks">Liens de Navigation Principaux</h3> <ul class="footer__fourth-row-wrapper__links-list" aria-labelledby="footer_main-navlinks"> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/about-us/" target="_blank"> À propos de nous </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/news/" target="_blank"> Nouvelles </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/customers/" target="_blank"> Clients </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/careers/" target="_blank"> Carrières </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/academy/" target="_blank"> Académie </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/live-streams/" target="_blank"> Webinaires </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://hub.ironsoftware.com/fr/licenses-view" target="_blank"> Connexion HUB Client </a> </li> <li> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/contact-us/" target="_blank"> Contact </a> </li> <li class="d-none d-md-flex"> <div class="iron_lang-menu dropup" data-bs-target="#footerLangNameMenuDropdown"> <button type="button" class="dropdown-toggle" id="iron_lang-menu__language-name_dropdown__current-language" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Français </button> <ul id="footerLangNameMenuDropdown" class="dropdown-menu" aria-labelledby="footerLangNameMenuDropdown"> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="en" hreflang="en" href="/blog/using-ironpdf/read-header-footer-itextsharp/" >English</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="es" hreflang="es" href="/es/blog/using-ironpdf/read-header-footer-itextsharp/" >Español</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="de" hreflang="de" href="/de/blog/using-ironpdf/read-header-footer-itextsharp/" >Deutsch</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans active-lang" data-language-code="fr" hreflang="fr" href="/fr/blog/using-ironpdf/read-header-footer-itextsharp/" >Français</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="ja" hreflang="ja" href="/ja/blog/using-ironpdf/read-header-footer-itextsharp/" >日本語</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="ko" hreflang="ko" href="/ko/blog/using-ironpdf/read-header-footer-itextsharp/" >한국어</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="pt" hreflang="pt" href="/pt/blog/using-ironpdf/read-header-footer-itextsharp/" >Português</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="pl" hreflang="pl" href="/pl/blog/using-ironpdf/read-header-footer-itextsharp/" >polski</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh" hreflang="zh" href="/zh/blog/using-ironpdf/read-header-footer-itextsharp/" >简体中文</a></li> <li class="dropdown-item" role="menuitem"><a class="i18n__distrans" data-language-code="zh_TW" hreflang="zh-tw" data-language-alias="zh-hant" href="/zh-hant/blog/using-ironpdf/read-header-footer-itextsharp/" >繁體中文</a></li> </ul> </div> </li> </ul> </div> <div class="d-flex flex-column align-items-end"> <h3 class="visually-hidden" id="footer__main-social-links">Liens des Réseaux Sociaux</h3> <ul class="footer__fourth-row-wrapper__social-icons" aria-labelledby="footer__main-social-links"> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://github.com/iron-software" title="Explorer le Dépôt GitHub d'Iron Software" target="_blank"><img loading="lazy" src="/img/footer-socials/github.svg" alt="Github related to Liens des Réseaux Sociaux" width='16' height='15.33'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.youtube.com/@ironsoftware" title="Voir les vidéos d'Iron Software sur Youtube" target="_blank"><img loading="lazy" src="/img/footer-socials/youtube.svg" alt="Youtube related to Liens des Réseaux Sociaux" width='16' height='11'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://x.com/ironsoftwaredev" title="Suivre Iron Software sur Twitter" target="_blank"><img loading="lazy" src="/img/footer-socials/twitter-x.svg" alt="Twitter X related to Liens des Réseaux Sociaux" width='16' height='13.44'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.facebook.com/teamironsoftware" title="Restez connecté avec Iron Software sur Facebook" target="_blank"><img loading="lazy" src="/img/footer-socials/facebook.svg" alt="Facebook related to Liens des Réseaux Sociaux" width='16' height='16'></a></li> <li><a class="footer__fourth-row-wrapper__social-icon" href="https://www.linkedin.com/company/ironsoftware" title="Connectez Iron Software sur LinkedIn" target="_blank"><img loading="lazy" src="/img/footer-socials/linkedin.svg" alt="Linkedin related to Liens des Réseaux Sociaux" width='16.34' height='16'></a></li> </ul> <a class="footer__fourth-row-wrapper__link" href="https://ironsoftware.com/fr/company/iron-slack-community/"> <img loading="lazy" src="/img/icons/slack-icon.svg" class="footer__fourth-row__slack-icon" alt="Slack Icon related to Liens des Réseaux Sociaux" width="14" height="14"> Rejoignez Iron Slack</a> </div> </div> </div> </nav> <nav class="footer__fifth-row-wrapper d-none"> <p class="footer__fifth-row-wrapper__teamseas"> <a href="https://ironsoftware.com/fr/about-us/1-percent-for-the-planet/"> <img loading="lazy" src="/img/footer/logo-1-percent.svg" alt="Soutien Teamseas" height="40"> </a> </p> <div class="copyright__links d-flex align-items-center"> <h3 class="visually-hidden" id="footer__copyright-heading">Informations Juridiques</h3> <p class="footer__fifth-row-wrapper__copyright-text"> Droits d'auteur © Iron Software 2013-2026 </p> <ul class="footer__fifth-row-wrapper__links-list" aria-labelledby="footer__copyright-heading"> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/fr/company/terms/">Conditions</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/fr/company/privacy/">Confidentialité</a> </li> <li> <a class="footer__fifth-row-wrapper__link" href="https://ironsoftware.com/fr/company/cookie/">Cookie</a> </li> </ul> </div> </nav> <!-- New Footer Navs --> <div class="site-footer__wrapper"> <nav class="site-footer" aria-label="Footer"> <div class="site-footer__links"> <a href="https://ironsoftware.com/fr/about-us/" target='_blank' class="site-footer__link"> À propos de nous </a> <a href="https://ironsoftware.com/fr/news/" target='_blank' class="site-footer__link"> Nouvelles </a> <a href="https://ironsoftware.com/fr/customers/" target='_blank' class="site-footer__link"> Clients </a> <a href="https://ironsoftware.com/fr/careers/" target='_blank' class="site-footer__link"> Carrières </a> <a href="https://ironsoftware.com/fr/academy/" target='_blank' class="site-footer__link"> Académie </a> <a href="https://ironsoftware.com/fr/live-streams/" target='_blank' class="site-footer__link"> Webinaires </a> <a href="https://hub.ironsoftware.com/fr/licenses-view" target='_blank' class="site-footer__link"> Connexion HUB Client </a> <a href="https://ironsoftware.com/fr/contact-us/" target='_blank' class="site-footer__link"> Contact </a> </div> <div class="site-footer__bar"> <div class="site-footer__ratings"> <a class="site-footer__rating" href="https://ironsoftware.com/fr/awards-and-recognition/" aria-label="G2 Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/g2-reviews.svg" alt="G2 Reviews" width="48" height="48" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 4.9 out of 5 stars" style="--rating-percent: 98%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>4.9</strong> / 5</span> </div> </a> <a class="site-footer__rating" href="https://ironsoftware.com/fr/awards-and-recognition/" aria-label="Capterra Reviews - view awards and recognition"> <div class="site-footer__rating-logo"> <img class="img-fluid" src="/img/awards/capterra-reviews.svg" alt="Capterra Reviews" width="32" height="32" loading="lazy"> </div> <div class="site-footer__rating-content"> <div class="site-footer__rating-label"> <div class="site-footer__rating-star-meter" role="img" aria-label="Rated 5 out of 5 stars" style="--rating-percent: 100%;"> <span class="site-footer__rating-stars-base" aria-hidden="true">★★★★★</span> <span class="site-footer__rating-stars-fill" aria-hidden="true">★★★★★</span> </div> </div> <span class="site-footer__rating-score"><strong>5</strong> / 5</span> </div> </a> </div> <div class="site-footer__brand"> <div class="site-footer__brand-logo"> <img src="/img/svgs/hero-logo__162x20.svg" alt="Iron Software" width="162" height="20" loading="lazy"> </div> <span class="site-footer__address">205 N. Michigan Ave. Chicago, IL 60601 USA +1 (312) 500-3060</span> </div> <div class="site-footer__contact"> <ul class="site-footer__social-items"> <li class="site-footer__social-item"> <a href="https://github.com/iron-software" class="site-footer__social-link" aria-label="GitHub" target='_blank' > <i class="fa-brands fa-github"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.youtube.com/@ironsoftware" class="site-footer__social-link" aria-label="Youtube" target='_blank' > <i class="fa-brands fa-youtube"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://x.com/ironsoftwaredev" class="site-footer__social-link" aria-label="X" target='_blank' > <i class="fa-brands fa-x-twitter"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.facebook.com/teamironsoftware" class="site-footer__social-link" aria-label="Facebook" target='_blank' > <i class="fa-brands fa-square-facebook"></i> </a> </li> <li class="site-footer__social-item"> <a href="https://www.linkedin.com/company/ironsoftware" class="site-footer__social-link" aria-label="LinkedIn" target='_blank' > <i class="fa-brands fa-linkedin-in"></i> </a> </li> </ul> <a href="https://ironsoftware.com/fr/company/iron-slack-community/" class="site-footer__cta" arial-label="Join Iron Slack" > <div class="site-footer__cta-logo"> <img src="/img/icons/slack-icon.svg" alt="Slack Icon related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en C# avec e..." width="16" height="16" loading="lazy"> </div> <span class="site-footer__cta-text">Rejoignez Iron Slack</span> </a> </div> </div> </nav> </div> <div class="site-copyright__wrapper"> <nav class="site-copyright" aria-label="Copyright & legal"> <div class="site-copyright__partner-logos"> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_pdfa--hover.svg" alt="Membre de l'Association PDF" width="46" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_microsoft--hover.svg" alt="Partenaire Microsoft" width="92" height="28" loading="lazy"> </div> <div class="site-copyright__partner-logo"> <img class="site-copyright__partner-logo-image" src="/img/footer/partner-logo_aws--hover.svg" alt="Réseau de Partenaires AWS" width="87" height="28" loading="lazy"> </div> </div> <div class="site-copyright__meta"> <span class="site-copyright__text">Droits d'auteur © Iron Software 2013-2026</span> <div class="site-copyright__legal"> <a href="https://ironsoftware.com/fr/company/terms/" class="site-copyright__legal-link">Conditions</a> <a href="https://ironsoftware.com/fr/company/privacy/" class="site-copyright__legal-link">Confidentialité</a> <a href="https://ironsoftware.com/fr/company/cookie/" class="site-copyright__legal-link">Cookie</a> </div> </div> <div class="site-copyright__donation"> <img src="/img/footer/badge-one_percent.png" alt="One Perent for the Planet" width="230" height="32" loading="lazy"> </div> </nav> </div> </footer> <style> #ironSupportWidgetButtonContainer { display: none; position: fixed; bottom: 16px; right: 16px; width: 60px; height: 60px; z-index: 10500; #ironSupportWidgetButton { font: normal 900 24px/1 var(--ff-gotham); color: #fff; background: url('/img/widgets/livechat/icon_messages.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 32px auto; width: 60px; height: 60px; border-radius: 50%; cursor: pointer; user-select: none; transition: transform 0.1s ease-in-out; border: none; display: flex; justify-content: center; align-items: center; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; &:hover { box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; transform: scale(1.1); } } /* control button icon if widget open (active) */ &:has(~#ironSupportWidgetContainer.active) { #ironSupportWidgetButton { background: url('/img/widgets/livechat/icon_x.svg') #2c96d5; background-repeat: no-repeat; background-position: center; background-size: 26px auto; } } } #ironSupportWidgetContainer { /* only display via vwo, on test process */ position: fixed; bottom: 92px; right: 16px; width: 416px; height: 700px; padding: 0; display: none; z-index: 10501; &.active { display: block; } .ironSupportWidgetBody { overflow: hidden; background-color: #fff; border: solid 0px #e7eef0; border-radius: 16px; display: flex; flex-direction: column; height: 100%; padding: 0; margin: 0; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 4px, rgba(0, 0, 0, 0.2) 0px 2px 12px; .ironSupportWidgetHeader { .ironSupportWidgetTitle { background-color: #2a95d5; display: flex; align-items: center; column-gap: 16px; padding: 16px 24px; .supportLogo { width: 48px; height: 48px; overflow: hidden; display: flex; justify-content: center; align-items: center; background-color: #aaa; border: solid 2px #fff; border-radius: 50%; } .dotSupportStatus { position: absolute; bottom: 0px; right: 0px; background-color: #444; border: solid 2px #fff; width: 11px; height: 11px; border-radius: 50%; &.green { background-color: #02bda5; } &.red { background-color: red; } } h2.title { margin: 0; padding: 0; font: normal 700 18px/1.6 var(--ff-gotham); color: #fff; } .subTitle { margin: 0; padding: 0; font: normal 400 12px/1.4 var(--ff-gotham); color: #fff; } } .ironSupportWidgetButtons { display: flex; column-gap: 2px; padding: 8px 24px 0; margin: 0; background-color: #fff; overflow: hidden; align-items: center; justify-content: center; cursor: pointer; background-color: #2a95d5; .iron_widget_button { flex: 1 0 calc(100%/3); display: flex; align-items: center; justify-content: center; padding: 12px 0; font: normal 700 14px/1.2 var(--ff-gotham); cursor: pointer; color: #fff; user-select: none; border-top: solid 3px #2a95d5; background-color: #5fafdf; &:hover { color: #181818; background-color: #d9e5e9; } &.active { color: #181818; border-top: solid 3px #e01a59; background-color: #fff; i { color: #2a95d5; } } i { margin-right: 8px; width: 18px; height: 18px; color: inherit; display: flex; align-items: center; justify-content: center; pointer-events: none; } } } } &>.ironSupportWidgetTab { flex: 1 1 auto; background-color: #fff; padding: 0; margin: 0; } } /* hschat start */ #hubspotConversationsInlineContainer { height: 100%; overflow: hidden; #hubspotConversationsInlinePlaceholder { /* hubspot chat use height in (px) to render its container, can't be a relative value hide the chat header by moving up the container 72px */ --offset_chat_header: 72px; margin-top: calc(-1 * var(--offset_chat_header)); height: 100%; max-height: calc(100% + var(--offset_chat_header)); z-index: 0; /* below is gen by hubspot */ #hubspot-conversations-inline-parent { height: calc(100% + var(--offset_chat_header)); &>iframe { width: 100%; height: 100%; } } } } /* hschat end */ /* hsform start */ .ironSupportWidgetFormPlaceholder { padding: 24px; height: 100%; form.hs-form { width: 100%; display: flex; flex-direction: column; row-gap: 24px; height: 100%; .hs-input { height: unset; } .hs-button { margin: 0; height: unset; max-width: unset; } .hs-form-field:first-child { margin: 0; } .hs-form-field { margin: 0; } p { margin: 0; } select.hs-input, input[type="tel"], input[name="lastname"], input[name="phone"], input[name="firstname"], input[name="email"] { width: 100%; border-radius: 6px; border: solid 1px #e7eef0; padding: 8px 16px; font: normal 400 14px/1.2 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; } div.hs-form-field:has(ul.hs-error-msgs) { ul.hs-error-msgs { display: none; } input[name="email"] { border: solid 1px #e01a59; } } input[type="submit"] { background-color: #fff; color: #2a95d5; border: solid 1px #d9e5e9; display: flex; justify-content: center; align-items: center; border-radius: 64px; padding: 8px 0; min-width: 128px; font: normal 700 14px/1.6 var(--ff-gotham); user-select: none; transition: all 0.1s ease-in-out; &:hover { color: #e01a59; box-shadow: rgba(0, 0, 0, 0.1) 0px 2px 6px, rgba(0, 0, 0, 0.2) 0px 4px 16px; } } div.hs-submit { margin-top: auto; align-self: end; } div.hs-form-field>label { font: normal 700 14px/1.2 var(--ff-gotham); color: #525252; margin-bottom: 12px; display: block; } textarea[name="TICKET.content"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; min-height: 84px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="phone"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } input[name="email"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; background-color: #fafafb; border: solid 1px #d9e5e9; padding: 12px 16px; width: 100%; border-radius: 6px; &:focus { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } } div.input:has(>input[type="file"]) { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: relative; display: block; cursor: pointer; line-height: 1.5; border: .075rem solid #d9e5e9; border-radius: 6px; user-select: none; cursor: pointer; min-height: 44px; background-color: #fafafb; &:after { font: normal 400 14px/1.4 var(--ff-gotham); position: absolute; z-index: 0; display: flex; align-items: center; top: 0; bottom: 0; left: 0; width: 100%; padding: 12px 16px; content: "Choisir un fichier..."; cursor: pointer; } &:before { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; position: absolute; z-index: 1; display: flex; justify-content: center; align-items: center; content: "Parcourir"; top: 0; bottom: 0; right: 0; width: fit-content; padding: 12px 16px; border-radius: 0 6px 6px 0; cursor: pointer; background-color: #d9e5e9; } &:hover { border: 1px solid #2a95d5; outline: 2px solid #aad5ee; } &:hover:before { background-color: #5fafdf; color: #fff; } input[type="file"] { margin: 0; filter: alpha(opacity=0); opacity: 0; padding: 0; cursor: pointer; position: absolute; z-index: 2; height: 100%; width: 100%; } } ul[role="checkbox"] { font: normal 400 14px/1.4 var(--ff-gotham); color: #7e7e7e; padding: 0; margin: 0; list-style: none; &>li>label { display: inline-flex; align-items: center; column-gap: 8px; } input[type="radio"] { width: unset; accent-color: #e01a59; height: unset; &:hover, &:checked, &:checked:hover { color: #e01a59; accent-color: none; } } } } } /* hsform end */ } @media screen and (max-width: 575px) { body:has(#ironSupportWidgetContainer.active) { overflow: hidden; } #ironSupportWidgetButtonContainer:has(~#ironSupportWidgetContainer.active) { left: unset; bottom: unset; top: 16px; right: 16px; width: 48px; height: 48px; z-index: 10502; #ironSupportWidgetButton { width: 48px; height: 48px; border: solid 1px #fff; } } #ironSupportWidgetContainer { right: 0; bottom: 0; width: 100%; height: 100%; .ironSupportWidgetBody { border-radius: 0px; } } } </style> <!-- Iron Support Widget Button --> <div id="ironSupportWidgetButtonContainer"> <div id="ironSupportWidgetButton" onclick="toggleIronSupportWidget()"></div> </div> <!-- Iron Support Widget Body --> <div id="ironSupportWidgetContainer" class=""> <div class="ironSupportWidgetBody"> <div class="ironSupportWidgetHeader"> <div class="ironSupportWidgetTitle"> <div style="position:relative;"> <div class="dotSupportStatus green"></div> <div class="supportLogo"> <img src="/img/support-team/support_widget.png" width="48" height="48" alt="Support Widget related to Ajouter un en-tête et un pied de page dans un PDF en utilisant iTextSharp et IronPDF en C# av..." loading="lazy"> </div> </div> <div> <h2 id="ironSupportWidgetHeaderTitle" class="title">Équipe de soutien Iron</h2> <div id="ironSupportWidgetHeaderSubTitle" class="subTitle">Nous sommes en ligne 24 heures sur 24, 5 jours sur 7.</div> </div> </div> <div class="ironSupportWidgetButtons"> <div class="iron_widget_button active" data-iron-widget-tab="ironSupportWidgetTab1" data-iron-widget-subtitle="Nous sommes en ligne 24 heures sur 24, 5 jours sur 7" onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-messages-question"></i>Chat</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab2" data-iron-widget-subtitle="Recevez les réponses par courriel dans les 24 heures." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-envelope"></i>Email</div> <div class="iron_widget_button" data-iron-widget-tab="ironSupportWidgetTab3" data-iron-widget-subtitle="Vous préférez en discuter de vive voix ? Nous vous appellerons dans les 24 heures." onclick="ironSupportWidgetTabChange(event);"><i class="fa-solid fa-phone"></i>Appelez-moi</div> </div> </div> <div id="ironSupportWidgetTab1" class="ironSupportWidgetTab"> <div id="hubspotConversationsInlineContainer"> <div id="hubspotConversationsInlinePlaceholder"><!-- placeholder --></div> </div> </div> <div id="ironSupportWidgetTab2" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> <div id="ironSupportWidgetTab3" class="ironSupportWidgetTab" style="display:none;"> <div class="ironSupportWidgetFormPlaceholder"><!-- placeholder --></div> </div> </div> </div> <!-- # uncomment for test or want chat appear sooner, on website it delay by core web vital # chat will not appear until the trcking script (below) loaded --> <script type="text/javascript" id="hs-script-loader" async defer src="//js.hs-scripts.com/22630553.js"></script> <script> /* pre-register window.ironSupportWidget */ if (typeof window.ironSupportWidget === 'undefined') { window.ironSupportWidget = {}; window.ironSupportWidget.isHsFormLoaded = false; } // hubspot chat place holder if (typeof window.hsConversationsSettings === 'undefined') { window.hsConversationsSettings = {}; } // window.hsConversationsSettings.inlineEmbedSelector = '#hubspotConversationsInlinePlaceholder'; function loadHsFormInSupportWidget() { const supportWidgetFormOptionA = { portalId: "22630553", formId: "8d0b0bf2-6aea-4c76-959c-cb2f9183f7c5", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab2 .ironSupportWidgetFormPlaceholder", onFormSubmitted: function ($form, data) { window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(232);}); } } const supportWidgetFormOptionB = { portalId: "22630553", formId: "c8f2b8df-0228-4331-b207-9c6c9910764c", region: "na1", target: "#ironSupportWidgetContainer #ironSupportWidgetTab3 .ironSupportWidgetFormPlaceholder", onFormSubmitted: function ($form, data) { window._vis_opt_queue = window._vis_opt_queue || []; window._vis_opt_queue.push(function() {_vis_opt_goal_conversion(232);}); } }; dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionA); dynamicLoadHsForms_inSupportWidget(supportWidgetFormOptionB); } function ironSupportWidgetTabChange(e) { const target = e.target; const targetWidgetTab = target.getAttribute('data-iron-widget-tab'); const textSubtitle = target.getAttribute('data-iron-widget-subtitle'); if (!targetWidgetTab) return; // Save current tab state window.ironSupportWidget.lastTab = targetWidgetTab; window.ironSupportWidget.subTitle = textSubtitle; // Remove 'active' class from all buttons document.querySelectorAll('.iron_widget_button').forEach(button => { button.classList.remove('active'); }); // Add 'active' class to clicked button target.classList.add('active'); // Hide/Show tab document.querySelectorAll('.ironSupportWidgetTab').forEach(tab => { tab.style.display = 'none'; }); const targetTab = document.getElementById(targetWidgetTab); if (targetTab) { targetTab.style.display = 'block'; } // Update subtitle in header const subtitleEl = document.getElementById('ironSupportWidgetHeaderSubTitle'); if (subtitleEl) { subtitleEl.textContent = textSubtitle || ''; } } function toggleIronSupportWidget(action = null) { const widgetContainer = document.getElementById('ironSupportWidgetContainer'); function openWidget() { window.ironSupportWidget.isOpen = true; widgetContainer.classList.add('active'); if (typeof window.ironSupportWidget.isHsFormLoaded !== true) { loadHsFormInSupportWidget(); window.ironSupportWidget.isHsFormLoaded = true; } } function closeWidget() { window.ironSupportWidget.isOpen = false; widgetContainer.classList.remove('active'); } if (action === 'open') { openWidget(); } else if (action === 'close') { closeWidget() } else { if (window.getComputedStyle(widgetContainer).display !== 'none') { closeWidget() } else { openWidget(); } } } // load hubspot form dynamically function dynamicLoadHsForms_inSupportWidget(formOption, target_override = null) { function waitForHsptReady() { var interval = setInterval(function() { if (typeof hbspt !== "undefined") { clearInterval(interval); var option = formOption; if (target_override !== null) { option.target = target_override; } hbspt.forms.create(option); } }, 10); } if (typeof hbspt === "undefined") { var script = document.createElement("script"); script.type = "text/javascript"; script.src = "//js.hsforms.net/forms/embed/v2.js"; document.getElementsByTagName("head")[0].appendChild(script); script.onload = function() { waitForHsptReady(); }; } else { waitForHsptReady(); } } </script> <!-- Start Commonly Loaded Scripts --> <script src="/front/js/iron.loaders.js?v=1776149867" ></script><script src="/front/js/iron.helpers.js?v=1776149867" ></script><script src="/front/js/global.js?v=1776149867" ></script><script src="/front/js/bootstrap-loader/bootstrap-autoloader.min.js?v=1776149867" type="module" async="1"></script><script src="/front/js/page.js?v=1776149867" ></script><script src="/front/js/product.js?v=1776149867" ></script><!-- customJSFiles, Start --> <script src="/front/js/blog.js?v=1776149867" ></script> <script src="/front/js/blog-post.js?v=1776149867" ></script> <script src="/front/js/competitors.js?v=1776149867" ></script> <!-- customJSFiles, End --> <!-- Clarity Code Start --> <script type="text/javascript"> if (!window.deviceDetails.mobileCheck && window.deviceDetails.isDesktopViewport) { (function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i+"?ref=gtm2";y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,"clarity","script","cximmak38b"); } </script><!-- Clarity Code End --> <!-- AC Code Start --> <script> document.queueDeferredUserIntentAction(function() { importScript("tracking-code/activecampaign.js", debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "activecampaign"}, debug()); }); </script> <!-- AC Code End --> <!-- Impact Sale Tracker Start --> <script> document.queueDeferredUserIntentAction(function() { importScript(["tracking-code/impactsale.js"], debug()).then(function() { setTimeout(function() { importScript(["tracking-code/impactsale-id.js"], debug()); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "impactsale"}, debug()); }, 150); }); }); </script> <!-- Impact Sale Tracker End --> <!-- End Commonly Loaded Scripts --> <!-- Start Setup Helper Functions --> <script> /** * Configures the Algolia Search feature using set-up data that is presumed to originate from an Iron Product's common.json file. * * @param {String} searchData the JSON string data (usually taken from the $common_json['search'] property key) * @param {String} indexName the Algolia Index that should be used (usually taken from the $common_json['search']['name] property key */ function setupAlgoliaSearch(searchData, indexName) { if (typeof 'aa' != 'undefined' && window.dataLayer) { window.searchData = JSON.parse(searchData); window.searchClient = algoliasearch(window.searchData.applicationId, window.searchData.apiKey); window.searchIndex = window.searchClient.initIndex(indexName); aa('init', { appId: window.searchData.applicationId, apiKey: window.searchData.apiKey, useCookie: true }); aa('getUserToken', null, (err, newUserToken) => { if (err) { console.error(err); return; } window.algoliaUserToken = newUserToken; }); let userToken = window.algoliaUserToken; aa('onUserTokenChange', (userToken) => { window.dataLayer.push({ algoliaUserToken: userToken, }); }, { immediate: true }); } else { logMsg("error", 'Algolia failed setup. The required object definitions do not exist!'); } } </script><!-- End Setup Helper Functions --> <!-- Start Algolia Insights Client --> <script> document.addEventListener("DOMContentLoaded", function() { document.queueDeferredUserIntentAction(function() { importScript(['tracking-code/algolia.js', 'algoliasearch-lite.umd.js']).then(function(status) { const algoliaSetup = function() { setupAlgoliaSearch('{"applicationId":"4S8YCFXKT5","apiKey":"ec878b51c06a7d5fbb7aab95991ab432","indexName":"ironpdf","inputPlaceholder":"Rechercher dans l'API, les exemples de code et les tutoriels","searchText":"Chercher","boostedResult":"Ce sera l'article le plus utile","searchShortCut":["Ctrl","K"],"categories":[{"key":"Best match","title":"Meilleur r\u00e9sultat","iconClass":null,"color":null},{"key":"Code Examples","title":"Exemples de code","iconClass":"fas fa-code","color":"#2A95D5"},{"key":"Products","title":"Produits","iconClass":"fas fa-bookmark","color":"#E01A59"},{"key":"Get Started","title":"Commencer","iconClass":"fas fa-rocket","color":"#2A95D5"},{"key":"Tutorials","title":"Tutoriels","iconClass":"fas fa-graduation-cap","color":"#FDA509"},{"key":"How-Tos","title":"Guides pratiques","iconClass":"fa-regular fa-book","color":"#63C1A0"},{"key":"Languages","title":"Langues","iconClass":"fas fa-globe-americas","color":"#2A95D5"},{"key":"Licensing","title":"Licence","iconClass":"fas fa-shopping-cart","color":"#E01A59"},{"key":"API Reference","title":"R\u00e9f\u00e9rence API","iconClass":"fas fa-bookmark","color":"#89D3DF"},{"key":"Features","title":"Caract\u00e9ristiques","iconClass":"fas fa-bookmark","color":"#63C1A0"},{"key":"Support","title":"Support","iconClass":"fas fa-info-circle","color":"#2A95D5"},{"key":"Blog","title":"Blog","iconClass":"fa-regular fa-file","color":"#15aabf"},{"key":"Troubleshooting","title":"D\u00e9pannage","iconClass":"fas fa-wrench","color":"#15aabf"},{"key":"Product Updates","title":"Mises \u00e0 jour du produit","iconClass":"fa-solid fa-rotate","color":"#146ebe","class":"bottom_separator"}],"previewEnabled":false,"categorySortingEnabled":false,"breadcrubmsEnabled":true,"searchResultLimit":10,"breadcrumbs":[{"title":"IronPDF","url":"/"},{"title":"Licence","url":"/licensing/"},{"title":"Docs","url":"/docs/"},{"title":"Exemples de code","url":"/examples/using-html-to-create-a-pdf/"},{"title":"Tutoriels","url":"/tutorials/html-to-pdf/"},{"title":"Guides pratiques","url":"how-to/create-new-pdfs/"},{"title":"R\u00e9f\u00e9rence API","url":"/object-reference/api/"},{"title":"Support","url":"https://ironsoftware.com/contact-us/"},{"title":"IronOCR","url":"https://ironsoftware.com/csharp/ocr/"},{"title":"IronBarcode","url":"https://ironsoftware.com/csharp/barcode/"},{"title":"IronXL","url":"https://ironsoftware.com/csharp/excel/"},{"title":"IronWebScraper","url":"https://ironsoftware.com/csharp/webscraper/"},{"title":"Iron Software","url":"https://ironsoftware.com/"},{"title":"Produits","url":"https://ironsoftware.com/"}],"noResults":{"message":"Aucun r\u00e9sultat pour <strong>\u201c{query}\u201d</strong>.","icon":"/img/svgs/search-no-results.svg","alt":"Ic\u00f4ne de message"},"error":{"message":"Quelque chose s'est mal pass\u00e9. Tapez \u00e0 nouveau.","icon":"/img/svgs/search-no-results.svg","alt":"Ic\u00f4ne de message"}}', "ironpdf__fr"); document.fireCustomEvent("thirdPartyScriptLoaded", {scriptName: "algolia"}); }; const algoliaReady = function() { return typeof aa != 'undefined' && typeof algoliasearch != 'undefined' && window.dataLayer; }; if (algoliaReady()) { algoliaSetup(); } else { const aaTimer = setInterval(function() { if (algoliaReady()) { algoliaSetup(); clearInterval(aaTimer); } }, 500); } }); }); }); </script> <!-- End Algolia Insights Client --> <script src="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com/widget/ironpdf-assistant.js" data-server-url="https://iron-ai-assistant-frontend-152f73438a0d.herokuapp.com" data-hide-button="true" data-trigger-selector="#ai-chat-assistant" data-min-height="80%" data-margin-top="120px" data-vertical-position="top" defer ></script> </body> </html>