Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

IronPDF vs XFINIUM.PDF : Comparaison des bibliothèques HTML vers PDF pour .NET

IronPDF excelle dans la conversion HTML vers PDF grâce à une prise en charge complète des CSS et JavaScript via le moteur Chromium. À l'inverse, XFINIUM.PDF se spécialise dans la manipulation de bas niveau des PDF sans rendu HTML natif, ce qui fait d'IronPDF un choix plus adapté à la génération de PDF pour les applications web modernes en .NET.

Les technologies modernes offrent des solutions plus intelligentes aux développeurs, l'automatisation pilotant les processus de développement logiciel. Travailler avec des fichiers PDF C# représente depuis longtemps un défi pour les développeurs. De nombreux facteurs doivent être pris en compte lors de la création de contenu pour des fichiers PDF , et encore plus lors de la conversion de contenu de différents formats vers le format PDF . Ces difficultés sont désormais surmontées grâce à des bibliothèques conçues pour faciliter la lecture, l'écriture, la création et la conversion de fichiers PDF à partir de différents formats.

Cet article compare deux bibliothèques PDF populaires pour les développeurs .NET et .NET Core :

IronPDF et XFINIUM.PDF offrent tous deux des méthodes pour créer , manipuler et imprimer des fichiers PDF en .NET et .NET Core. Vous pouvez prendre une décision éclairée en consultant le tableau comparatif suivant des deux bibliothèques et de leurs fonctionnalités respectives pour la conversion et la manipulation de fichiers PDF .

Commençons par explorer ce que proposent les deux bibliothèques, puis passons à la comparaison.

Quelles sont les fonctionnalités de la bibliothèque XFINIUM.PDF ?

La bibliothèque XFINIUM.PDF est un outil multiplateforme pour le développement PDF, destiné aussi bien aux développeurs PDF débutants qu'aux développeurs PDF confirmés. Il vous permet de créer des rapports , de remplir des formulaires PDF , de constituer des portfolios PDF, de masquer les données sensibles des rapports PDF ou de convertir des rapports PDF en images TIFF multipages .

XFINIUM.PDF est disponible en deux éditions : l'édition Generator, qui inclut la production et l'édition de PDF, et l'édition Viewer, qui ajoute le rendu et la visualisation de PDF .

XFINIUM.PDF est entièrement écrit en C# sous forme de code entièrement géré. Elle est concédée sous licence par développeur avec une distribution sans redevance, vous permettant de distribuer votre programme sans frais supplémentaires.

Quelle est la différence entre les éditions Générateur et Visualiseur ?

L'édition Générateur est un sous-ensemble de l'édition Visualiseur. Il offre des fonctionnalités PDF pour la création et la modification de fichiers PDF, tandis que l'édition Viewer ajoute des capacités de rendu PDF . L'édition Viewer peut convertir les pages PDF en images RAW, BMP, GIF, JPG, PNG et TIFF .

Spécification de XFINIUM.PDF

Les fonctionnalités clés incluent :

Sécurité

Signatures numériques

Code-barres

  • Moteur de codes-barres vectoriels intégré
  • Codes-barres unidimensionnels :
    • Codabar, Code 11, Code 25, Code 39/93/128
    • Pharmaceutique : Code 32, Pharmacode, PZN
  • Codes-barres bidimensionnels :
    • DataMatrix , QR, PDF417, Micro PDF417

Pour des fonctionnalités avancées de codes-barres, consultez la documentation d'Ironbarcode qui offre des capacités complètes de génération et de lecture de codes-barres.

Extraction de contenu

API COS de bas niveau

  • Ajouter, éditer et supprimer des objets COS
  • Types pris en charge : chaînes de caractères, nombres, noms, booléens, valeurs nulles, tableaux, dictionnaires, flux

Rendu PDF (édition Visualiseur seulement)

Quelles sont les principales caractéristiques d'IronPDF ?

La bibliothèque IronPDF .NET simplifie le développement PDF pour les programmeurs C#. Cet outil vous permet de construire facilement une bibliothèque PDF de base pour .NET.

IronPDF convertit les pages HTML en fichiers PDF à l'aide du moteur .NET Chromium . Vous n'avez pas besoin d'API compliquées pour positionner ou concevoir des PDF avec HTML vers PDF . Les documents web standard sont pris en charge, notamment HTML, ASPX, JS, CSS et les images .

Vous pouvez utiliser HTML5, CSS, JavaScript et des images pour développer une bibliothèque PDF .NET. Les fichiers PDF peuvent être modifiés, tamponnés et améliorés grâce à des en-têtes et des pieds de page . La bibliothèque gère efficacement la lecture du texte PDF et l'extraction des graphiques .

Téléchargez IronPDF gratuitement et commencez à l'utiliser dans vos projets .NET dès aujourd'hui.

Caractéristiques remarquables de la bibliothèque IronPDF C

Les fonctionnalités clés incluent :

Produire des PDFs (HTML en PDF)

Modifier des documents PDF existants

Manipuler des documents PDF

Convertir différents formats de fichiers

Imprimer et enregistrer

IronPDF prend en charge tous les principaux systèmes d'exploitation et frameworks :

Comment installer la bibliothèque IronPDF C# ?

Vous pouvez télécharger et installer IronPDF de quatre manières différentes :

  1. Utilisation de Visual Studio
  2. Invite de commandes développeur
  3. Téléchargez directement le package NuGet
  4. Télécharger la bibliothèque .DLL IronPDF

Utiliser Visual Studio

Visual Studio fournit le gestionnaire de packages NuGet pour installer des packages dans vos projets. Accédez-y via le menu Projet ou en cliquant avec le bouton droit sur votre projet dans l'Explorateur de solutions.

Visual Studio Project menu showing various options including 'Manage NuGet Packages' highlighted for package management.

Figure 1. Accès au gestionnaire de packages NuGet à l'aide du menu Projet de Visual Studio

Visual Studio Solution Explorer context menu showing the Manage NuGet Packages option highlighted in yellow

Figure 2. Accès au gestionnaire de paquets NuGet à l'aide du menu contextuel dans Visual Studio

Une fois sélectionné, recherchez le package IronPDF et installez-le.

Visual Studio interface showing NuGet Package Manager with IronPDF library search results and installation options

. Installation de la bibliothèque IronPDF à l'aide du gestionnaire de paquets NuGET dans Visual Studio

Utilisation de l'invite de commande du développeur

Installez le package NuGet IronPDF via l'invite de commandes développeur :

  • Ouvrez l' invite de commandes du développeur
  • Tapez la commande suivante :

    nuget install IronPdf
    nuget install IronPdf
    SHELL
  • Appuyez sur Entrée
  • Le package se télécharge et s'installe
  • Rechargez votre projet Visual Studio

Téléchargez le package NuGet directement

