Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

IronPDF vs ExpertPDF : Quelle bibliothèque PDF C# les développeurs .NET senior devraient-ils choisir ?

IronPDF excelle dans la conversion HTML vers PDF grâce à la précision du moteur Chrome V8 et à ses API intuitives, tandis qu'ExpertPDF offre des fonctionnalités PDF de base avec des exigences de configuration plus complexes pour les systèmes de production .NET.

Les développeurs C# rencontrent souvent des difficultés lorsqu'ils manipulent des fichiers PDF, que ce soit pour la lecture, l'écriture, la création ou la conversion entre différents formats. De nombreuses bibliothèques ont vu le jour pour répondre à ces besoins, offrant une intégration fluide pour les applications C#. Lors du développement de rapports PDF en C# , le choix de la bibliothèque appropriée a un impact significatif sur le temps de développement et la qualité du résultat. Pour une génération PDF complète en C# , il est essentiel de comprendre les capacités des bibliothèques.

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

Les deux bibliothèques offrent des méthodes pour générer, convertir et modifier des fichiers PDF dans des environnements .NET. Le principal élément à prendre en compte est de déterminer quelle bibliothèque correspond le mieux aux exigences spécifiques du projet. Cette analyse met en lumière les éléments essentiels pour éclairer la prise de décision. Qu'il s'agisse de la conversion HTML vers PDF , des fonctionnalités d'édition PDF ou des fonctions d'organisation des documents , le choix de la bibliothèque appropriée s'avère crucial.

Qu'est-ce que la bibliothèque IronPDF ?

IronPDF fournit une solution PDF .NET complète, particulièrement avantageuse pour les développeurs C#. La bibliothèque permet la mise en œuvre de toutes les fonctionnalités PDF nécessaires au sein des applications C#. Prenant en charge le déploiement sur Azure et AWS Lambda , la bibliothèque convient aux architectures natives du cloud. Les développeurs bénéficient d'une excellente prise en charge de Windows , d'un déploiement Linux et d'une compatibilité macOS . La présentation de l'installation fournit des instructions complètes pour la configuration.

IronPDF intègre un moteur .NET Chromium qui convertit le contenu HTML en PDF, simplifiant ainsi la conception de documents sans recourir à des API complexes. Ce convertisseur HTML vers PDF crée des documents utilisant HTML5, CSS, JavaScript et des images. De plus, les développeurs peuvent modifier les fichiers PDF , ajouter des en-têtes et des pieds de page , et extraire des images . La bibliothèque simplifie la lecture de texte grâce à des capacités d'extraction de texte fiables. Pour les environnements de production, le moteur de rendu de Chrome garantit un rendu précis.

Quelles sont les principales caractéristiques d'IronPDF?

Comment créer des fichiers PDF à partir de HTML ?

Comment puis-je modifier des fichiers PDF sans Adobe Acrobat Reader ?

Comment manipuler des documents PDF ?

Quels formats de fichiers puis-je convertir en PDF ?

Comment enregistrer et imprimer des fichiers PDF ?

Qu'est-ce qu'ExpertPDF ?

Visitez le site officiel d'ExpertPDF pour découvrir leur bibliothèque .NET offrant la conversion HTML vers PDF. La bibliothèque permet la génération de rapports PDF sans logiciel de reporting complexe. Pour les développeurs à la recherche d'une documentation complète et d'une référence API , il est conseillé d'utiliser IronPDF plutôt qu'ExpertPDF, qui offre une bien plus grande disponibilité de ressources.

ExpertPDF offre des fonctionnalités d'édition PDF simples d'utilisation. Le convertisseur HTML vers PDF s'intègre rapidement aux applications .NET. Compatible avec .NET Framework, .NET Core, .NET 5 et .NET 6, mais ne prend pas en charge le déploiement sous Linux ni macOS . Pour les déploiements conteneurisés, IronPDF offre une prise en charge de Docker, contrairement à ExpertPDF. IronPDF prend également en charge le déploiement de conteneurs distants et les options de moteur natif ou distant .

Cette bibliothèque crée des fichiers PDF à partir d'URL de pages web ou de code HTML brut dans les applications .NET. Pour les scénarios avancés tels que le rendu de sites WebGL ou d'applications utilisant intensivement JavaScript , IronPDF offre des capacités de rendu supérieures. Le guide de démarrage rapide aide les développeurs à démarrer rapidement.

Quelles sont les principales caractéristiques d'ExpertPDF ?

Parmi ses caractéristiques notables :

  • Convertir des pages web (URL) en PDF
  • Convertir des chaînes HTML en PDF
  • Plusieurs options de fichiers de sortie
  • Définir les marges et la taille des pages
  • Définir des en-têtes et pieds de page
  • Ajouter des sauts de page automatiques et personnalisés
  • Convertir des parties spécifiques de pages Web en PDF
  • Masquer les éléments pendant la conversion
  • Fusionner plusieurs pages web en un seul PDF
  • Convertir les pages Web authentifiées en PDF
  • Sélectionnez le type de média CSS pour le rendu
  • Prise en charge des signets
  • Prise en charge de la signature numérique
  • Récupérer les positions des éléments HTML dans un PDF
  • Prise en charge d'HTML5/CSS3
  • Prise en charge des polices web
  • Conversions de types de fichiers :
    • Convertisseur PDF en texte
    • Convertisseur de HTML en PDF
    • Convertisseur de HTML en image
    • Convertisseur de PDF en image
    • Convertisseur de RTF en PDF

Les sections suivantes traitent des points suivants :

  1. Créer un projet console
  2. Installation d'IronPDF
  3. Installation d'ExpertPDF
  4. Créer un PDF à partir d'une URL
  5. Créer un PDF à partir d'une chaîne d'entrée HTML
  6. Fusionner plusieurs fichiers PDF en un seul fichier PDF
  7. Convertir des images en PDF
  8. Licences et tarifs
  9. Conclusion

Comment créer un projet console ?

Suivez ces étapes pour créer une application console à l'aide de Visual Studio 2022 :

Saisissez le nom du projet et cliquez sur Suivant.

