Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

IronPDF vs XFINIUM.PDF : comparaison des bibliothèques HTML en PDF for .NET

IronPDF excelle dans la conversion de HTML en PDF avec un support complet des CSS et de JavaScript utilisant le moteur Chromium. En revanche, XFINIUM.PDF se spécialise dans la manipulation de PDF de bas niveau sans rendu HTML natif, ce qui fait d'IronPDF un choix plus adapté pour la génération de PDF basés sur le web moderne dans les applications .NET.

La technologie moderne offre des solutions plus intelligentes pour les développeurs, l'automatisation menant les processus de développement logiciel. Travailler avec des fichiers PDF C# a longtemps été un défi pour les développeurs. De nombreux facteurs doivent être pris en compte lors de la création de contenu pour les fichiers PDF, et plus encore lors de la conversion de contenu de différents formats en PDF. Ces défis sont désormais résolus grâce à des bibliothèques conçues pour aider à la lecture, l'écriture, la création et la conversion de PDF à partir de divers formats.

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

IronPDF et XFINIUM.PDF fournissent des méthodes pour créer, manipuler et imprimer des PDF dans .NET et .NET Core. Vous pouvez prendre une décision éclairée en examinant la comparaison suivante des deux bibliothèques et de leurs fonctionnalités respectives pour la conversion de PDF et la manipulation.

D'abord, explorons ce que les deux bibliothèques offrent, 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, s'adressant aux développeurs PDF débutants et avancés. Elle vous permet de créer des rapports, de remplir des formulaires PDF, de construire 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 PDF et la visualisation PDF.

XFINIUM.PDF est entièrement écrit en C# sous forme de code entièrement géré. Il est licencié par développeur avec distribution libre de droits, 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 créer et éditer des PDF, tandis que l'édition Viewer ajoute des capacités de rendu PDF. L'édition Viewer peut convertir des 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 intégré de codes-barres vectoriels
  • 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 une fonctionnalité de code-barres avancée, consultez la documentation 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, nombres, noms, booléens, nulls, tableaux, dictionnaires, flux

Rendu PDF (édition Visualiseur seulement)

Quelles sont les principales fonctionnalités d'IronPDF ?

La bibliothèque PDF .NET IronPDF simplifie le développement PDF pour les programmeurs C#. Avec cet outil, vous pouvez facilement construire une bibliothèque PDF core for .NET.

IronPDF convertit les pages HTML en fichiers PDF en utilisant le moteur Chromium de .NET. Vous n'avez pas besoin d'API compliquées pour positionner ou concevoir des PDF avec HTML vers PDF. Les documents web standards sont pris en charge, incluant HTML, ASPX, JS, CSS et images.

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

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 les documents PDF

Convertir divers formats de fichiers

Imprimer et sauvegarder

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 :

  1. Utilisation de Visual Studio
  2. Invite de commande 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 les 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 Package Manager 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 Package Manager NuGET dans Visual Studio

Utilisation de l'invite de commande du développeur

Installez le package NuGet IronPDF via l'Invite de commande développeur :

  • Ouvrez l'Invite de commande 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 :

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

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

Téléchargez le fichier IronPDF .DLL directement depuis le téléchargement 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 à être utilisé. Installons maintenant XFINIUM.PDF.

Comment installer XFINIUM.PDF ?

Dans .NET Core, installez Xfinium PDF comme un addin 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 dans .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éation de PDF pour générer des rapports à partir d'entrées utilisateur, enregistrer du texte utilisateur en tant que PDF, extraire des informations HTML et les convertir en PDF, et plus.

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

Utilisation de IronPDF

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

URL existante vers PDF

IronPDF simplifie la conversion de HTML en documents PDF à partir d'URL existantes. JavaScript, images, formulaires et CSS reçoivent un support complet.

La mise en œuvre gère automatiquement le rendu d'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 rendre une page PDF à partir d'une chaîne HTML. Vous pouvez utiliser uniquement HTML ou le combiner avec CSS, 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 en PDF, voir le tutoriel HTML vers PDF.

Utilisation de XFINIUM.PDF

Créer 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 : créer une police, créer un pinceau pour la couleur, et dessiner le 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 de près à la norme PDF. Cette approche offre des avantages clairs pour construire des abstractions complexes comme des 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 a une classe correspondante :

  • PdfTextBoxField – champs de texte
  • PdfCheckBoxField – cases à cocher
  • PdfRadioButtonField – ensembles de boutons radio
  • PdfComboboxField – boîtes combinées
  • PdfListboxField – listes déroulantes
  • PdfPushbuttonField – boutons poussoirs
  • PdfSignatureField – champs de signature

Pour créer un champ de formulaire, spécifiez le nom du champ et l'emplacement de 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 des formulaires PDF existants, chargez-les dans un objet PdfFixedDocument. La collection de champs du document se remplit automatiquement. Vous pouvez trouver les champs par index ou par nom et les remplir en définissant les 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 vous pouvez créer des PDF remplissables en using 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 sous forme de PDF. La lecture et l'écriture des valeurs de formulaire se fait en utilisant la fonction FindFormField. Votre application peut immédiatement utiliser cette fonctionnalité pour remplir des formulaires par programme.

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

Comment signer numériquement des fichiers PDF

Le travail à distance nécessite un traitement efficace des documents. Remplir et signer des formulaires, envoyer des fichiers et traiter des documents sont des activités commerciales quotidiennes. Signer des documents PDF, des portfolios et des formulaires 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 applique des signatures numériques dans des fichiers PDF (classe PdfSignatureField). Bien que le champ de signature apparaisse sur une page, la signature numérique signe l'ensemble 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 basé sur la mise en page binaire du fichier PDF.