Téléchargez et installez IronPDF directement depuis NuGet :

  • Accédez à la page NuGet d'IronPdf
  • Sélectionnez Télécharger le package
  • Double-cliquez sur le package téléchargé
  • Le paquet s'installe
  • Rechargez votre projet Visual Studio

Installer IronPDF en téléchargeant la bibliothèque

Téléchargez le fichier .DLL d'IronPDF directement depuis la page de téléchargement d'IronPDF .

IronPDF website homepage showing the C# PDF Library with download options for DLL and NuGet installation

Figure 4. Téléchargement de la DLL de la bibliothèque IronPDF à partir du site web d'IronPDF

Référencez la bibliothèque dans votre projet :

  • Cliquez avec le bouton droit sur la solution dans l'Explorateur de solutions.
  • Sélectionnez Références
  • Parcourez pour trouver la bibliothèque IronPDF.dll
  • Cliquez sur OK

IronPDF est maintenant prêt à l'emploi. Installons maintenant XFINIUM.PDF.

Comment installer XFINIUM.PDF ?

Dans .NET Core, installez Xfinium PDF comme module complémentaire ou outil Cake :

# Install Xfinium.Pdf.NetCore as a Cake Addin
#addin nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
# Install Xfinium.Pdf.NetCore as a Cake Addin
#addin nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
SHELL
# Install Xfinium.Pdf.NetCore as a Cake Tool
#tool nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
# Install Xfinium.Pdf.NetCore as a Cake Tool
#tool nuget:?package=Xfinium.Pdf.NetCore&version=10.2.0
SHELL

Comparons maintenant IronPDF et XFINIUM.PDF.

Comment créer un document PDF simple avec .NET Core ?

Les développeurs de logiciels doivent savoir comment créer des fichiers PDF dynamiquement en utilisant C#. Vous pourriez avoir besoin de créer des fichiers PDF pour générer des rapports à partir des données saisies par l'utilisateur , enregistrer le texte de l'utilisateur au format PDF, extraire des informations HTML et les convertir en PDF , et bien plus encore.

Les deux bibliothèques peuvent convertir des pages web HTML en PDF . Examinons l'approche de chaque bibliothèque.

Utilisation de IronPDF

IronPDF propose plusieurs méthodes pour créer des fichiers PDF.

URL existante vers PDF

IronPDF simplifie la conversion de fichiers HTML en documents PDF à partir d'URL existantes . JavaScript , les images , les formulaires et le CSS bénéficient d'une prise en charge complète.

L'implémentation gère automatiquement le rendu des URL :

// Create an instance of the ChromePdfRenderer
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();

// Configure rendering options for better performance
Renderer.RenderingOptions.WaitFor.RenderDelay = 500; // Wait for JavaScript to load
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Render a URL to PDF
using var Pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_134___");

// Save the PDF with metadata
Pdf.MetaData.Author = "IronPDF";
Pdf.MetaData.Title = "Website to PDF Conversion";
Pdf.SaveAs("url.pdf");
// Create an instance of the ChromePdfRenderer
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();

// Configure rendering options for better performance
Renderer.RenderingOptions.WaitFor.RenderDelay = 500; // Wait for JavaScript to load
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Render a URL to PDF
using var Pdf = Renderer.RenderUrlAsPdf("___PROTECTED_URL_134___");

// Save the PDF with metadata
Pdf.MetaData.Author = "IronPDF";
Pdf.MetaData.Title = "Website to PDF Conversion";
Pdf.SaveAs("url.pdf");
$vbLabelText   $csharpLabel

Chaîne d'entrée HTML vers PDF

Considérez l'exemple de code suivant pour le rendu d'une page PDF à partir d'une chaîne HTML . Vous pouvez utiliser HTML seul ou le combiner avec CSS, des images et JavaScript :

// Create an instance of the ChromePdfRenderer
var Renderer = new IronPdf.ChromePdfRenderer();

// Configure rendering options
Renderer.RenderingOptions.MarginTop = 50; // millimeters
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Render a simple HTML string to PDF
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");

// Add document properties
PDF.MetaData.Author = "Development Team";
PDF.MetaData.Keywords = "HTML, PDF, C#";
PDF.MetaData.ModifiedDate = DateTime.Now;

// Save the PDF
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets: images, CSS, and javascript
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from 
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");

// Apply security settings
AdvancedPDF.Password = "pass123";
AdvancedPDF.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// Save the advanced PDF with external assets
AdvancedPDF.SaveAs("html-with-assets.pdf");
// Create an instance of the ChromePdfRenderer
var Renderer = new IronPdf.ChromePdfRenderer();

// Configure rendering options
Renderer.RenderingOptions.MarginTop = 50; // millimeters
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Render a simple HTML string to PDF
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");

// Add document properties
PDF.MetaData.Author = "Development Team";
PDF.MetaData.Keywords = "HTML, PDF, C#";
PDF.MetaData.ModifiedDate = DateTime.Now;

// Save the PDF
PDF.SaveAs("pixel-perfect.pdf");

// Load external HTML assets: images, CSS, and javascript
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from 
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");

// Apply security settings
AdvancedPDF.Password = "pass123";
AdvancedPDF.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;

// Save the advanced PDF with external assets
AdvancedPDF.SaveAs("html-with-assets.pdf");
$vbLabelText   $csharpLabel

Pour des techniques avancées de conversion HTML vers PDF, consultez le tutoriel HTML vers PDF .

Utilisation de XFINIUM.PDF

La création d'un document PDF vierge avec XFINIUM.PDF nécessite trois lignes : créer le document, créer une page et enregistrer :

// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();

// Add a page to the document
PdfPage page = document.Pages.Add();

// Save the document as a PDF file
document.Save("empty.pdf");
// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();

// Add a page to the document
PdfPage page = document.Pages.Add();

// Save the document as a PDF file
document.Save("empty.pdf");
$vbLabelText   $csharpLabel

L'ajout de contenu textuel nécessite trois lignes supplémentaires : la création d'une police, la création d'un pinceau pour la couleur et le dessin du texte :

// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();

// Create a standard font with Helvetica face and 24 point size
PdfStandardFont helvetica = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);

// Create a solid RGB red brush.
PdfBrush brush = new PdfBrush(PdfRgbColor.Red);

// Draw the text on the page.
page.Graphics.DrawString("Hello World", helvetica, brush, 100, 100);

// Save the document as a PDF file
document.Save("helloworld.pdf");
// Create a new PDF document
PdfFixedDocument document = new PdfFixedDocument();
PdfPage page = document.Pages.Add();

// Create a standard font with Helvetica face and 24 point size
PdfStandardFont helvetica = new PdfStandardFont(PdfStandardFontFace.Helvetica, 24);

// Create a solid RGB red brush.
PdfBrush brush = new PdfBrush(PdfRgbColor.Red);

// Draw the text on the page.
page.Graphics.DrawString("Hello World", helvetica, brush, 100, 100);

// Save the document as a PDF file
document.Save("helloworld.pdf");
$vbLabelText   $csharpLabel