[La fenêtre de configuration du projet Visual Studio affiche les options de configuration d'une nouvelle application console C# multiplateforme nommée " DemoApp ", avec des choix de plateformes cibles pour Linux, macOS, Windows et les environnements console.](/static-assets/pdf/blog/expert-pdf-net-library-alternatives/expert-pdf-net-library-alternatives-3.webp)

Le projet console est créé et prêt pour les tests de la bibliothèque. Les deux bibliothèques nécessitent une installation avant utilisation. Consultez le guide de démarrage rapide pour plus de détails. La documentation de présentation fournit des informations complètes.

Comment installer IronPDF?

Plusieurs méthodes d'installation sont disponibles :

  1. Utilisation de Visual Studio
  2. Télécharger directement le Package NuGet
  3. Télécharger la bibliothèque IronPDF .DLL

Consultez la présentation de l'installation pour plus de détails. La bibliothèque prend en charge l'installateur Windows pour un déploiement à l'échelle du système. Les options avancées incluent l'installation via NuGet et l'utilisation de clés de licence .

Comment installer ce logiciel avec Visual Studio ?

Visual Studio fournit le gestionnaire de packages NuGet pour l'installation des packages :

Recherchez le package NuGet IronPDF et installez-le. Consultez le guide d'installation de NuGet pour plus de détails. Les guides spécifiques à chaque plateforme incluent l'intégration Android , le développement F# et l'utilisation de VB.NET . Pour résoudre les problèmes de déploiement, consultez le guide sur les échecs de déploiement des packages NuGet .

Comment télécharger directement le package NuGet ?

Téléchargez IronPDF depuis le site web NuGet :

  • Consultez le package NuGet IronPDF
  • Sélectionnez "Télécharger le package"
  • Double-cliquez sur le package téléchargé
  • Le package s'installe automatiquement
  • Recharger Visual Studio

Comment télécharger et installer la DLL IronPDF ?

Téléchargez le fichier .DLL d'IronPDF directement depuis le site web d'IronPDF . Cliquez sur Télécharger la DLL IronPDF .

Référence à IronPDF dans le projet :

  • Cliquez avec le bouton droit sur la solution dans l'Explorateur de solutions.
  • Sélectionnez "Ajouter une référence"
  • Rechercher la bibliothèque IronPDF.dll
  • Cliquez sur OK

L'installation d'IronPDF est terminée. Pour plus d'options, notamment le déploiement Docker et la configuration du moteur à distance , reportez-vous à la présentation de l'installation . Pour le dépannage, consultez le guide de dépannage rapide ou explorez les performances de rendu initiales et l'optimisation des processus GPU . Le guide du dossier d'exécution facilite la gestion des dépendances.

Comment installer ExpertPDF ?

Il existe deux méthodes d'installation :

  • Utilisation du gestionnaire de packages NuGet de Visual Studio
  • Téléchargement des assemblys (versions .NET plus anciennes)

Installez ExpertPDF à l'aide du gestionnaire de packages NuGet pour les frameworks .NET modernes. Envisagez d'utiliser IronPDF à la place d'ExpertPDF pour une flexibilité bien plus grande grâce à des méthodes d'installation avancées et une optimisation de la taille du package .

Comment installer un package à l'aide du gestionnaire de packages NuGet de Visual Studio ?

Accédez au gestionnaire de packages NuGet :

Recherchez le package NuGet ExpertPDF et installez-le. Pour une configuration améliorée, consultez le guide de déclaration d'utilisation d'IronPDF .

Remarque : ExpertPDF ne prend en charge que Windows, tandis qu'IronPDF prend en charge Windows , Linux et macOS . Pour les déploiements dans le cloud, IronPDF propose une intégration Azure et une prise en charge d'AWS Lambda . IronPDF fournit des conseils complets en matière d'optimisation des performances et de gestion de la mémoire . Pour des plateformes spécifiques, consultez la prise en charge de Red Hat Enterprise Linux et AWS Lambda sur Amazon Linux 2 .

Comment créer un PDF à partir d'une URL ?

Les deux bibliothèques convertissent le HTML en PDF. Consultez le guide PDF (URL) pour plus de détails. Les sites web complexes peuvent nécessiter des délais de rendu personnalisés ou une gestion de l'exécution JavaScript . Pour les sites authentifiés, consultez le guide de connexion aux sites web et aux systèmes TLS . IronPDF excelle dans la conversion HTML vers PDF au pixel près grâce au rendu Chrome .

Comment IronPDF convertit-il une URL en PDF ?

IronPDF convertit efficacement le HTML à partir d'URL en PDF. La bibliothèque offre une prise en charge de haut niveau pour CSS , JavaScript , les images et les formulaires . L'utilisation du moteur de rendu Chrome garantit une conversion HTML vers PDF parfaite au pixel près . Pour les problèmes d'affichage, consultez le guide de formatage HTML pixel-perfect . Les options de rendu avancées incluent les formats de papier personnalisés et la configuration de la fenêtre d'affichage . L' écouteur de messages JavaScript permet la gestion dynamique du contenu.

Cet exemple de code montre comment IronPDF permet aux développeurs de créer des PDF à partir d'URL de sites web :

// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_190___");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");
// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render the specified URL as a PDF
var pdf = renderer.RenderUrlAsPdf("___PROTECTED_URL_190___");
// Save the rendered PDF to a file
pdf.SaveAs("url.pdf");
$vbLabelText   $csharpLabel

Pour les URL authentifiées, consultez le guide de connexion aux sites web et aux systèmes TLS . Configurer les cookies et les en-têtes HTTP personnalisés pour les requêtes authentifiées. Les sites sécurisés peuvent nécessiter une authentification Kerberos . Pour le débogage, utilisez le guide de débogage de Chrome . D'autres exemples montrent la conversion d'URL en PDF .

Comment ExpertPDF convertit-il une URL en PDF ?

ExpertPDF convertit les URL à l'aide de la méthode savePdfFromUrlToFile , en préservant la mise en forme de la page :

// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("___PROTECTED_URL_191___", "output.pdf");
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save a webpage URL directly to a PDF file
pdfConverter.SavePdfFromUrlToFile("___PROTECTED_URL_191___", "output.pdf");
$vbLabelText   $csharpLabel

En coulisses, IronPDF utilise son moteur de rendu Chrome pour offrir une meilleure prise en charge HTML5 et CSS3 .

Comment créer un PDF à partir d'une chaîne de caractères HTML ?

Les deux bibliothèques créent des fichiers PDF à partir de chaînes HTML. Consultez le guide de conversion de chaîne HTML en PDF pour plus de détails. Utilisez CSS pour l'affichage à l'écran et l'impression , et intégrez des polices web et des polices d'icônes . IronPDF offre une excellente prise en charge de Bootstrap et de Flexbox CSS . L' exemple d'utilisation du HTML pour créer un PDF illustre une mise en œuvre pratique.

Comment IronPDF convertit-il une chaîne HTML en PDF ?

Cet exemple de code montre comment IronPDF permet aux développeurs de générer des documents PDF à partir de chaînes HTML :

// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");

// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");
// Import the IronPdf library
using IronPdf;

// Initialize a new renderer
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Render a PDF from HTML string and save it
var pdfDoc1 = renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
pdfDoc1.SaveAs("pixel-perfect.pdf");

// Render HTML with external assets and save it
var pdfDoc2 = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
pdfDoc2.SaveAs("html-with-assets.pdf");
$vbLabelText   $csharpLabel

IronPDF prend en charge les URL de base pour les chemins relatifs et les DataURI pour l'intégration d'images. Pour les fichiers HTML complexes, consultez le guide de conversion de fichiers HTML en PDF . Pour les paramètres d'affichage spécifiques, consultez le guide des paramètres d'affichage et de zoom . La bibliothèque prend en charge les langues internationales et l'UTF-8 de manière transparente. Les fonctionnalités avancées incluent les paramètres de rendu HTML et la conversion réactive HTML vers PDF .

Comment ExpertPDF convertit-il une chaîne HTML en PDF ?

ExpertPDF HTML vers PDF prend en charge la conversion de chaînes HTML :

// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");
// Import the ExpertPdf.HtmlToPdf namespace
using ExpertPdf.HtmlToPdf;

// Initialize a new PdfConverter
PdfConverter pdfConverter = new PdfConverter();
// Use PdfConverter to save an HTML string to a PDF file
pdfConverter.SavePdfFromHtmlStringToFile("<h1>PDF using Expert PDF</h1>", "html-to-pdf.pdf");
$vbLabelText   $csharpLabel

Le premier argument spécifie la chaîne HTML, le second spécifie le nom du fichier de sortie. Envisagez d'utiliser la prise en charge Unicode et UTF-8 d'IronPDF au lieu du rendu HTML de base pour une prise en charge internationale bien plus étendue.

Comment générer des fichiers PDF de documentation technique ?

La documentation technique bénéficie d'une mise en page structurée avec des exemples de code. Cette démonstration de Bootstrap 5 illustre la capacité d'IronPDF à générer de la documentation avec coloration syntaxique et alertes. Consultez le guide de compatibilité CSS Bootstrap et Flexbox pour plus de détails. IronPDF prend en charge la gestion des polices et le crénage des caractères pour une typographie professionnelle. Pour de meilleurs résultats, consultez le guide de dépannage des polices et la prise en charge des langues internationales .

using IronPdf;

var renderer = new ChromePdfRenderer();

string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_192___ rel='stylesheet'>
    <style>
        .code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
        .api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
        @media print { .card, .alert { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-dark text-white'>
                <h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
            </div>
            <div class='card-body'>
                <h4>RenderHtmlAsPdf() Method</h4>
                <p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>

                <div class='code-block mb-3'>
                    <code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
                </div>

                <div class='row mt-4'>
                    <div class='col-md-6'>
                        <h5 class='text-primary'>Parameters</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>htmlContent</code></td>
                                <td>String containing HTML to convert</td>
                            </tr>
                        </table>
                    </div>
                    <div class='col-md-6'>
                        <h5 class='text-success'>Returns</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>PdfDocument</code></td>
                                <td>Generated PDF document object</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-3 mb-4'>
            <div class='col-md-4'>
                <div class='alert alert-success mb-0'>
                    <h6 class='alert-heading'>✓ Supported Features</h6>
                    <ul class='mb-0 small'>
                        <li>HTML5 semantic tags</li>
                        <li>CSS3 with Flexbox/Grid</li>
                        <li>JavaScript execution</li>
                        <li>External stylesheets</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-info mb-0'>
                    <h6 class='alert-heading'>ⓘ Rendering Engine</h6>
                    <ul class='mb-0 small'>
                        <li>Chrome V8 Engine</li>
                        <li>98% browser fidelity</li>
                        <li>Sub-second rendering</li>
                        <li>Async/await support</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-warning mb-0'>
                    <h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
                    <ul class='mb-0 small'>
                        <li>Complex API structure</li>
                        <li>Limited CSS3 support</li>
                        <li>No native JavaScript</li>
                        <li>Requires configuration</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Code Example Comparison</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF (Simple)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
                        </div>
                        <div class='badge bg-success mt-2'>3 Lines</div>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-warning'>ExpertPDF (Complex)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
                        </div>
                        <div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
                    </div>
                </div>
            </div>
            <div class='card-footer text-muted'>
                <small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string technicalDocs = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_192___ rel='stylesheet'>
    <style>
        .code-block { background: #f8f9fa; border-left: 3px solid #0d6efd; padding: 15px; border-radius: 4px; }
        .api-method { font-family: 'Courier New', monospace; color: #0d6efd; }
        @media print { .card, .alert { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='card shadow-sm mb-4'>
            <div class='card-header bg-dark text-white'>
                <h2 class='mb-0'>API Reference - HTML to PDF Conversion</h2>
            </div>
            <div class='card-body'>
                <h4>RenderHtmlAsPdf() Method</h4>
                <p class='lead'>Converts HTML content to PDF with full CSS3 and JavaScript support.</p>

                <div class='code-block mb-3'>
                    <code class='api-method'>PdfDocument RenderHtmlAsPdf(string htmlContent)</code>
                </div>

                <div class='row mt-4'>
                    <div class='col-md-6'>
                        <h5 class='text-primary'>Parameters</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>htmlContent</code></td>
                                <td>String containing HTML to convert</td>
                            </tr>
                        </table>
                    </div>
                    <div class='col-md-6'>
                        <h5 class='text-success'>Returns</h5>
                        <table class='table table-sm table-bordered'>
                            <tr>
                                <td><code>PdfDocument</code></td>
                                <td>Generated PDF document object</td>
                            </tr>
                        </table>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-3 mb-4'>
            <div class='col-md-4'>
                <div class='alert alert-success mb-0'>
                    <h6 class='alert-heading'>✓ Supported Features</h6>
                    <ul class='mb-0 small'>
                        <li>HTML5 semantic tags</li>
                        <li>CSS3 with Flexbox/Grid</li>
                        <li>JavaScript execution</li>
                        <li>External stylesheets</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-info mb-0'>
                    <h6 class='alert-heading'>ⓘ Rendering Engine</h6>
                    <ul class='mb-0 small'>
                        <li>Chrome V8 Engine</li>
                        <li>98% browser fidelity</li>
                        <li>Sub-second rendering</li>
                        <li>Async/await support</li>
                    </ul>
                </div>
            </div>
            <div class='col-md-4'>
                <div class='alert alert-warning mb-0'>
                    <h6 class='alert-heading'>⚠ ExpertPDF Notes</h6>
                    <ul class='mb-0 small'>
                        <li>Complex API structure</li>
                        <li>Limited CSS3 support</li>
                        <li>No native JavaScript</li>
                        <li>Requires configuration</li>
                    </ul>
                </div>
            </div>
        </div>

        <div class='card shadow-sm'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Code Example Comparison</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF (Simple)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("output.pdf");</code></pre>
                        </div>
                        <div class='badge bg-success mt-2'>3 Lines</div>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-warning'>ExpertPDF (Complex)</h6>
                        <div class='code-block'>
                            <pre class='mb-0'><code>var converter = new HtmlToPdfConverter();
converter.PdfDocumentOptions.PdfPageSize = PdfPageSize.A4;
converter.NavigationTimeout = 60;
byte[] result = converter.GetPdfBytesFromHtmlString(html);
File.WriteAllBytes("output.pdf", result);</code></pre>
                        </div>
                        <div class='badge bg-warning text-dark mt-2'>5+ Lines</div>
                    </div>
                </div>
            </div>
            <div class='card-footer text-muted'>
                <small><strong>Comparison:</strong> IronPDF provides a more intuitive API with less configuration overhead for common use cases.</small>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(technicalDocs);
pdf.SaveAs("technical-documentation.pdf");
$vbLabelText   $csharpLabel

Résultat : Un document PDF de documentation technique professionnelle avec des cartes, des alertes, des tableaux et des blocs de code Bootstrap 5. IronPDF rend précisément toute la typographie, les utilités de l'espacement, et les mises en page de la grille, démontrant des capacités de génération de documentation supérieure.

Comment créer des rapports financiers avec des mises en page complexes ?

L'établissement des rapports financiers exige une mise en forme précise des tableaux et des calculs. Cet exemple illustre le rendu complexe de la mise en page financière d'IronPDF avec CSS Grid et JavaScript dynamique. Pour plus de détails, veuillez consulter le guide JavaScript dans les fichiers PDF , y compris la section sur l'exécution de JavaScript personnalisé . Les documents financiers peuvent nécessiter une compression PDF pour l'optimisation des fichiers et la gestion des métadonnées à des fins de conformité. Le guide de rendu des graphiques dans les fichiers PDF facilite la visualisation des données.

using IronPdf;

var renderer = new ChromePdfRenderer();
// Enable JavaScript for dynamic calculations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute

string financialReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <style>
        @page { size: A4; margin: 20mm; }
        body { font-family: Arial, sans-serif; line-height: 1.6; }
        .header { text-align: center; margin-bottom: 30px; }
        .financial-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; margin-bottom: 20px; }
        .grid-header { background: #2c3e50; color: white; padding: 10px; font-weight: bold; }
        .grid-row { padding: 10px; border-bottom: 1px solid #ddd; }
        .grid-row:hover { background: #f9f9f9; }
        .amount { text-align: right; font-family: 'Courier New', monospace; }
        .positive { color: #27ae60; }
        .negative { color: #e74c3c; }
        .total-row { background: #ecf0f1; font-weight: bold; margin-top: 10px; }
        .footer-note { font-size: 0.8em; color: #666; margin-top: 30px; text-align: center; }
        @media print { 
            .grid-row:hover { background: transparent; }
            .financial-grid { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='header'>
        <h1>Quarterly Financial Report</h1>
        <p>Q4 2023 - Consolidated Statement</p>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Revenue Stream</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>Software Licenses</div>
        <div class='grid-row amount'>$2,150,000</div>
        <div class='grid-row amount positive'>$2,875,000</div>

        <div class='grid-row'>Support Services</div>
        <div class='grid-row amount'>$850,000</div>
        <div class='grid-row amount positive'>$975,000</div>

        <div class='grid-row'>Consulting</div>
        <div class='grid-row amount'>$425,000</div>
        <div class='grid-row amount negative'>$380,000</div>

        <div class='grid-row total-row'>Total Revenue</div>
        <div class='grid-row total-row amount'>$3,425,000</div>
        <div class='grid-row total-row amount positive' id='total'>$4,230,000</div>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Operating Expenses</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>R&D</div>
        <div class='grid-row amount'>$1,200,000</div>
        <div class='grid-row amount'>$1,350,000</div>

        <div class='grid-row'>Sales & Marketing</div>
        <div class='grid-row amount'>$800,000</div>
        <div class='grid-row amount'>$950,000</div>

        <div class='grid-row'>General & Admin</div>
        <div class='grid-row amount'>$400,000</div>
        <div class='grid-row amount'>$425,000</div>

        <div class='grid-row total-row'>Total Expenses</div>
        <div class='grid-row total-row amount'>$2,400,000</div>
        <div class='grid-row total-row amount'>$2,725,000</div>
    </div>

    <script>
        // Calculate growth percentage
        const q3Total = 3425000;
        const q4Total = 4230000;
        const growth = ((q4Total - q3Total) / q3Total * 100).toFixed(1);

        // Add growth indicator
        const totalEl = document.getElementById('total');
        totalEl.innerHTML += ` <small>(+${growth}%)</small>`;
    </script>

    <div class='footer-note'>
        <p>This report was generated using IronPDF's advanced rendering engine.<br>
        All financial figures are in USD. Report generated on: <span id='date'></span></p>
    </div>

    <script>
        document.getElementById('date').textContent = new Date().toLocaleDateString();
    </script>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(financialReport);
pdf.SaveAs("financial-report.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();
// Enable JavaScript for dynamic calculations
renderer.RenderingOptions.EnableJavaScript = true;
renderer.RenderingOptions.RenderDelay = 500; // Allow JS to execute

string financialReport = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <style>
        @page { size: A4; margin: 20mm; }
        body { font-family: Arial, sans-serif; line-height: 1.6; }
        .header { text-align: center; margin-bottom: 30px; }
        .financial-grid { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 10px; margin-bottom: 20px; }
        .grid-header { background: #2c3e50; color: white; padding: 10px; font-weight: bold; }
        .grid-row { padding: 10px; border-bottom: 1px solid #ddd; }
        .grid-row:hover { background: #f9f9f9; }
        .amount { text-align: right; font-family: 'Courier New', monospace; }
        .positive { color: #27ae60; }
        .negative { color: #e74c3c; }
        .total-row { background: #ecf0f1; font-weight: bold; margin-top: 10px; }
        .footer-note { font-size: 0.8em; color: #666; margin-top: 30px; text-align: center; }
        @media print { 
            .grid-row:hover { background: transparent; }
            .financial-grid { page-break-inside: avoid; }
        }
    </style>
</head>
<body>
    <div class='header'>
        <h1>Quarterly Financial Report</h1>
        <p>Q4 2023 - Consolidated Statement</p>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Revenue Stream</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>Software Licenses</div>
        <div class='grid-row amount'>$2,150,000</div>
        <div class='grid-row amount positive'>$2,875,000</div>

        <div class='grid-row'>Support Services</div>
        <div class='grid-row amount'>$850,000</div>
        <div class='grid-row amount positive'>$975,000</div>

        <div class='grid-row'>Consulting</div>
        <div class='grid-row amount'>$425,000</div>
        <div class='grid-row amount negative'>$380,000</div>

        <div class='grid-row total-row'>Total Revenue</div>
        <div class='grid-row total-row amount'>$3,425,000</div>
        <div class='grid-row total-row amount positive' id='total'>$4,230,000</div>
    </div>

    <div class='financial-grid'>
        <div class='grid-header'>Operating Expenses</div>
        <div class='grid-header amount'>Q3 2023</div>
        <div class='grid-header amount'>Q4 2023</div>

        <div class='grid-row'>R&D</div>
        <div class='grid-row amount'>$1,200,000</div>
        <div class='grid-row amount'>$1,350,000</div>

        <div class='grid-row'>Sales & Marketing</div>
        <div class='grid-row amount'>$800,000</div>
        <div class='grid-row amount'>$950,000</div>

        <div class='grid-row'>General & Admin</div>
        <div class='grid-row amount'>$400,000</div>
        <div class='grid-row amount'>$425,000</div>

        <div class='grid-row total-row'>Total Expenses</div>
        <div class='grid-row total-row amount'>$2,400,000</div>
        <div class='grid-row total-row amount'>$2,725,000</div>
    </div>

    <script>
        // Calculate growth percentage
        const q3Total = 3425000;
        const q4Total = 4230000;
        const growth = ((q4Total - q3Total) / q3Total * 100).toFixed(1);

        // Add growth indicator
        const totalEl = document.getElementById('total');
        totalEl.innerHTML += ` <small>(+${growth}%)</small>`;
    </script>

    <div class='footer-note'>
        <p>This report was generated using IronPDF's advanced rendering engine.<br>
        All financial figures are in USD. Report generated on: <span id='date'></span></p>
    </div>

    <script>
        document.getElementById('date').textContent = new Date().toLocaleDateString();
    </script>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(financialReport);
pdf.SaveAs("financial-report.pdf");
$vbLabelText   $csharpLabel

Cet exemple de code montre comment IronPDF permet aux développeurs d'utiliser des mises en page CSS Grid , l'exécution de JavaScript et du CSS spécifique à l'impression . Ajoutez des en-têtes et des pieds de page personnalisés aux rapports, implémentez des arrière-plans et des premiers plans pour la marque, des filigranes pour la sécurité et des signatures numériques pour l'authentification. Consultez le guide de génération de rapports PDF pour plus de détails.

Comment fusionner plusieurs fichiers PDF en un seul PDF ?

Les deux bibliothèques fusionnent plusieurs fichiers PDF en un seul document, consolidant ainsi les données pour une transmission efficace. Consultez le guide de fusion ou de division des fichiers PDF pour plus de détails. Les documents de plusieurs pages peuvent nécessiter une gestion des pages ou le fractionnement des PDF multipages . Pour optimiser les performances des fichiers volumineux, envisagez la génération asynchrone de PDF ou le traitement parallèle . L' exemple de fusion de deux fichiers PDF ou plus fournit une mise en œuvre pratique. Pour l'organisation des fichiers PDF , IronPDF propose des outils complets.

Comment IronPDF fusionne-t-il les fichiers PDF ?

Cet exemple de code montre comment IronPDF permet aux développeurs de générer deux fichiers PDF à partir de chaînes HTML et de les fusionner. Cette approche simple offre des options de configuration supplémentaires. Pour la numérotation des pages et les sauts de page dans les documents fusionnés, veuillez consulter les guides respectifs. Copiez également les pages entre les fichiers PDF pour un contrôle précis. Pour les formulaires, consultez la documentation relative à la gestion et à la modification des formulaires. L' exemple de numérotation et de saut de page illustre une implémentation combinée.

// Import the IronPdf library
using IronPdf;

// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>";

var htmlB = @"<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>";

// Initialize a new renderer
var renderer = new ChromePdfRenderer();

// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);

// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);

// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");
// Import the IronPdf library
using IronPdf;

// Define HTML strings to convert to PDF
var htmlA = @"<p> [PDF_A] </p>
        <p> [PDF_A] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_A] 2nd Page</p>";

var htmlB = @"<p> [PDF_B] </p>
        <p> [PDF_B] 1st Page </p>
        <div style='page-break-after: always;'></div>
        <p> [PDF_B] 2nd Page</p>";

// Initialize a new renderer
var renderer = new ChromePdfRenderer();

// Render HTML strings as PDFs
var pdfDocA = renderer.RenderHtmlAsPdf(htmlA);
var pdfDocB = renderer.RenderHtmlAsPdf(htmlB);

// Merge the PDF documents
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);

// Save the merged PDF
mergedPdf.SaveAs("Merged.pdf");
$vbLabelText   $csharpLabel

La méthode Merge accepte plusieurs documents sous forme d'objets Enumerable. Voir l'exemple de code IronPDF pour la fusion de fichiers PDF . Pour ajouter des pages de couverture ou créer une table des matières , consultez les guides spécialisés. Ajoutez également un tampon pour tout nouveau contenu ou toute pièce jointe . L' exemple de division d'un PDF et d'extraction de pages illustre les opérations inverses.

Notez que les fichiers PDF fusionnés contenant des formulaires modifiables comportent des numéros d'index ajoutés aux noms des champs de formulaire. Pour plus de détails, veuillez consulter le guide de traitement des données de formulaire .

Comment ExpertPDF fusionne-t-il les fichiers PDF ?

ExpertPDF utilise un composant de fusion de PDF nécessitant une installation séparée. La méthode AppendPDFFile ajoute des fichiers aux objets PDFMerge :

// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;

// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");
// Import the ExpertPdf.MergePdf namespace
using ExpertPdf.MergePdf;

// Initialize a new PDFMerge object
PDFMerge pdfMerge = new PDFMerge();
// Append PDF files to the merge object
pdfMerge.AppendPDFFile("output.pdf");
pdfMerge.AppendPDFFile("html-to-pdf.pdf");
// Save the merged PDF to a file
pdfMerge.SaveMergedPDFToFile("merged.pdf");
$vbLabelText   $csharpLabel

En coulisses, IronPDF utilise des algorithmes de fusion plus efficaces. Pour des performances nettement supérieures, envisagez d'utiliser la génération PDF asynchrone et la génération multithread d'IronPDF à la place des opérations synchrones.

Comment puis-je mettre en œuvre une fusion PDF avancée avec une organisation des documents ?

Les applications d'entreprise nécessitent des fonctionnalités avancées telles que les signets, l'organisation des pages et la préservation des métadonnées lors de la fusion de fichiers PDF. Cet exemple illustre la gestion des signets , la gestion des métadonnées et l'organisation des documents. Pour assurer la conformité, implémentez l'historique des révisions , la conversion PDF/A et l'accessibilité PDF/UA . L' exemple des plans et des signets fournit des détails d'implémentation supplémentaires. Pour plus de détails, veuillez consulter le guide de configuration et de modification des métadonnées ainsi que la section dépannage relative à la visibilité des métadonnées .

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

public class AdvancedPdfMerger
{
    public static void MergeDocumentsWithBookmarks()
    {
        var renderer = new ChromePdfRenderer();
        var documentsToMerge = new List<PdfDocument>();

        // Create chapter PDFs with proper structure
        string[] chapters = { "Introduction", "Technical Overview", "Implementation", "Conclusion" };

        foreach (var chapter in chapters)
        {
            string html = $@"
                <html>
                <head>
                    <style>
                        body {{ font-family: Georgia, serif; margin: 40px; }}
                        h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
                        .chapter-number {{ color: #7f8c8d; font-size: 0.8em; }}
                    </style>
                </head>
                <body>
                    <h1><span class='chapter-number'>Chapter {Array.IndexOf(chapters, chapter) + 1}</span><br>{chapter}</h1>
                    <p>This is the content for the {chapter} chapter. In a real document, this would contain 
                    extensive content, diagrams, and detailed explanations.</p>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor 
                    incididunt ut labore et dolore magna aliqua.</p>
                </body>
                </html>";

            var pdf = renderer.RenderHtmlAsPdf(html);

            // Add metadata to each chapter
            pdf.MetaData.Title = $"Chapter: {chapter}";
            pdf.MetaData.Author = "Technical Documentation Team";
            pdf.MetaData.Subject = "Enterprise PDF Generation";

            documentsToMerge.Add(pdf);
        }

        // Create a table of contents
        string tocHtml = @"
            <html>
            <head>
                <style>
                    body { font-family: Georgia, serif; margin: 40px; }
                    h1 { text-align: center; color: #2c3e50; margin-bottom: 40px; }
                    .toc-entry { margin: 15px 0; font-size: 1.1em; }
                    .toc-entry a { text-decoration: none; color: #3498db; }
                    .page-number { float: right; color: #7f8c8d; }
                </style>
            </head>
            <body>
                <h1>Table of Contents</h1>";

        int pageNumber = 2; // Starting after TOC page
        foreach (var chapter in chapters)
        {
            tocHtml += $@"
                <div class='toc-entry'>
                    <a href='#'>Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}</a>
                    <span class='page-number'>{pageNumber}</span>
                </div>";
            pageNumber += 2; // Assuming each chapter is 2 pages
        }

        tocHtml += @"
            </body>
            </html>";

        var tocPdf = renderer.RenderHtmlAsPdf(tocHtml);

        // Merge all documents with TOC first
        var allDocuments = new List<PdfDocument> { tocPdf };
        allDocuments.AddRange(documentsToMerge);

        var finalPdf = PdfDocument.Merge(allDocuments);

        // Add bookmarks for navigation
        finalPdf.BookMarks.AddBookMarkAtStart("Table of Contents", 0);
        int currentPage = 1; // After TOC
        foreach (var chapter in chapters)
        {
            finalPdf.BookMarks.AddBookMarkAtStart($"Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}", currentPage);
            currentPage += 2;
        }

        // Set document properties
        finalPdf.MetaData.Title = "Complete Technical Documentation";
        finalPdf.MetaData.Keywords = "IronPDF, Documentation, Enterprise, .NET";
        finalPdf.MetaData.CreationDate = System.DateTime.Now;

        // Add page numbers to footer
        finalPdf.AddTextFooters("Page {page} of {total-pages}", 
            new ChromePdfRenderer.ChromePdfRenderOptions() 
            { 
                MarginBottom = 20,
                MarginLeft = 50,
                MarginRight = 50
            });

        finalPdf.SaveAs("advanced-merged-document.pdf");
    }
}
using IronPdf;
using System.Collections.Generic;
using System.Linq;

public class AdvancedPdfMerger
{
    public static void MergeDocumentsWithBookmarks()
    {
        var renderer = new ChromePdfRenderer();
        var documentsToMerge = new List<PdfDocument>();

        // Create chapter PDFs with proper structure
        string[] chapters = { "Introduction", "Technical Overview", "Implementation", "Conclusion" };

        foreach (var chapter in chapters)
        {
            string html = $@"
                <html>
                <head>
                    <style>
                        body {{ font-family: Georgia, serif; margin: 40px; }}
                        h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; padding-bottom: 10px; }}
                        .chapter-number {{ color: #7f8c8d; font-size: 0.8em; }}
                    </style>
                </head>
                <body>
                    <h1><span class='chapter-number'>Chapter {Array.IndexOf(chapters, chapter) + 1}</span><br>{chapter}</h1>
                    <p>This is the content for the {chapter} chapter. In a real document, this would contain 
                    extensive content, diagrams, and detailed explanations.</p>
                    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor 
                    incididunt ut labore et dolore magna aliqua.</p>
                </body>
                </html>";

            var pdf = renderer.RenderHtmlAsPdf(html);

            // Add metadata to each chapter
            pdf.MetaData.Title = $"Chapter: {chapter}";
            pdf.MetaData.Author = "Technical Documentation Team";
            pdf.MetaData.Subject = "Enterprise PDF Generation";

            documentsToMerge.Add(pdf);
        }

        // Create a table of contents
        string tocHtml = @"
            <html>
            <head>
                <style>
                    body { font-family: Georgia, serif; margin: 40px; }
                    h1 { text-align: center; color: #2c3e50; margin-bottom: 40px; }
                    .toc-entry { margin: 15px 0; font-size: 1.1em; }
                    .toc-entry a { text-decoration: none; color: #3498db; }
                    .page-number { float: right; color: #7f8c8d; }
                </style>
            </head>
            <body>
                <h1>Table of Contents</h1>";

        int pageNumber = 2; // Starting after TOC page
        foreach (var chapter in chapters)
        {
            tocHtml += $@"
                <div class='toc-entry'>
                    <a href='#'>Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}</a>
                    <span class='page-number'>{pageNumber}</span>
                </div>";
            pageNumber += 2; // Assuming each chapter is 2 pages
        }

        tocHtml += @"
            </body>
            </html>";

        var tocPdf = renderer.RenderHtmlAsPdf(tocHtml);

        // Merge all documents with TOC first
        var allDocuments = new List<PdfDocument> { tocPdf };
        allDocuments.AddRange(documentsToMerge);

        var finalPdf = PdfDocument.Merge(allDocuments);

        // Add bookmarks for navigation
        finalPdf.BookMarks.AddBookMarkAtStart("Table of Contents", 0);
        int currentPage = 1; // After TOC
        foreach (var chapter in chapters)
        {
            finalPdf.BookMarks.AddBookMarkAtStart($"Chapter {Array.IndexOf(chapters, chapter) + 1}: {chapter}", currentPage);
            currentPage += 2;
        }

        // Set document properties
        finalPdf.MetaData.Title = "Complete Technical Documentation";
        finalPdf.MetaData.Keywords = "IronPDF, Documentation, Enterprise, .NET";
        finalPdf.MetaData.CreationDate = System.DateTime.Now;

        // Add page numbers to footer
        finalPdf.AddTextFooters("Page {page} of {total-pages}", 
            new ChromePdfRenderer.ChromePdfRenderOptions() 
            { 
                MarginBottom = 20,
                MarginLeft = 50,
                MarginRight = 50
            });

        finalPdf.SaveAs("advanced-merged-document.pdf");
    }
}
$vbLabelText   $csharpLabel

Cette implémentation avancée illustre la gestion des signets , la gestion des métadonnées et la numérotation des pages . Consultez le tutoriel sur l'organisation des fichiers PDF pour plus de détails. Explorez les techniques de compression PDF après fusion. Pour des raisons de sécurité, mettez en place une protection par mot de passe et un chiffrement . L' exemple d'ajout d'en-têtes et de pieds de page de texte classiques propose des options de mise en forme. Pour accéder à des fonctionnalités supplémentaires, explorez les options d'ajout de numéros de page et de table des matières . L' exemple relatif aux mots de passe, à la sécurité et aux métadonnées illustre une implémentation intégrée.

Comment puis-je convertir des images en PDF ?

IronPDF convertit diverses images au format PDF, une fonctionnalité indisponible dans ExpertPDF. Cependant, ExpertPDF extrait les images des PDF et convertit les PDF en images, des fonctionnalités qu'IronPDF propose également. Consultez le guide de conversion image-PDF pour plus de détails. IronPDF permet de rasteriser les PDF en images et d'extraire le texte et les images . Pour les scénarios avancés, dessinez du texte et des images bitmap ou dessinez des lignes et des rectangles . L' exemple de conversion d'images en PDF illustre une mise en œuvre pratique. Pour plus d'informations sur la qualité d'image, consultez l'exemple de conversion de PDF en image en C# sans perte de qualité .

Comment IronPDF convertit-il les images en PDF ?

La création de PDF à partir d'images utilise la classe ImageToPdfConverter . Les images se chargent à partir de n'importe quel dossier et prennent en charge différents formats, y compris les fichiers TIFF multipages . Vous pouvez également ajouter des images à des PDF existants ou travailler avec des graphiques SVG . Pour une efficacité de mémoire optimale, utilisez la rastérisation des images à l'aide de MemoryStream . L' exemple de format PDF personnalisé facilite le contrôle de la mise en page.

// Import the IronPdf namespace
using IronPdf;

// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
                  .Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));

// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");
// Import the IronPdf namespace
using IronPdf;

// Specify the folder containing the image files
var imageFiles = System.IO.Directory.EnumerateFiles(@"C:\project\assets")
                  .Where(file => file.EndsWith(".jpg") || file.EndsWith(".jpeg"));

// Convert the images to a PDF document
var pdfDocument = ImageToPdfConverter.ImageToPdf(imageFiles);
// Save the PDF document
pdfDocument.SaveAs(@"C:\project\composite.pdf");
$vbLabelText   $csharpLabel

Outre la conversion d'images en PDF, IronPDF convertit les documents numérisés et les documents commerciaux en images grâce à la fonction rasterize to images . La bibliothèque extrait également des images à partir de différents types de fichiers. Consultez le guide de rastérisation d'images à l'aide de MemoryStream pour plus d'informations sur les opérations en mémoire. Pour les images volumineuses, pensez à optimiser la taille du fichier ImageToPDF . L' exemple d'orientation portrait et paysage facilite la mise en page. Pour une gestion avancée des images, consultez l'exemple d'intégration d'images et de bitmaps .

Comment puis-je créer des conversions avancées d'images en PDF avec le contrôle de la mise en page ?

Pour un placement d'images maîtrisé et des mises en page professionnelles, cet exemple d'album photo illustre l'intégration d'images et la création de mises en page. Pour le stockage cloud, consultez le guide des images Azure Blob Storage . L' exemple en niveaux de gris illustre les options de traitement d'image :

using IronPdf;
using System.IO;

public class PhotoAlbumCreator
{
    public static void CreatePhotoAlbum(string imagesFolder, string outputPath)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    .album-title { text-align: center; font-size: 2em; margin-bottom: 30px; color: #2c3e50; }
                    .photo-container { margin-bottom: 30px; text-align: center; page-break-inside: avoid; }
                    .photo { max-width: 100%; max-height: 500px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
                    .caption { margin-top: 10px; font-style: italic; color: #666; }
                    .page-break { page-break-after: always; }
                </style>
            </head>
            <body>
                <h1 class='album-title'>My Photo Album</h1>";

        var imageFiles = Directory.GetFiles(imagesFolder, "*.*")
            .Where(file => new[] { ".jpg", ".jpeg", ".png", ".gif" }
            .Contains(Path.GetExtension(file).ToLower()))
            .ToList();

        for (int i = 0; i < imageFiles.Count; i++)
        {
            string base64Image = Convert.ToBase64String(File.ReadAllBytes(imageFiles[i]));
            string fileName = Path.GetFileNameWithoutExtension(imageFiles[i]);

            htmlContent += $@"
                <div class='photo-container'>
                    <img class='photo' src='data:image/jpeg;base64,{base64Image}' alt='{fileName}'>
                    <div class='caption'>Photo {i + 1}: {fileName}</div>
                </div>";

            // Add page break every 2 photos
            if ((i + 1) % 2 == 0 && i < imageFiles.Count - 1)
            {
                htmlContent += "<div class='page-break'></div>";
            }
        }

        htmlContent += @"
                <div style='text-align: center; margin-top: 40px; color: #999;'>
                    <small>Created with IronPDF - Total Photos: " + imageFiles.Count + @"</small>
                </div>
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs(outputPath);
    }
}

// Usage
PhotoAlbumCreator.CreatePhotoAlbum(@"C:\MyPhotos", @"C:\MyPhotoAlbum.pdf");
using IronPdf;
using System.IO;

public class PhotoAlbumCreator
{
    public static void CreatePhotoAlbum(string imagesFolder, string outputPath)
    {
        var renderer = new ChromePdfRenderer();
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;
        renderer.RenderingOptions.MarginTop = 20;
        renderer.RenderingOptions.MarginBottom = 20;
        renderer.RenderingOptions.MarginLeft = 20;
        renderer.RenderingOptions.MarginRight = 20;

        string htmlContent = @"
            <!DOCTYPE html>
            <html>
            <head>
                <style>
                    body { font-family: Arial, sans-serif; }
                    .album-title { text-align: center; font-size: 2em; margin-bottom: 30px; color: #2c3e50; }
                    .photo-container { margin-bottom: 30px; text-align: center; page-break-inside: avoid; }
                    .photo { max-width: 100%; max-height: 500px; box-shadow: 0 4px 6px rgba(0,0,0,0.1); }
                    .caption { margin-top: 10px; font-style: italic; color: #666; }
                    .page-break { page-break-after: always; }
                </style>
            </head>
            <body>
                <h1 class='album-title'>My Photo Album</h1>";

        var imageFiles = Directory.GetFiles(imagesFolder, "*.*")
            .Where(file => new[] { ".jpg", ".jpeg", ".png", ".gif" }
            .Contains(Path.GetExtension(file).ToLower()))
            .ToList();

        for (int i = 0; i < imageFiles.Count; i++)
        {
            string base64Image = Convert.ToBase64String(File.ReadAllBytes(imageFiles[i]));
            string fileName = Path.GetFileNameWithoutExtension(imageFiles[i]);

            htmlContent += $@"
                <div class='photo-container'>
                    <img class='photo' src='data:image/jpeg;base64,{base64Image}' alt='{fileName}'>
                    <div class='caption'>Photo {i + 1}: {fileName}</div>
                </div>";

            // Add page break every 2 photos
            if ((i + 1) % 2 == 0 && i < imageFiles.Count - 1)
            {
                htmlContent += "<div class='page-break'></div>";
            }
        }

        htmlContent += @"
                <div style='text-align: center; margin-top: 40px; color: #999;'>
                    <small>Created with IronPDF - Total Photos: " + imageFiles.Count + @"</small>
                </div>
            </body>
            </html>";

        var pdf = renderer.RenderHtmlAsPdf(htmlContent);
        pdf.SaveAs(outputPath);
    }
}

// Usage
PhotoAlbumCreator.CreatePhotoAlbum(@"C:\MyPhotos", @"C:\MyPhotoAlbum.pdf");
$vbLabelText   $csharpLabel

Cet exemple de code montre comment IronPDF permet aux développeurs d'intégrer des images avec des DataURI , de gérer les sauts de page et de créer des mises en page professionnelles. Pour les images cloud, consultez le guide des images Azure Blob Storage . Pour les fichiers volumineux, envisagez l'optimisation de la taille des fichiers ImageToPDF . Vous pouvez également redimensionner et translater les objets PDF pour un positionnement précis. L' exemple d'exportation de fichiers PDF vers la mémoire permet d'optimiser les flux de travail en termes de mémoire. Consultez le guide d' ajout efficace de contenu HTML pour le traitement par lots.

Quelles sont les options de licence et de tarification ?

IronPDF est une bibliothèque PDF commerciale en C# disponible sur le site web d'IronPDF. Gratuite pour le développement privé, elle est soumise à une licence pour un usage commercial. Différentes licences sont disponibles pour les projets individuels, les développeurs, les agences et les entreprises. Prend en charge la redistribution SaaS et OEM. Consultez le guide des clés de licence pour plus de détails sur la mise en œuvre. Lors du déploiement, appliquez correctement la clé de licence . Pour les applications web, définissez les clés de licence dans le fichier Web.config . Pour tout problème de connexion au serveur de licences , veuillez consulter le guide de dépannage. Le guide d'utilisation des clés de licence fournit des informations complètes sur la mise en œuvre.

Le menu Outils de l'IDE Visual Studio affiche les options du Gestionnaire de packages NuGet, notamment la console du Gestionnaire de packages et la gestion des packages NuGet pour la solution, offrant ainsi une gestion centralisée des dépendances pour les projets de développement .NET.

Toutes les licences incluent une garantie de remboursement de 30 jours, un an d'assistance et les mises à jour du produit. Les licences perpétuelles nécessitent un achat unique sans frais supplémentaires. Le package Lite pour un seul développeur/projet commence à partir de $799 . Pour obtenir une assistance au-delà de la première année, consultez les extensions de licence . Pour bénéficier de fonctionnalités supplémentaires ou pour un déploiement plus étendu, consultez les mises à niveau de licence . Pour le déploiement d'IronPDF et d'IIS ou l'ajout d'IronPDF aux programmes d'installation de logiciels , consultez les guides spécialisés. Le guide d'incompatibilité des versions de ClickOnce aide à résoudre les problèmes de déploiement.

ExpertPDF propose des licences par développeur ou par entreprise. Essayez ExpertPDF gratuitement . Consultez les caractéristiques de la licence ci-dessous. Pour un rapport qualité-prix bien supérieur et une assistance complète, envisagez d'utiliser les options de licence transparentes d'IronPDF plutôt que celles d'ExpertPDF.

L'interface du gestionnaire de packages NuGet affiche six bibliothèques ExpertPDF avec des statistiques de téléchargement, montrant un convertisseur HTML vers PDF (145 000 téléchargements) et divers outils spécialisés de manipulation de PDF, le tout en version 11.0.2.0.

La licence développeur complète ExpertComponents Toolkit est disponible à partir de 850 $, et celle d'ExpertPDF Toolkit à partir de 750 $. Les composants peuvent être achetés séparément. Consultez la grille tarifaire complète d'ExpertPDF . Pour répondre aux besoins des entreprises, la licence d'IronPDF offre un meilleur rapport qualité-prix avec des ensembles de fonctionnalités complets.

Quelle bibliothèque PDF choisir ?

IronPDF convertit le HTML en PDF localement, sans connexion Internet, simulant ainsi les navigateurs Web conformes aux normes. Le rendu HTML produit une sortie précise au format vectoriel, adaptée à l'impression commerciale. Licence pour usage commercial avec tarification transparente. Pour les déploiements en entreprise, IronPDF offre la prise en charge de Docker et des capacités de moteur à distance . Consultez les guides sur l'exécution d'IronPDF en tant que conteneur distant et sur les options de moteur natif ou distant . La bibliothèque fournit IronPDF.Slim pour une taille de déploiement réduite et prend en charge l'optimisation de la taille des packages . Le guide d'exceptions de déploiement d'IronPdf.Slim v2025.5.6 aide à résoudre les problèmes spécifiques à cette version.

La bibliothèque de conversion HTML vers PDF d'ExpertPDF convertit les pages Web et le HTML en PDF, génère des rapports à partir d'ASP.NET et permet de signer des contrats électroniquement. Utilisation gratuite avec des fonctionnalités supplémentaires sous licence. Contrairement à IronPDF qui prend en charge l'ensemble des plateformes, y compris le déploiement sur Android , ExpertPDF se limite aux plateformes Windows. En coulisses, IronPDF utilise des fonctionnalités de sécurité avancées et des mises à jour régulières de ses produits . L'aperçu des étapes clés met en évidence l'amélioration continue, notamment l'étape clé du rendu Chrome , l'étape clé de la compatibilité et l'étape clé de la stabilité et des performances .

Bien que les deux bibliothèques prennent en charge les PDF et convertissent les formats populaires, IronPDF offre des avantages par rapport à ExpertPDF. IronPDF convertit à partir d'une large gamme de formats, notamment XML , images, AngularJS , Markdown et RTF , avec des fonctionnalités fiables de génération, de mise en forme et d'édition de PDF. Cela permet aux développeurs d'atteindre une efficacité optimale pour un développement pragmatique. Cette bibliothèque excelle en matière d'amélioration des performances grâce à la prise en charge asynchrone pour les scénarios à haut débit. Pour le traitement simultané, IronPDF prend en charge la génération parallèle de PDF et la génération multithread . Consultez le guide de dépannage initial concernant la lenteur du rendu pour plus de détails sur l'optimisation.

ExpertPDF nécessite l'installation de composants séparés, tandis qu'IronPDF intègre toutes les fonctionnalités. Ceci est particulièrement utile lorsque les projets nécessitent des fonctionnalités PDF complètes. Les forfaits IronPDF offrent des licences à vie sans frais supplémentaires, tandis qu'ExpertPDF nécessite des renouvellements. De plus, IronPDF fournit une documentation complète, une référence API et des exemples de code pour une prise en main rapide. La section des démonstrations présente des exemples concrets. Pour le dépannage, consultez le guide de dépannage rapide ou explorez les performances de rendu initiales et l'optimisation des processus GPU . Le guide pour obtenir la meilleure assistance garantit une résolution efficace des problèmes.

Pour les déploiements en production, IronPDF offre des capacités de débogage supérieures, une journalisation personnalisée et des guides de dépannage complets. La bibliothèque prend en charge des fonctionnalités avancées : conformité PDF/A , accessibilité PDF/UA , signatures numériques avec HSM et assainissement pour une manipulation sécurisée. Pour la sécurité des entreprises, IronPDF propose le chiffrement et le déchiffrement , la protection par mot de passe et des fonctionnalités de sécurité complètes. Les fonctionnalités avancées incluent la rédaction de texte , l'aplatissement des PDF et la gestion des versions PDF . Le guide de conversion de PDF en base64 facilite la transmission des données.

En matière de support et de développement, IronPDF propose un support technique avec des guides détaillés pour la formulation des demandes d'assistance . Les mises à jour et les étapes clés des produits de la bibliothèque témoignent d'une amélioration continue. Pour les développeurs .NET MAUI, IronPDF offre des fonctionnalités de visualisation de PDF et de conversion XAML vers PDF . Les développeurs Blazor utilisent l'intégration de Blazor Server et la conversion de Razor en PDF . La bibliothèque prend en charge la conversion CSHTML vers PDF pour les applications MVC et le rendu CSHTML sans interface graphique . Consultez le guide Blazor Server / WebAssembly pour connaître les limitations.

Pour les usages spécialisés, IronPDF excelle grâce à l'intégration d'OpenAI pour le traitement intelligent , le rendu de graphiques dans les PDF , la conversion de CSHTML en PDF dans les applications MVC et la prise en charge des langues internationales et de l'UTF-8 . La bibliothèque gère des scénarios complexes : aplatissement des PDF , linéarisation pour un affichage Web rapide et création de formulaires PDF . Explorez les possibilités de transformation des pages PDF , de suppression des objets PDF et de définition de chemins temporaires personnalisés . La présentation complète des fonctionnalités d'IronPDF met en évidence ses capacités de création , de conversion , d'édition , d'organisation et de sécurisation des fichiers PDF . Les fonctionnalités supplémentaires incluent la lecture de fichiers PDF en C# , la recherche et le remplacement de texte , et la suppression de pages PDF spécifiques .

Pour les considérations relatives au déploiement, consultez la section Débogage des fonctions Azure sur une machine locale , Gestion des fichiers journaux Azure , Gestion des fichiers journaux AWS et Solutions pour les erreurs 502 Bad Gateway . IronPDF assure une gestion complète des erreurs, y compris des solutions en cas d'accès refusé , le déploiement des dépendances Chrome , le déploiement des dépendances PDFium et des solutions en cas d'erreurs d'allocation incorrectes . La prise en charge spécifique à chaque plateforme comprend des guides spécifiques à Linux , des exceptions natives à macOS et des limitations pour Windows Nano Server . Les fonctionnalités de sécurité incluent l'état des vulnérabilités de Log4j et la protection contre les erreurs de segmentation sur AWS Lambda .

Veuillez noterExpertPDF est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié à, approuvé par, ou sponsorisé par ExpertPDF. 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

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

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

Quelles sont les principales différences entre IronPDF et ExpertPDF ?

IronPDF offre un support de format plus large et une fonctionnalité intégrée, y compris la création de PDF à partir de HTML, l'édition et la conversion de formats. ExpertPDF fournit une conversion directe de HTML en PDF avec des options pour la configuration des fichiers de sortie et les signatures numériques.

Puis-je extraire du texte et des images d'un PDF à l'aide de ces bibliothèques ?

Oui, IronPDF vous permet d'extraire du texte et des images de documents PDF, ce qui facilite la manipulation et l'analyse du contenu PDF dans les applications .NET.

Quelles sont les options d'installation disponibles pour ces bibliothèques PDF ?

IronPDF et ExpertPDF peuvent être installés à l'aide du gestionnaire de packages NuGet de Visual Studio. De plus, la bibliothèque .DLL de IronPDF peut être téléchargée directement depuis le site Web d'IronPDF.

Est-il possible de fusionner plusieurs fichiers PDF en un seul document ?

Oui, IronPDF propose une méthode Fusion pour combiner plusieurs PDF en un. ExpertPDF offre également un composant PDFMerge pour fusionner des PDF.

IronPDF nécessite-t-il une connexion Internet pour la conversion de HTML en PDF ?

Non, IronPDF ne nécessite pas de connexion Internet pour la conversion de HTML en PDF, ce qui en fait une option fiable pour les applications hors ligne.

Quelles sont les options de licence disponibles pour IronPDF ?

IronPDF offre diverses options de licence, y compris des licences pour un seul projet, développeur, agence et entreprise. Toutes les licences sont perpétuelles et incluent une garantie de remboursement de 30 jours et un an de support et de mises à jour.

ExpertPDF peut-il gérer les signatures numériques pour les documents PDF ?

Oui, ExpertPDF prend en charge la signature numérique des documents PDF, permettant des fichiers PDF sécurisés et authentifiés.

Quels défis les développeurs C# rencontrent-ils lorsqu'ils travaillent avec des PDF et comment ces bibliothèques les aident-elles ?

Les développeurs C# font souvent face à des défis lors de la lecture, de l'écriture, de la création et de la conversion de PDF. Des bibliothèques comme IronPDF et ExpertPDF simplifient ces tâches en fournissant de puissants outils pour la conversion de HTML en PDF, l'édition de PDF, et plus, facilitant une intégration facile dans les applications C#.

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