PdfDigitalSignature fournit la base de toutes les signatures XFINIUM :

  • PdfCmsDigitalSignature – Signature standard CMS (hérite de PdfDigitalSignature)
  • PdfPadesDigitalSignature – Signature standard PADES (hérite de PdfCmsDigitalSignature)
  • PdfInteractiveCmsDigitalSignature – Signature CMS utilisant une carte à puce matérielle
  • PdfInteractivePadesDigitalSignature – PADES avec support de carte à puce matérielle
  • PdfDocumentTimeStamp – Timestamp au niveau du document (hérite de PdfDigitalSignature)

Utilisation de IronPDF

Les développeurs demandent souvent comment ajouter des signatures à des PDFs avec IronPDF et C# par programme. Cela peut signifier :

  • Ajouter des images de signature graphique à partir de fichiers
  • Signer cryptographiquement pour éviter les falsifications
  • Ajouter des icônes de signature manuscrite avec une signature cryptographique

La première approche implique le timbrage d'un PNG de signature sur des pages PDF existantes. Utilisez-le pour des signatures ou des 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 des PDFs en utilisant des certificats numériques X509Certificate2 .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 X509Certificate2 .pfx / .p12 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, explorez la documentation Ironsecuredoc pour 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 le développement rapide d'interface utilisateur et le design réactif. Les outils de génération de PDF doivent préserver fidèlement ces mises en page de frameworks pour assurer la qualité professionnelle des documents.

IronPDF : Support complet du framework Bootstrap

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

  • Bootstrap 5 : Rendu complet de Flexbox et de CSS Grid avec tous les composants réactifs
  • Bootstrap 4 : Systèmes de cartes complets, barres de navigation et classes utilitaires
  • Tailwind CSS : Toutes les classes utilitaires-First et variantes réactives
  • Foundation et autres frameworks : Prise en charge complète de CSS3 signifie que tous les frameworks modernes fonctionnent correctement
  • CSS avancé : Flexbox, CSS Grid, propriétés personnalisées, animations, et transformations

Validation réelle : la page d'accueil Bootstrap et les modèles se convertissent avec une fidélité exacte du navigateur.

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

Sortie : Un programme de conférence professionnelle avec la grille de cartes de Bootstrap, l'alignement Flexbox, les composants de badge, et la mise en page réactive — tous rendus correctement 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 PDF plutôt que sur la conversion HTML en PDF. La bibliothèque présente des limitations importantes pour les cadres Bootstrap et CSS modernes :

  • Aucun rendu HTML natif : XFINIUM.PDF n'inclut pas de moteur de conversion de HTML en PDF intégré
  • Support HTML basique uniquement : Limité aux structures HTML simples sans CSS avancé
  • Aucun support Bootstrap : Les frameworks Bootstrap modernes (4/5) avec Flexbox et CSS Grid ne sont pas pris en charge
  • Solutions de contournement requises : Les développeurs doivent utiliser des API PDF de bas niveau pour recréer manuellement les mises en page
  • Outils externes nécessaires : Peut nécessiter l'intégration avec des moteurs de rendu HTML externes

Impact sur le développement : Les applications utilisant Bootstrap ou des frameworks CSS modernes ne peuvent pas convertir directement leur UI 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 en PDF avec des frameworks modernes, les limitations de XFINIUM.PDF nécessitent des développements supplémentaires significatifs.

Pour un support complet des frameworks Bootstrap et CSS modernes, consultez le guide Bootstrap & Flexbox CSS.

Quelles sont les options de tarification et de licences ?

Tarification et Licence XFINIUM.PDF

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

  • Chaque développeur a besoin d'une licence.
  • Distribution libre de droits sur un nombre illimité de postes de travail/serveurs.
  • L'abonnement Assistance inclut une année de mises à jour/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 licencié pour une utilisation commerciale à tout moment. Les options incluent des licences pour un seul projet, un seul développeur, des agences, des organisations multinationales et la redistribution SaaS/OEM. Toutes les licences incluent une garantie de remboursement de 30 jours, une année de support/mises à jour, un accès valide pour dev/staging/production, et une licence perpétuelle (achat unique). Le package Lite commence à $799 sans frais récurrents.

Quelle bibliothèque PDF dois-je choisir ?

La bibliothèque IronPDF simplifie la création de PDF sans API propriétaires. "HTML-To-PDF" convertit les documents standards ouverts comme HTML, JS, CSS, JPG, PNG, GIF, et SVG en PDFs pixel perfect. Elle se base sur les compétences existantes des développeurs. Vous pouvez télécharger des documents, les envoyer par e-mail ou les enregistrer dans le cloud, créant des factures, devis, rapports, contrats et autres papiers. 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 pour les développeurs PDF novices et avancés. Que vous ayez besoin de créer des rapports, remplir des formulaires PDF, construire des portfolios, masquer des informations, ou convertir des PDF en TIFFs multipages, elle offre les outils nécessaires. Le modèle objet de base suit les spécifications PDF. Le code compile sur toutes les plateformes sans modification.

Les licences XFINIUM.PDF commencent à 290 $ (édition Generator) et 387 $ (édition Viewer). IronPDF commence à $799. IronPDF offre des licences pour utilisateur unique et multi-utilisateurs, tandis que XFINIUM.PDF exige des licences par développeur. La licence professionnelle IronPDF (799 $) prend en charge un nombre illimité d'utilisateurs.

IronPDF nécessite moins de lignes de code pour manipuler les PDF que XFINIUM.PDF, réduisant la charge de travail des programmeurs.

Iron Software offre sa suite complète en deux clics. Pour le prix de deux bibliothèques, vous recevez actuellement les cinq bibliothèques avec 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 à titre informatif uniquement et reflètent les informations publiquement disponibles au moment de l'écriture.

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 for .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

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me