Le modèle objet ressemble beaucoup à la norme PDF. Cette approche présente des avantages indéniables pour la création d'abstractions complexes telles que les documents de flux . ## Comment créer des fichiers PDF remplissables

Utilisation de XFINIUM.PDF

XFINIUM.PDF vous permet de créer de nouveaux formulaires PDF et de remplir des formulaires PDF existants .

Chaque type de champ de formulaire PDF possède une classe correspondante :

  • PdfTextBoxField – champs de texte
  • PdfCheckBoxField – cases à cocher
  • PdfRadioButtonField – ensembles de boutons radio
  • PdfComboboxField – boîtes de dialogue
  • PdfListboxField – listes déroulantes
  • PdfPushbuttonField – boutons-poussoirs
  • Champs de signature PDF – champs de signature

Pour créer un champ de formulaire, spécifiez le nom du champ et son emplacement sur la page. Après avoir créé l'objet champ, ajoutez-le à la page et définissez ses attributs :

// Create a text box field named "firstname"
PdfTextBoxField firstNameTextBox = new PdfTextBoxField("firstname");

// Add the field to a PDF page
pdfpage.Fields.Add(firstNameTextBox);

// Set the position of the field on the PDF page
firstNameTextBox.Widgets[0].VisualRectangle = new PdfVisualRectangle(150, 45, 200, 20);
// Create a text box field named "firstname"
PdfTextBoxField firstNameTextBox = new PdfTextBoxField("firstname");

// Add the field to a PDF page
pdfpage.Fields.Add(firstNameTextBox);

// Set the position of the field on the PDF page
firstNameTextBox.Widgets[0].VisualRectangle = new PdfVisualRectangle(150, 45, 200, 20);
$vbLabelText   $csharpLabel

Pour remplir les formulaires PDF existants, chargez-les dans un objet PdfFixedDocument . La collection de champs du document se remplit automatiquement. Vous pouvez rechercher des champs par index ou par nom et les renseigner en définissant leurs propriétés de valeur :

// Load an existing PDF document with forms
PdfFixedDocument document = new PdfFixedDocument("form.pdf");

// Fill form fields with values
(document.Form.Fields["firstname"] as PdfTextBoxField).Text = "John";
(document.Form.Fields["lastname"] as PdfTextBoxField).Value = "Doe";
(document.Form.Fields["sex"].Widgets[0] as PdfRadioButtonWidget).Checked = true;
(document.Form.Fields["firstcar"] as PdfComboBoxField).SelectedIndex = 0;
(document.Form.Fields["secondcar"] as PdfListBoxField).SelectedIndex = 1;
(document.Form.Fields["agree"] as PdfCheckBoxField).Checked = true;

// Save the filled form as a new PDF file
document.Save("form_filled.pdf");
// Load an existing PDF document with forms
PdfFixedDocument document = new PdfFixedDocument("form.pdf");

// Fill form fields with values
(document.Form.Fields["firstname"] as PdfTextBoxField).Text = "John";
(document.Form.Fields["lastname"] as PdfTextBoxField).Value = "Doe";
(document.Form.Fields["sex"].Widgets[0] as PdfRadioButtonWidget).Checked = true;
(document.Form.Fields["firstcar"] as PdfComboBoxField).SelectedIndex = 0;
(document.Form.Fields["secondcar"] as PdfListBoxField).SelectedIndex = 1;
(document.Form.Fields["agree"] as PdfCheckBoxField).Checked = true;

// Save the filled form as a new PDF file
document.Save("form_filled.pdf");
$vbLabelText   $csharpLabel

Utilisation de IronPDF

Voici comment créer des PDF remplissables avec IronPDF :

// PM> Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

// Step 1. Creating a PDF with editable forms from HTML using form and input tags
var FormHtml = @"
<html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; margin: 40px; }
            h2 { color: #333; }
            form { background: #f4f4f4; padding: 20px; border-radius: 8px; }
            input[type='text'] { 
                width: 100%; 
                padding: 8px; 
                margin: 10px 0;
                border: 1px solid #ddd;
                border-radius: 4px;
            }
            input[type='checkbox'] { margin-right: 10px; }
            select { width: 100%; padding: 8px; margin: 10px 0; }
        </style>
    </head>
    <body>
        <h2>Editable PDF Form</h2>
        <form>
          First name:<br> <input type='text' name='firstname' value=''> <br>
          Last name:<br> <input type='text' name='lastname' value=''>
          <br><br>
          Email:<br> <input type='text' name='email' value=''>
          <br><br>
          Subscribe to newsletter: <input type='checkbox' name='newsletter' value='yes'>
          <br><br>
          Country: 
          <select name='country'>
              <option value='usa'>United States</option>
              <option value='uk'>United Kingdom</option>
              <option value='canada'>Canada</option>
          </select>
        </form>
    </body>
</html>";

// Create a PDF renderer with form creation enabled
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
Renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
Renderer.RenderingOptions.MarginTop = 20;
Renderer.RenderingOptions.MarginBottom = 20;

// Render the HTML as a PDF and save it
var pdfDocument = Renderer.RenderHtmlAsPdf(FormHtml);
pdfDocument.SaveAs("BasicForm.pdf");

// Step 2. Reading and Writing PDF form values.
var FormDocument = PdfDocument.FromFile("BasicForm.pdf");

// Get form field collection
var form = FormDocument.Form;

// Set and Read the value of the "firstname" field
var FirstNameField = form.FindFormField("firstname");
FirstNameField.Value = "Minnie";
Console.WriteLine("FirstNameField value: {0}", FirstNameField.Value);

// Set and Read the value of the "lastname" field
var LastNameField = form.FindFormField("lastname");
LastNameField.Value = "Mouse";
Console.WriteLine("LastNameField value: {0}", LastNameField.Value);

// Set email field
var EmailField = form.FindFormField("email");
EmailField.Value = "minnie.mouse@example.com";

// Set checkbox
var NewsletterField = form.FindFormField("newsletter");
NewsletterField.Value = "yes";

// Set dropdown selection
var CountryField = form.FindFormField("country");
CountryField.Value = "usa";

// Save the form with filled values
FormDocument.SaveAs("FilledForm.pdf");

// Step 3. Flattening the form (making it non-editable)
FormDocument.Form.Flatten();
FormDocument.SaveAs("FlattenedForm.pdf");
// PM> Install-Package IronPdf
using IronPdf;
using IronPdf.Rendering;

// Step 1. Creating a PDF with editable forms from HTML using form and input tags
var FormHtml = @"
<html>
    <head>
        <style>
            body { font-family: Arial, sans-serif; margin: 40px; }
            h2 { color: #333; }
            form { background: #f4f4f4; padding: 20px; border-radius: 8px; }
            input[type='text'] { 
                width: 100%; 
                padding: 8px; 
                margin: 10px 0;
                border: 1px solid #ddd;
                border-radius: 4px;
            }
            input[type='checkbox'] { margin-right: 10px; }
            select { width: 100%; padding: 8px; margin: 10px 0; }
        </style>
    </head>
    <body>
        <h2>Editable PDF Form</h2>
        <form>
          First name:<br> <input type='text' name='firstname' value=''> <br>
          Last name:<br> <input type='text' name='lastname' value=''>
          <br><br>
          Email:<br> <input type='text' name='email' value=''>
          <br><br>
          Subscribe to newsletter: <input type='checkbox' name='newsletter' value='yes'>
          <br><br>
          Country: 
          <select name='country'>
              <option value='usa'>United States</option>
              <option value='uk'>United Kingdom</option>
              <option value='canada'>Canada</option>
          </select>
        </form>
    </body>
</html>";

// Create a PDF renderer with form creation enabled
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
Renderer.RenderingOptions.CreatePdfFormsFromHtml = true;
Renderer.RenderingOptions.CssMediaType = PdfCssMediaType.Print;
Renderer.RenderingOptions.MarginTop = 20;
Renderer.RenderingOptions.MarginBottom = 20;

// Render the HTML as a PDF and save it
var pdfDocument = Renderer.RenderHtmlAsPdf(FormHtml);
pdfDocument.SaveAs("BasicForm.pdf");

// Step 2. Reading and Writing PDF form values.
var FormDocument = PdfDocument.FromFile("BasicForm.pdf");

// Get form field collection
var form = FormDocument.Form;

// Set and Read the value of the "firstname" field
var FirstNameField = form.FindFormField("firstname");
FirstNameField.Value = "Minnie";
Console.WriteLine("FirstNameField value: {0}", FirstNameField.Value);

// Set and Read the value of the "lastname" field
var LastNameField = form.FindFormField("lastname");
LastNameField.Value = "Mouse";
Console.WriteLine("LastNameField value: {0}", LastNameField.Value);

// Set email field
var EmailField = form.FindFormField("email");
EmailField.Value = "minnie.mouse@example.com";

// Set checkbox
var NewsletterField = form.FindFormField("newsletter");
NewsletterField.Value = "yes";

// Set dropdown selection
var CountryField = form.FindFormField("country");
CountryField.Value = "usa";

// Save the form with filled values
FormDocument.SaveAs("FilledForm.pdf");

// Step 3. Flattening the form (making it non-editable)
FormDocument.Form.Flatten();
FormDocument.SaveAs("FlattenedForm.pdf");
$vbLabelText   $csharpLabel

Vous commencez par créer un formulaire avec des balises de formatage HTML. La bibliothèque gère la complexité lors de l'enregistrement au format PDF. La lecture et l'écriture des valeurs de formulaire s'effectuent à l'aide de la fonction FindFormField . Votre application peut immédiatement utiliser cette fonctionnalité pour remplir les formulaires par programmation.

Pour une gestion avancée des formulaires, y compris les signatures numériques , consultez le tutoriel Créer des formulaires PDF .

Comment signer numériquement des fichiers PDF

Le télétravail exige un traitement efficace des documents. Remplir et signer des formulaires , envoyer des fichiers et traiter des documents sont des activités commerciales quotidiennes. La signature de documents, de portefeuilles et de formulaires PDF remplace les documents papier. Les signatures numériques permettent aux entreprises de signer des accords et de partager des formulaires PDF en ligne.

Utilisation de XFINIUM.PDF

Un champ de signature permet d'appliquer des signatures numériques aux fichiers PDF (classe PdfSignatureField ). Bien que le champ de signature apparaisse sur une seule page, la signature numérique signe l'intégralité du document.

Le processus de signature utilise un objet PdfDigitalSignature pour définir l'attribut de signature. La signature se forme lors de l'enregistrement du document en fonction de la structure binaire du fichier PDF.

PdfDigitalSignature constitue la base de toutes les signatures XFINIUM :

  • PdfCmsDigitalSignature – Signature standard CMS (hérite de PdfDigitalSignature )
  • PdfPadesDigitalSignature – Signature standard PADES (hérite de la PdfCmsDigitalSignature )
  • PdfInteractiveCmsDigitalSignature – Signature CMS utilisant une carte à puce matérielle
  • PdfInteractivePadesDigitalSignature – PADES avec prise en charge matérielle des cartes à puce
  • PdfDocumentTimeStamp – Horodatage au niveau du document (hérite de PdfDigitalSignature )

Utilisation de IronPDF

Les développeurs posent fréquemment des questions sur la possibilité d'ajouter des signatures par programmation aux fichiers PDF avec IronPDF et C#. Cela peut signifier :

  • Ajout d'images de signature graphique à partir de fichiers
  • Signature cryptographique pour empêcher toute falsification
  • Ajout d'icônes de signature manuscrite avec signature cryptographique

La première approche consiste à apposer une signature PNG sur des pages PDF existantes. Utilisez-le pour les signatures ou les tampons d'entreprise :

// Open an existing PDF document or create a new one
var Pdf = PdfDocument.FromFile(@"C:\Path\To\ASPX to PDF.pdf");

// Define an HTML stamp with a signature image
var SignatureStamp = new HtmlStamp()
{
    Html = "<img src='signature.png' />",
    Width = 150,
    Height = 50,
    Bottom = 300,
    Left = 85,
    ZIndex = HtmlStamp.StampLayer.OnTopOfExistingPDFContent
};

// Advanced stamp with styling
var StyledSignatureStamp = new HtmlStamp()
{
    Html = @"<div style='border: 2px solid #000; padding: 10px; background: rgba(255,255,255,0.9);'>
                <img src='signature.png' style='width: 120px;' />
                <p style='margin: 5px 0 0 0; font-size: 10px;'>Digitally Signed</p>
                <p style='margin: 0; font-size: 8px;'>{date}</p>
             </div>",
    Width = 150,
    Height = 100,
    Bottom = 50,
    Right = 50,
    ZIndex = HtmlStamp.StampLayer.OnTopOfExistingPDFContent
};

// Stamp the signature on the first page of the PDF
Pdf.StampHTML(SignatureStamp, 1);

// Or apply to all pages
Pdf.StampHTML(StyledSignatureStamp);

// Save the stamped PDF
Pdf.SaveAs(@"C:\Path\To\Stamped_PDF.pdf");
// Open an existing PDF document or create a new one
var Pdf = PdfDocument.FromFile(@"C:\Path\To\ASPX to PDF.pdf");

// Define an HTML stamp with a signature image
var SignatureStamp = new HtmlStamp()
{
    Html = "<img src='signature.png' />",
    Width = 150,
    Height = 50,
    Bottom = 300,
    Left = 85,
    ZIndex = HtmlStamp.StampLayer.OnTopOfExistingPDFContent
};

// Advanced stamp with styling
var StyledSignatureStamp = new HtmlStamp()
{
    Html = @"<div style='border: 2px solid #000; padding: 10px; background: rgba(255,255,255,0.9);'>
                <img src='signature.png' style='width: 120px;' />
                <p style='margin: 5px 0 0 0; font-size: 10px;'>Digitally Signed</p>
                <p style='margin: 0; font-size: 8px;'>{date}</p>
             </div>",
    Width = 150,
    Height = 100,
    Bottom = 50,
    Right = 50,
    ZIndex = HtmlStamp.StampLayer.OnTopOfExistingPDFContent
};

// Stamp the signature on the first page of the PDF
Pdf.StampHTML(SignatureStamp, 1);

// Or apply to all pages
Pdf.StampHTML(StyledSignatureStamp);

// Save the stamped PDF
Pdf.SaveAs(@"C:\Path\To\Stamped_PDF.pdf");
$vbLabelText   $csharpLabel

Signez cryptographiquement les fichiers PDF à l'aide de certificats numériques X509Certificate2 aux formats .pfx et .p12 en une seule ligne :

// 123456 below represents the signature password
new IronPdf.PdfSignature("CertificateFile.p12", "123456").SignPdfFile("ASPX to PDF.pdf");

// Or with more control
var signature = new IronPdf.PdfSignature("CertificateFile.p12", "123456")
{
    SigningContact = "john@example.com",
    SigningLocation = "New York, USA",
    SigningReason = "Contract Agreement"
};

// Load the PDF
var pdf = PdfDocument.FromFile("contract.pdf");

// Sign and save
pdf.SignPdfWithDigitalSignature(signature);
pdf.SaveAs("signed-contract.pdf");
// 123456 below represents the signature password
new IronPdf.PdfSignature("CertificateFile.p12", "123456").SignPdfFile("ASPX to PDF.pdf");

// Or with more control
var signature = new IronPdf.PdfSignature("CertificateFile.p12", "123456")
{
    SigningContact = "john@example.com",
    SigningLocation = "New York, USA",
    SigningReason = "Contract Agreement"
};

// Load the PDF
var pdf = PdfDocument.FromFile("contract.pdf");

// Sign and save
pdf.SignPdfWithDigitalSignature(signature);
pdf.SaveAs("signed-contract.pdf");
$vbLabelText   $csharpLabel

Cet exemple avancé combine la signature d'identité numérique .pfx / .p12 X509Certificate2 avec des signatures manuscrites :

// Create a digital signature using a certificate file
var Signature = new IronPdf.PdfSignature("Iron.pfx", "123456");

// Render a PDF document to be signed
var Renderer = new ChromePdfRenderer();
Renderer.RenderingOptions.MarginBottom = 0;
Renderer.RenderingOptions.MarginTop = 0;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Create PDF with security features
string html = @"<h1>Contract Agreement</h1>
                <p>This document is digitally signed and encrypted.</p>
                <p>Agreement Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>";

PdfDocument doc = Renderer.RenderHtmlAsPdf(html);

// Configure optional signing options and a handwritten signature graphic
Signature.SigningContact = "support@ironsoftware.com";
Signature.SigningLocation = "Chicago, USA";
Signature.SigningReason = "To show how to sign a PDF";

// Load a handwritten signature image
Signature.LoadSignatureImageFromFile("handwriting.png");

// Advanced security: Set permissions
doc.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
doc.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEdit;
doc.SecuritySettings.AllowUserCopyPasteContent = false;

// Sign the PDF document with the digital signature
doc.SignPdfWithDigitalSignature(Signature);

// Add password protection
doc.Password = "userpassword";
doc.OwnerPassword = "ownerpassword";

// Save the signed PDF document
doc.SaveAs("Signed_ASPX_to_PDF.pdf");
// Create a digital signature using a certificate file
var Signature = new IronPdf.PdfSignature("Iron.pfx", "123456");

// Render a PDF document to be signed
var Renderer = new ChromePdfRenderer();
Renderer.RenderingOptions.MarginBottom = 0;
Renderer.RenderingOptions.MarginTop = 0;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;

// Create PDF with security features
string html = @"<h1>Contract Agreement</h1>
                <p>This document is digitally signed and encrypted.</p>
                <p>Agreement Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>";

PdfDocument doc = Renderer.RenderHtmlAsPdf(html);

// Configure optional signing options and a handwritten signature graphic
Signature.SigningContact = "support@ironsoftware.com";
Signature.SigningLocation = "Chicago, USA";
Signature.SigningReason = "To show how to sign a PDF";

// Load a handwritten signature image
Signature.LoadSignatureImageFromFile("handwriting.png");

// Advanced security: Set permissions
doc.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.NoPrint;
doc.SecuritySettings.AllowUserEdits = IronPdf.Security.PdfEditSecurity.NoEdit;
doc.SecuritySettings.AllowUserCopyPasteContent = false;

// Sign the PDF document with the digital signature
doc.SignPdfWithDigitalSignature(Signature);

// Add password protection
doc.Password = "userpassword";
doc.OwnerPassword = "ownerpassword";

// Save the signed PDF document
doc.SaveAs("Signed_ASPX_to_PDF.pdf");
$vbLabelText   $csharpLabel

Pour des implémentations de sécurité complètes, consultez la documentation d'Ironsecuredoc pour découvrir des fonctionnalités avancées de protection des documents.## Comment chaque bibliothèque gère-t-elle les frameworks CSS modernes et Bootstrap ?

Les applications web modernes s'appuient souvent sur des frameworks CSS comme Bootstrap pour un développement rapide de l'interface utilisateur et une conception réactive. Les outils de génération de PDF doivent préserver fidèlement ces structures de base afin de garantir une qualité professionnelle des documents.

IronPDF : Support complet du framework Bootstrap

Le moteur de rendu Chromium d'IronPDF prend entièrement en charge les frameworks CSS modernes :

  • Bootstrap 5 : Rendu complet Flexbox et CSS Grid avec tous les composants responsifs Bootstrap 4 : Systèmes de cartes complets, barres de navigation et classes utilitaires
  • Tailwind CSS : Toutes les classes utilitaires et leurs variantes responsives
  • Foundation et autres frameworks : La prise en charge complète de CSS3 garantit le bon fonctionnement de tous les frameworks modernes.
  • CSS avancé : Flexbox, CSS Grid, propriétés personnalisées, animations et transformations

Validation en conditions réelles : la page d'accueil et les modèles Bootstrap s'affichent avec une fidélité identique à celle des navigateurs.

Exemple de code : Horaire de l'événement avec cartes Bootstrap

using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering for optimal Bootstrap output
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to fully load
renderer.RenderingOptions.ViewPortWidth = 1280; // Desktop viewport
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;

string bootstrapSchedule = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_135___ rel='stylesheet'>
    <style>
        @media print {
            .pagebreak { page-break-after: always; }
        }
    </style>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Tech Conference 2025 - Schedule</h1>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card border-primary'>
                    <div class='card-header bg-primary text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Keynote Session</h5>
                        <span class='badge bg-light text-primary'>9:00 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>The Future of AI in Software Development</strong></p>
                        <p class='card-text'>Join us for an exploration of how artificial intelligence is transforming the software development environment.</p>
                        <div class='d-flex align-items-center'>
                            <img src='___PROTECTED_URL_136___ class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Dr. Sarah Chen</div>
                                <small class='text-muted'>AI Research Lead</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-success'>
                    <div class='card-header bg-success text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Workshop</h5>
                        <span class='badge bg-light text-success'>10:30 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Workshop Room A</h6>
                        <p class='card-text'><strong>Hands-On: Cloud-Native Architecture</strong></p>
                        <p class='card-text'>Learn practical techniques for building flexible, cloud-native applications with modern frameworks.</p>
                        <div class='d-flex align-items-center'>
                            <img src='___PROTECTED_URL_137___ class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Michael Rodriguez</div>
                                <small class='text-muted'>Cloud Architect</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-warning'>
                    <div class='card-header bg-warning text-dark d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Panel Discussion</h5>
                        <span class='badge bg-dark'>2:00 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>Security in Modern Web Applications</strong></p>
                        <p class='card-text'>Industry experts discuss current security challenges and best practices for protecting user data.</p>
                        <small class='text-muted'>Featuring 4 industry experts</small>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-info'>
                    <div class='card-header bg-info text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Technical Talk</h5>
                        <span class='badge bg-light text-info'>3:30 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Room B</h6>
                        <p class='card-text'><strong>Performance Optimization Strategies</strong></p>
                        <p class='card-text'>Deep dive into advanced techniques for improve application performance and reducing latency.</p>
                        <div class='d-flex align-items-center'>
                            <img src='___PROTECTED_URL_138___ class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Alex Kim</div>
                                <small class='text-muted'>Performance Engineer</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='pagebreak'></div>

        <h2 class='mt-5'>Additional Sessions</h2>
        <div class='table-responsive'>
            <table class='table table-striped'>
                <thead>
                    <tr>
                        <th>Time</th>
                        <th>Session</th>
                        <th>Speaker</th>
                        <th>Location</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>11:45 AM</td>
                        <td>Lightning Talks</td>
                        <td>Various</td>
                        <td>Room C</td>
                    </tr>
                    <tr>
                        <td>1:00 PM</td>
                        <td>Networking Lunch</td>
                        <td>-</td>
                        <td>Cafeteria</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</body>
</html>";

// Generate the PDF
var pdf = renderer.RenderHtmlAsPdf(bootstrapSchedule);

// Add metadata
pdf.MetaData.Author = "Tech Conference Team";
pdf.MetaData.Title = "Conference Schedule 2025";
pdf.MetaData.Subject = "Event Schedule";

// Save the PDF
pdf.SaveAs("conference-schedule.pdf");

// Example: Generate responsive invoice with Bootstrap
string bootstrapInvoice = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_139___ rel='stylesheet'>
    <link href='___PROTECTED_URL_140___ rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <div class='row'>
            <div class='col-12'>
                <div class='card'>
                    <div class='card-body'>
                        <div class='row mb-4'>
                            <div class='col-sm-6'>
                                <h2 class='text-primary'><i class='fas fa-file-invoice'></i> INVOICE</h2>
                                <p class='mb-1'><strong>Invoice #:</strong> INV-2025-001</p>
                                <p class='mb-1'><strong>Date:</strong> " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
                            </div>
                            <div class='col-sm-6 text-sm-end'>
                                <h4>Your Company Name</h4>
                                <p class='mb-1'>123 Business St</p>
                                <p class='mb-1'>City, State 12345</p>
                                <p>contact@company.com</p>
                            </div>
                        </div>

                        <hr>

                        <div class='row mb-4'>
                            <div class='col-sm-6'>
                                <h5>Bill To:</h5>
                                <p class='mb-1'><strong>Client Company</strong></p>
                                <p class='mb-1'>456 Client Ave</p>
                                <p>City, State 67890</p>
                            </div>
                        </div>

                        <div class='table-responsive'>
                            <table class='table table-bordered'>
                                <thead class='table-primary'>
                                    <tr>
                                        <th>Description</th>
                                        <th class='text-center'>Quantity</th>
                                        <th class='text-end'>Price</th>
                                        <th class='text-end'>Total</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td>Web Development Services</td>
                                        <td class='text-center'>40</td>
                                        <td class='text-end'>$150.00</td>
                                        <td class='text-end'>$6,000.00</td>
                                    </tr>
                                    <tr>
                                        <td>UI/UX Design</td>
                                        <td class='text-center'>20</td>
                                        <td class='text-end'>$125.00</td>
                                        <td class='text-end'>$2,500.00</td>
                                    </tr>
                                </tbody>
                                <tfoot>
                                    <tr>
                                        <td colspan='3' class='text-end'><strong>Subtotal:</strong></td>
                                        <td class='text-end'><strong>$8,500.00</strong></td>
                                    </tr>
                                    <tr>
                                        <td colspan='3' class='text-end'>Tax (10%):</td>
                                        <td class='text-end'>$850.00</td>
                                    </tr>
                                    <tr class='table-primary'>
                                        <td colspan='3' class='text-end'><strong>Total Due:</strong></td>
                                        <td class='text-end'><strong>$9,350.00</strong></td>
                                    </tr>
                                </tfoot>
                            </table>
                        </div>

                        <div class='alert alert-info mt-4'>
                            <i class='fas fa-info-circle'></i> Payment is due within 30 days. Thank you for your business!
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var invoicePdf = renderer.RenderHtmlAsPdf(bootstrapInvoice);
invoicePdf.SaveAs("bootstrap-invoice.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

// Configure rendering for optimal Bootstrap output
renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to fully load
renderer.RenderingOptions.ViewPortWidth = 1280; // Desktop viewport
renderer.RenderingOptions.MarginTop = 10;
renderer.RenderingOptions.MarginBottom = 10;
renderer.RenderingOptions.MarginLeft = 10;
renderer.RenderingOptions.MarginRight = 10;

string bootstrapSchedule = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_135___ rel='stylesheet'>
    <style>
        @media print {
            .pagebreak { page-break-after: always; }
        }
    </style>
</head>
<body>
    <div class='container my-5'>
        <h1 class='text-center mb-5'>Tech Conference 2025 - Schedule</h1>

        <div class='row g-4'>
            <div class='col-md-6'>
                <div class='card border-primary'>
                    <div class='card-header bg-primary text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Keynote Session</h5>
                        <span class='badge bg-light text-primary'>9:00 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>The Future of AI in Software Development</strong></p>
                        <p class='card-text'>Join us for an exploration of how artificial intelligence is transforming the software development environment.</p>
                        <div class='d-flex align-items-center'>
                            <img src='___PROTECTED_URL_136___ class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Dr. Sarah Chen</div>
                                <small class='text-muted'>AI Research Lead</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-success'>
                    <div class='card-header bg-success text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Workshop</h5>
                        <span class='badge bg-light text-success'>10:30 AM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Workshop Room A</h6>
                        <p class='card-text'><strong>Hands-On: Cloud-Native Architecture</strong></p>
                        <p class='card-text'>Learn practical techniques for building flexible, cloud-native applications with modern frameworks.</p>
                        <div class='d-flex align-items-center'>
                            <img src='___PROTECTED_URL_137___ class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Michael Rodriguez</div>
                                <small class='text-muted'>Cloud Architect</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-warning'>
                    <div class='card-header bg-warning text-dark d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Panel Discussion</h5>
                        <span class='badge bg-dark'>2:00 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Main Auditorium</h6>
                        <p class='card-text'><strong>Security in Modern Web Applications</strong></p>
                        <p class='card-text'>Industry experts discuss current security challenges and best practices for protecting user data.</p>
                        <small class='text-muted'>Featuring 4 industry experts</small>
                    </div>
                </div>
            </div>

            <div class='col-md-6'>
                <div class='card border-info'>
                    <div class='card-header bg-info text-white d-flex justify-content-between align-items-center'>
                        <h5 class='mb-0'>Technical Talk</h5>
                        <span class='badge bg-light text-info'>3:30 PM</span>
                    </div>
                    <div class='card-body'>
                        <h6 class='card-subtitle mb-2 text-muted'>Room B</h6>
                        <p class='card-text'><strong>Performance Optimization Strategies</strong></p>
                        <p class='card-text'>Deep dive into advanced techniques for improve application performance and reducing latency.</p>
                        <div class='d-flex align-items-center'>
                            <img src='___PROTECTED_URL_138___ class='rounded-circle me-2' alt='Speaker'>
                            <div>
                                <div class='fw-bold'>Alex Kim</div>
                                <small class='text-muted'>Performance Engineer</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class='pagebreak'></div>

        <h2 class='mt-5'>Additional Sessions</h2>
        <div class='table-responsive'>
            <table class='table table-striped'>
                <thead>
                    <tr>
                        <th>Time</th>
                        <th>Session</th>
                        <th>Speaker</th>
                        <th>Location</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>11:45 AM</td>
                        <td>Lightning Talks</td>
                        <td>Various</td>
                        <td>Room C</td>
                    </tr>
                    <tr>
                        <td>1:00 PM</td>
                        <td>Networking Lunch</td>
                        <td>-</td>
                        <td>Cafeteria</td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>
</body>
</html>";

// Generate the PDF
var pdf = renderer.RenderHtmlAsPdf(bootstrapSchedule);

// Add metadata
pdf.MetaData.Author = "Tech Conference Team";
pdf.MetaData.Title = "Conference Schedule 2025";
pdf.MetaData.Subject = "Event Schedule";

// Save the PDF
pdf.SaveAs("conference-schedule.pdf");

// Example: Generate responsive invoice with Bootstrap
string bootstrapInvoice = @"
<!DOCTYPE html>
<html>
<head>
    <link href='___PROTECTED_URL_139___ rel='stylesheet'>
    <link href='___PROTECTED_URL_140___ rel='stylesheet'>
</head>
<body>
    <div class='container mt-5'>
        <div class='row'>
            <div class='col-12'>
                <div class='card'>
                    <div class='card-body'>
                        <div class='row mb-4'>
                            <div class='col-sm-6'>
                                <h2 class='text-primary'><i class='fas fa-file-invoice'></i> INVOICE</h2>
                                <p class='mb-1'><strong>Invoice #:</strong> INV-2025-001</p>
                                <p class='mb-1'><strong>Date:</strong> " + DateTime.Now.ToString("MMMM dd, yyyy") + @"</p>
                            </div>
                            <div class='col-sm-6 text-sm-end'>
                                <h4>Your Company Name</h4>
                                <p class='mb-1'>123 Business St</p>
                                <p class='mb-1'>City, State 12345</p>
                                <p>contact@company.com</p>
                            </div>
                        </div>

                        <hr>

                        <div class='row mb-4'>
                            <div class='col-sm-6'>
                                <h5>Bill To:</h5>
                                <p class='mb-1'><strong>Client Company</strong></p>
                                <p class='mb-1'>456 Client Ave</p>
                                <p>City, State 67890</p>
                            </div>
                        </div>

                        <div class='table-responsive'>
                            <table class='table table-bordered'>
                                <thead class='table-primary'>
                                    <tr>
                                        <th>Description</th>
                                        <th class='text-center'>Quantity</th>
                                        <th class='text-end'>Price</th>
                                        <th class='text-end'>Total</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td>Web Development Services</td>
                                        <td class='text-center'>40</td>
                                        <td class='text-end'>$150.00</td>
                                        <td class='text-end'>$6,000.00</td>
                                    </tr>
                                    <tr>
                                        <td>UI/UX Design</td>
                                        <td class='text-center'>20</td>
                                        <td class='text-end'>$125.00</td>
                                        <td class='text-end'>$2,500.00</td>
                                    </tr>
                                </tbody>
                                <tfoot>
                                    <tr>
                                        <td colspan='3' class='text-end'><strong>Subtotal:</strong></td>
                                        <td class='text-end'><strong>$8,500.00</strong></td>
                                    </tr>
                                    <tr>
                                        <td colspan='3' class='text-end'>Tax (10%):</td>
                                        <td class='text-end'>$850.00</td>
                                    </tr>
                                    <tr class='table-primary'>
                                        <td colspan='3' class='text-end'><strong>Total Due:</strong></td>
                                        <td class='text-end'><strong>$9,350.00</strong></td>
                                    </tr>
                                </tfoot>
                            </table>
                        </div>

                        <div class='alert alert-info mt-4'>
                            <i class='fas fa-info-circle'></i> Payment is due within 30 days. Thank you for your business!
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var invoicePdf = renderer.RenderHtmlAsPdf(bootstrapInvoice);
invoicePdf.SaveAs("bootstrap-invoice.pdf");
$vbLabelText   $csharpLabel

Résultat : Un programme de conférence professionnel avec la grille de cartes Bootstrap, l'alignement flexbox, les composants de badge et une mise en page réactive — le tout rendu avec précision dans le PDF.

XFINIUM.PDF : Support limité de HTML et de cadre

XFINIUM.PDF se concentre sur la génération et la manipulation de fichiers PDF plutôt que sur la conversion HTML vers PDF. La bibliothèque présente des limitations importantes pour les cadres Bootstrap et CSS modernes :

  • Pas de rendu HTML natif : XFINIUM.PDF n'intègre pas de moteur de conversion HTML vers PDF.
  • Prise en charge HTML de base uniquement : limitée aux structures HTML simples sans CSS avancé
  • Prise en charge de Bootstrap non prise en charge : les frameworks Bootstrap modernes (4/5) avec Flexbox et CSS Grid ne sont pas pris en charge.
  • Solutions de contournement nécessaires : les développeurs doivent utiliser les API PDF de bas niveau pour recréer manuellement les mises en page.
  • Outils externes nécessaires : une intégration avec des moteurs de rendu HTML externes peut être requise.

Impact sur le développement : les applications utilisant Bootstrap ou des frameworks CSS modernes ne peuvent pas convertir directement leur interface utilisateur en PDF avec XFINIUM.PDF. Les développeurs doivent soit :

  1. Recréer les mises en page en utilisant les API de dessin de bas niveau de XFINIUM.PDF (temps de développement significatif)
  2. Intégrer des outils de rendu HTML externes (complexité et dépendances supplémentaires)
  3. Maintenir le code de mise en page PDF distinct du code UI web (surcharge de maintenance)

Pour les projets nécessitant une conversion HTML vers PDF avec des frameworks modernes, les limitations de XFINIUM.PDF exigent un développement supplémentaire important.

Pour une prise en charge complète de Bootstrap et des frameworks CSS modernes, consultez le guide Bootstrap et Flexbox CSS.

Quels sont les tarifs et les options de licence ?

Tarification et Licence XFINIUM.PDF

Chaque package est disponible en deux éditions : l'édition Generator pour la production/l'édition de PDF et l'édition Viewer contenant toutes les fonctionnalités du Generator ainsi que le rendu et la visualisation de PDF.

  • Chaque développeur a besoin d'une licence.
  • Distribution sans redevance sur un nombre illimité d'ordinateurs de bureau/serveurs.
  • L'abonnement d'assistance comprend un an de mises à jour et de support.

Les prix varient de 290,00 $ à 872,00 $ par an.

Tarification et licences d'IronPDF

IronPDF est gratuit pour le développement et peut être utilisé à des fins commerciales sous licence à tout moment. Différentes options sont disponibles : licences pour un projet unique, développeurs individuels, agences, organisations multinationales et redistribution SaaS/OEM. Toutes les licences incluent une garantie de remboursement de 30 jours, un an de support/mises à jour, une validité pour les environnements de développement/préproduction/production et une licence perpétuelle (achat unique). Le forfait Lite est disponible à partir de $799 sans frais récurrents.

Quelle bibliothèque PDF choisir ?

La bibliothèque IronPDF simplifie la création de PDF sans API propriétaires. " HTML-To-PDF " convertit les documents aux formats standards ouverts tels que HTML, JS, CSS, JPG, PNG, GIF et SVG en PDF d'une qualité irréprochable. Elle s'appuie sur les compétences existantes des développeurs. Vous pouvez télécharger des documents, les envoyer par courriel ou les enregistrer dans le nuage, pour créer des factures, des devis, des rapports, des contrats et autres documents administratifs. Elle fonctionne avec ASP.NET, ASP.NET Core, les formulaires web, MVC, le framework .NET, et les APIs web .NET Core.

XFINIUM.PDF offre des fonctionnalités destinées aux développeurs PDF débutants et avancés. Que vous ayez besoin de créer des rapports, de remplir des formulaires PDF, de constituer des portfolios, de masquer des informations ou de convertir des PDF en TIFF multipages, il offre les outils nécessaires. Le modèle objet de base suit les spécifications PDF. Le code se compile sur toutes les plateformes sans modification.

Les licences XFINIUM.PDF commencent à 290 $ (générateur) et 387 $ (visionneuse). IronPDF commence à $799 . IronPDF propose des licences mono-utilisateur et multi-utilisateurs, tandis que XFINIUM.PDF requiert des licences par développeur. La licence professionnelle d'IronPDF (799 $) prend en charge un nombre illimité d'utilisateurs.

IronPDF nécessite moins de lignes de code pour la manipulation de fichiers PDF que XFINIUM.PDF, ce qui réduit la charge de travail des programmeurs.

Iron Software propose sa suite complète en deux clics. Pour le prix de deux bibliothèques, vous bénéficiez actuellement des cinq bibliothèques avec un support continu.

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

Questions Fréquemment Posées

Quelles sont les principales fonctionnalités d'IronPDF pour la conversion de HTML en PDF ?

IronPDF utilise le moteur Chromium de .NET pour convertir HTML en PDF. Il prend en charge HTML5, CSS, JavaScript et l'intégration d'images, ce qui en fait une solution complète pour la création de PDF à partir de contenu web.

Comment XFINIUM.PDF se compare-t-il à d'autres bibliothèques PDF pour .NET ?

XFINIUM.PDF est une bibliothèque multiplateforme offrant deux éditions : Générateur et Visionneuse. Elle excelle dans la création, l'édition, le rendu de PDF, et inclut des fonctionnalités comme la sécurité, les signatures numériques et le support des codes-barres.

IronPDF peut-il être utilisé sur des plateformes cloud comme Azure et AWS ?

Oui, IronPDF est compatible avec diverses plateformes, y compris Azure et AWS, ce qui permet un déploiement flexible des solutions PDF dans des environnements cloud.

Quelles sont les options d'installation disponibles pour IronPDF dans les projets .NET ?

IronPDF peut être installé à l'aide du gestionnaire de packages NuGet de Visual Studio, de l'invite de commande pour développeur, ou en téléchargeant directement le package NuGet ou la bibliothèque DLL.

Quelles sont les capacités d'édition PDF d'IronPDF ?

IronPDF permet une édition PDF étendue, y compris le remplissage de champs de formulaire, la fusion de documents et l'extraction de texte et d'images. Il prend également en charge l'ajout d'entêtes, de pieds de page et d'annotations.

Comment les options de licence diffèrent-elles entre IronPDF et XFINIUM.PDF ?

XFINIUM.PDF offre des licences à partir de 290 $ par développeur avec distribution sans redevance. IronPDF propose des options de licence plus larges, y compris une licence professionnelle pour des utilisateurs illimités.

Quelles fonctionnalités de sécurité XFINIUM.PDF fournit-il ?

XFINIUM.PDF prend en charge des fonctionnalités de sécurité comme des mots de passe utilisateur et propriétaire, des droits d'accès aux documents, le chiffrement RC4 et AES, et l'effacement de contenu pour assurer la sécurité des documents.

Pourquoi les développeurs pourraient-ils choisir IronPDF pour leurs projets ?

Les développeurs pourraient choisir IronPDF pour son approche simplifiée de la manipulation PDF, nécessitant moins de lignes de code, et sa flexibilité avec des licences pour utilisateur unique ou multi-utilisateur.

Comment IronPDF gère-t-il le remplissage de formulaires dans les PDF ?

IronPDF fournit des outils pour remplir les champs de formulaire au sein des PDF, permettant la création dynamique de documents et l'interaction avec les utilisateurs.

Quelles capacités de signature numérique sont disponibles dans ces bibliothèques PDF ?

IronPDF et XFINIUM.PDF prennent en charge les signatures numériques, permettant une validation sécurisée de l'authenticité et de l'intégrité des documents.

Curtis Chau
Rédacteur technique

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

Lire la suite