Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

Une Comparaison entre IronPDF et PDFNet

1. Introduction

À la recherche des outils PDF parfaits pour le .NET Framework ?

Dans cet article, nous allons examiner comment travailler avec des fichiers PDF en C# (l'un des langages de programmation les plus populaires). Nous discuterons de deux outils PDF de pointe pour C# sur le .NET Framework, en utilisant des exemples de code pour les comparer en fonction de leurs performances et fonctionnalités. À la fin, nous examinerons leurs détails de licence et apprendrons comment obtenir des clés de licence.

Les deux bibliothèques PDF sont :

  • PDFNet
  • IronPDF

2. IronPDF

IronPDF est une bibliothèque C# .NET développée par Iron Software pour résoudre tous les problèmes de PDF des développeurs C# .NET en utilisant une seule bibliothèque. IronPDF est alimenté par un moteur Chromium et possède une variété de capacités utiles et puissantes telles que la conversion de fichiers HTML5, JavaScript, CSS et image en PDF, la création d'en-têtes et de pieds de page personnalisés, et l'affichage des PDF exactement comme ils apparaissent dans un navigateur. IronPDF vous permet de lire des données à partir de fichiers PDF et de les insérer automatiquement dans vos applications .NET et vos systèmes de stockage de données. Vous pouvez importer, déplacer et indexer le contenu des anciens stockages de documents PDF dans vos applications de gestion de documents et professionnelles.

2.1. Fonctionnalités d'IronPDF

2.1.1. Conversions PDF

Cette fonctionnalité vous permet de générer des fichiers PDF à partir de divers formats tels que HTML, vues MVC, Web Forms, chaînes HTML et URL.

2.1.2. Extraction de contenu PDF

Dans de nombreuses circonstances, vous pouvez facilement extraire le texte intégré des PDF. Cependant, si cela échoue, votre texte est probablement intégré dans une image. Pour numériser les documents pour le texte visuel, plutôt que le texte brut, utilisez la bibliothèque IronOCR.

2.1.3 En-têtes et pied de page

Des en-têtes et pieds de page peuvent être ajoutés lors de la création d'un PDF ou à des PDF existants. En utilisant la propriété Print Options, vous pouvez créer un en-tête et un pied de page pour chaque page de document. Ces paramètres sont disponibles sur l'objet ChromePdfRenderer. Cet exemple s'exécute dans une application console .NET Core.

2.1.4. Traitement des images PDF

Cela permet aux utilisateurs de générer des images à partir de PDF ainsi que des PDF à partir de photographies. Il prend en charge l'extraction d'images, diverses extensions d'image et l'impression de PDF.

2.1.5. Entrée/Sortie des Documents PDF

IronPDF comprend également le chiffrement PDF 128 bits, le verrouillage PDF protégé par mot de passe et la signature numérique des PDF.

2.1.6. Édition PDF

L'outil IronPDF vous permet d'ajouter des filigranes, d'ajouter des pages, de supprimer des pages, des arrière-plans, des avant-plans, et bien plus encore à vos PDF.

2.1.7. Compatibilité

IronPDF prend en charge presque tous les systèmes d'exploitation et frameworks compatibles avec C#, tels que :

  • Windows
  • .NET Core 2.1, 3.0, 3.1, .NET 6 & 5
  • Conformité .NET Standard 2.0 pour une compatibilité universelle
  • Azure
  • AWS
  • Docker
  • Linux

3. PDFNet

Le SDK PDFNet .NET par PDFTron offre un traitement, une annotation, une édition et une création de PDF précis pour tout framework ou application sur le web, mobile, bureau ou serveur. Il gère l'ensemble du processus de gestion de documents et d'informations avec votre infrastructure et élimine le besoin de dépendances de serveur tiers. La plateforme web de PDFTron est livrée avec une version JS avec la plateforme prise en charge et une clé de licence démo pour tous les SDK PDF.

L'un des avantages les plus significatifs de PDFNet est qu'il est véritablement multiplateforme, permettant à nos utilisateurs d'ajouter simplement la compatibilité PDF et les fonctionnalités commerciales pertinentes à leurs workflows et applications dans de nombreux contextes mobiles et de bureau distincts, tout en utilisant pratiquement la même interface.

3.1. Fonctionnalités du SDK PDFNet

3.1.1. Compatibilité

Le SDK PDFNet est compatible avec de nombreuses plateformes et frameworks. Pour assurer la cohérence des plateformes, l'API JavaScript est utilisée de la même manière que l'API PDFNet. Des versions Node.js et Electron du SDK sont également disponibles. Ce package nécessite des binaires supplémentaires non gérés.

3.1.2. Édition et Visualisation

Apporte des capacités de lecture et d'édition sécurisées, évolutives et fidèles pour les PDF aux utilisateurs sur les plateformes en ligne, mobiles et de bureau.

3.1.3. Signature

Créez des procédures de signature personnalisées. Les documents signés numériquement peuvent être certifiés, validés et scellés.

3.1.4. Vraie Rédaction

Supprimez les données sensibles des documents, telles que les informations personnelles ou les informations personnelles de santé, tout en rendant le document consultable.

3.1.5. Manipulation de la Page

Les pages peuvent être ajoutées, supprimées ou réorganisées. Les documents peuvent être assemblés, fusionnés ou divisés en parties. Voir plusieurs documents simultanément dans le même lecteur ou côte à côte.

4. Créer un nouveau projet dans Visual Studio

Dans cet article, nous allons utiliser une application console pour générer des documents PDF.

Ouvrez le logiciel Visual Studio et accédez au menu Fichier. Sélectionnez "nouveau projet" puis sélectionnez l'application console.

Entrez le nom du projet et sélectionnez le chemin dans la boîte de texte appropriée. Puis, cliquez sur le bouton créer. Sélectionnez le framework .NET requis, comme indiqué dans la capture d'écran ci-dessous :

class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 1

Le projet Visual Studio générera maintenant la structure pour l'application console. Une fois terminé, il ouvrira le fichier Program.cs, dans lequel vous pouvez écrire et exécuter le code source.

class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 2

Nous pouvons maintenant ajouter la bibliothèque et tester le programme.

5. Installer la bibliothèque IronPDF

La bibliothèque IronPDF peut être téléchargée et installée de quatre manières différentes. Ce sont :

5.1 Utilisation du gestionnaire de packages NuGet de Visual Studio

Le logiciel Visual Studio offre l'option Gestionnaire de packages NuGet pour installer directement le package à la solution. La capture d'écran ci-dessous montre comment ouvrir le Gestionnaire de Paquets NuGet.

class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 3

Avec le gestionnaire de paquets ouvert, allez à l'onglet Explorer et recherchez "IronPDF:"

class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 4

Dans l'image ci-dessus, nous pouvons voir la liste des packages liés à la recherche. Sélectionnez l'option IronPDF et installez le paquet dans notre solution.

5.2 Utilisation de la ligne de commande de Visual Studio

  • Dans le menu Visual Studio, allez à Outils > Gestionnaire de paquet NuGet > Console du gestionnaire de paquet
class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 5

  • Entrez la ligne suivante dans l'onglet de la console du gestionnaire de packages :
Install-Package IronPdf

Le paquet IronPDF sera maintenant installé dans le projet.

class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 6

5.3 Téléchargement direct depuis la page web de NuGet

La troisième méthode est de télécharger le paquet NuGet directement depuis le NuGet Gallery IronPDF Package.

  • Sélectionnez l'option de téléchargement de package dans le menu à droite.
  • Double-cliquez sur le package téléchargé ; il sera installé automatiquement.
  • Ensuite, rechargez la solution et commencez à l'utiliser dans le projet.

5.4 Téléchargement direct de la page web d'IronPDF

Téléchargez le dernier paquet directement depuis la Page de téléchargement IronPDF. Après le téléchargement, suivez les étapes ci-dessous pour ajouter le paquet au projet.

  • Cliquez droit sur le projet depuis la fenêtre de solution.
  • Puis, sélectionnez les options de référence et parcourez l'emplacement de la référence téléchargée.
  • Ensuite, cliquez sur OK pour ajouter la référence.

6. Installer le SDK PDFNet

Le SDK PDFNet peut être téléchargé et installé de quatre manières différentes.

  • Utiliser le gestionnaire de packages NuGet de Visual Studio.
  • Utilisation de la ligne de commande de Visual Studio.
  • Téléchargement direct depuis le NuGet Gallery PDFNet Package.
  • Utilisation de PDFNetLoader.dll

6.1. Utilisation du gestionnaire de paquets NuGet de Visual Studio

Comme expliqué ci-dessus, allez dans les outils de Visual Studio et ouvrez le gestionnaire de paquets NuGet. Une liste apparaîtra — cliquez sur gérer le paquet NuGet pour les solutions.

class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 7

Une fenêtre apparaîtra avec une barre de recherche. Recherchez PDFNet et installez-le dans le projet.

6.2. Utilisation de la ligne de commande de Visual Studio

  • Dans le menu Visual Studio, allez à Outils > Gestionnaire de paquet NuGet > Console du gestionnaire de paquet
  • Entrez la ligne suivante dans l'onglet de la console du gestionnaire de packages :
Install-Package PDFNet -Version 9.2.0
class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 8

6.3. Téléchargement direct depuis le site web NuGet

La troisième méthode est de télécharger le paquet NuGet directement depuis le NuGet Gallery PDFNet Package.

  • Choisissez l'option de téléchargement de paquet dans le menu de droite.
  • Double-cliquez sur le paquet téléchargé pour démarrer le processus d'installation.

6.4. Utilisation de PDFNetLoader.dll

Vous pouvez également installer l'API PDFNet en utilisant le fichier PDFNetLoader.dll. Téléchargez-le depuis GitHub Releases pour PDFNetLoader.dll.

Téléchargez le paquet, placez-le dans le fichier bin du projet, et exécutez-le. Dans votre projet Visual Studio, ajoutez PDFNetLoader.dll comme référence.

Bootstrap et Rendu de Framework CSS

Les applications web modernes reposent fortement sur Bootstrap et les frameworks CSS pour des designs cohérents et réactifs. Lors de la génération de PDF à partir de contenu web, la capacité à rendre précisément ces frameworks sans modification est essentielle pour maintenir la cohérence du design et réduire l'effort de développement.

IronPDF : Support complet du framework Bootstrap

  • Bootstrap 5: Système de mise en page flexbox complet, CSS Grid, classes utilitaires, et toutes les bibliothèques de composants.
  • Bootstrap 4: Composants de carte complets, navigation, utilitaires flexibles, et design réactif.
  • Tailwind CSS: Toutes les classes orientées utilitaire se rendent avec précision dans le navigateur.
  • Foundation : Système de grille et support des composants complets
  • CSS3 moderne : Flexbox, CSS Grid, propriétés personnalisées, animations, transitions et transformations

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

Exemple de code: Tableau de bord du système de gestion de l'apprentissage

using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
using IronPdf;

// Set your IronPDF license key
IronPdf.License.LicenseKey = "License-Key goes here";

var renderer = new ChromePdfRenderer();
string bootstrapLMS = @"
<!DOCTYPE html>
<html>
<head>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
</head>
<body>
    <div class='container-fluid py-4'>
        <div class='d-flex justify-content-between align-items-center mb-4'>
            <div>
                <h1 class='display-6 mb-1'>Student Learning Dashboard</h1>
                <p class='text-muted mb-0'>Spring Semester 2025</p>
            </div>
            <span class='badge bg-success fs-5'>92% Overall Progress</span>
        </div>

        <div class='row g-4 mb-4'>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-primary'>
                    <div class='card-body'>
                        <div class='text-primary mb-2' style='font-size: 2rem;'>📚</div>
                        <h3 class='mb-1'>6/8</h3>
                        <p class='text-muted mb-0'>Courses Completed</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-success'>
                    <div class='card-body'>
                        <div class='text-success mb-2' style='font-size: 2rem;'>🎯</div>
                        <h3 class='mb-1'>24/28</h3>
                        <p class='text-muted mb-0'>Assignments Submitted</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-warning'>
                    <div class='card-body'>
                        <div class='text-warning mb-2' style='font-size: 2rem;'>⏱️</div>
                        <h3 class='mb-1'>48hrs</h3>
                        <p class='text-muted mb-0'>Study Time This Week</p>
                    </div>
                </div>
            </div>
            <div class='col-md-3'>
                <div class='card text-center shadow-sm border-info'>
                    <div class='card-body'>
                        <div class='text-info mb-2' style='font-size: 2rem;'>⭐</div>
                        <h3 class='mb-1'>A- Average</h3>
                        <p class='text-muted mb-0'>Current GPA: 3.7</p>
                    </div>
                </div>
            </div>
        </div>

        <div class='row g-4'>
            <div class='col-md-8'>
                <div class='card shadow-sm'>
                    <div class='card-header bg-primary text-white'>
                        <h5 class='mb-0'>Current Courses</h5>
                    </div>
                    <div class='card-body p-0'>
                        <div class='list-group list-group-flush'>
                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Advanced Web Development</h6>
                                        <small class='text-muted'>Prof. Johnson | Mondays & Wednesdays, 2:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 95%'></div>
                                </div>
                                <small class='text-muted'>95% Complete | Final Project Due: May 15</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Database Systems</h6>
                                        <small class='text-muted'>Prof. Chen | Tuesdays & Thursdays, 10:00 AM</small>
                                    </div>
                                    <span class='badge bg-primary'>Grade: A-</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-primary' style='width: 88%'></div>
                                </div>
                                <small class='text-muted'>88% Complete | Midterm: April 28</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Artificial Intelligence Fundamentals</h6>
                                        <small class='text-muted'>Prof. Martinez | Fridays, 1:00 PM</small>
                                    </div>
                                    <span class='badge bg-warning text-dark'>Grade: B+</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-warning' style='width: 75%'></div>
                                </div>
                                <small class='text-muted'>75% Complete | Research Paper Due: May 5</small>
                            </div>

                            <div class='list-group-item'>
                                <div class='d-flex justify-content-between align-items-center mb-2'>
                                    <div>
                                        <h6 class='mb-1'>Computer Networks</h6>
                                        <small class='text-muted'>Prof. Davis | Mondays & Wednesdays, 4:00 PM</small>
                                    </div>
                                    <span class='badge bg-success'>Grade: A</span>
                                </div>
                                <div class='progress' style='height: 6px;'>
                                    <div class='progress-bar bg-success' style='width: 92%'></div>
                                </div>
                                <small class='text-muted'>92% Complete | Lab Exam: April 30</small>
                            </div>
                        </div>
                    </div>
                </div>
            </div>

            <div class='col-md-4'>
                <div class='card shadow-sm mb-3'>
                    <div class='card-header bg-warning text-dark'>
                        <h5 class='mb-0'>Upcoming Deadlines</h5>
                    </div>
                    <div class='card-body p-0'>
                        <ul class='list-group list-group-flush'>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-danger me-2'>Today</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Assignment 4</strong></small>
                                        <br><small class='text-muted'>Neural Networks Lab</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-warning text-dark me-2'>Apr 28</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Database Midterm</strong></small>
                                        <br><small class='text-muted'>Chapters 1-8</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-info me-2'>Apr 30</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>Networks Lab Exam</strong></small>
                                        <br><small class='text-muted'>Practical Assessment</small>
                                    </div>
                                </div>
                            </li>
                            <li class='list-group-item'>
                                <div class='d-flex align-items-start'>
                                    <span class='badge bg-primary me-2'>May 5</span>
                                    <div class='flex-grow-1'>
                                        <small><strong>AI Research Paper</strong></small>
                                        <br><small class='text-muted'>15-20 pages</small>
                                    </div>
                                </div>
                            </li>
                        </ul>
                    </div>
                </div>

                <div class='card shadow-sm'>
                    <div class='card-header bg-info text-white'>
                        <h5 class='mb-0'>Study Resources</h5>
                    </div>
                    <div class='card-body'>
                        <div class='d-grid gap-2'>
                            <button class='btn btn-outline-primary btn-sm'>📖 Course Materials</button>
                            <button class='btn btn-outline-primary btn-sm'>💬 Discussion Forums</button>
                            <button class='btn btn-outline-primary btn-sm'>🎥 Recorded Lectures</button>
                            <button class='btn btn-outline-primary btn-sm'>📝 Practice Quizzes</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(bootstrapLMS);
pdf.SaveAs("lms-dashboard.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Sortie: Système de gestion de l'apprentissage professionnel PDF avec le système de grille de Bootstrap 5, des composants de carte, des barres de progression, des badges, des mises en page flexbox, et des groupes de liste—tout se rendant avec un espacement, une typographie, et une précision de couleur parfaits.

PDFNet (Apryse): Support Partiel du CSS Moderne

PDFNet utilise un moteur de rendu HTML personnalisé avec un support CSS3 sélectif :

  • Implémentation flexbox limitée: Les mises en page basées sur flex de Bootstrap 4/5 peuvent se rendre de manière incohérente.
  • Support partiel du CSS Grid: Les conceptions basées sur la grille nécessitent souvent des solutions de repli.
  • Contraintes JavaScript: Exécution minimale par rapport aux environnements de navigateur complet.
  • Test des frameworks requis: Les composants Bootstrap nécessitent une validation avant utilisation en production.

Impact sur le développement: Les équipes doivent tester chaque composant Bootstrap individuellement et créent souvent des mises en page simplifiées ou un CSS alternatif pour PDFNet, ajoutant de la complexité et réduisant la cohérence du design.

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

7. Impression d'un fichier PDF (Exemples de code)

Imprimer un fichier PDF est une fonctionnalité indispensable pour les applications modernes qui traitent des PDF. Ici, nous discuterons de la façon d'imprimer des fichiers PDF en utilisant les deux outils.

7.1. Impression d'un fichier PDF en utilisant IronPDF

IronPDF imprime un PDF en l'envoyant à l'imprimante par défaut de l'ordinateur. Cela ouvrira l'interface d'impression Windows — il suffit de cliquer sur imprimer pour lancer l'impression.

using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
using IronPdf;

class PrintPDF
{
    static void Main(string[] args)
    {
        // Create a new PDF and print it
        var Renderer = new IronPdf.ChromePdfRenderer();
        PdfDocument Pdf = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");

        // Send the PDF to the default printer to print
        Pdf.Print(300, false);
    }
}
Imports IronPdf

Friend Class PrintPDF
	Shared Sub Main(ByVal args() As String)
		' Create a new PDF and print it
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Dim Pdf As PdfDocument = Renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")

		' Send the PDF to the default printer to print
		Pdf.Print(300, False)
	End Sub
End Class
$vbLabelText   $csharpLabel

7.2. Impression d'un fichier PDF en utilisant PDFNet

Le SDK PDFNet de PDFTron fournit également une fonctionnalité d'impression. Ci-dessous est un extrait de code source pour imprimer un fichier PDF dans PDFNet.

using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
using System;
using pdftron;
using pdftron.PDF;
using pdftron.Common;
using pdftron.Filters;

namespace PDFPrintTestCS
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Opening the input file...");
            using (PDFDoc pdfdoc = new PDFDoc("tiger.pdf"))
            {
                pdfdoc.InitSecurityHandler();
                Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...");
                PrinterMode printerMode = new PrinterMode();
                printerMode.SetAutoCenter(true);
                printerMode.SetAutoRotate(true);
                printerMode.SetCollation(true);
                printerMode.SetCopyCount(1);
                printerMode.SetDPI(300); // Set print quality to 300 DPI
                printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto);
                printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom);
                printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait);
                printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations);
                printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale);
                printerMode.SetOutputPageBorder(false);
                printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium);
                printerMode.SetPaperSize(new Rect(0, 0, 612, 792));
                PageSet pagesToPrint = new PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all);
                Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, null);
            }
        }
    }
}
Imports System
Imports pdftron
Imports pdftron.PDF
Imports pdftron.Common
Imports pdftron.Filters

Namespace PDFPrintTestCS
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			Console.WriteLine("Opening the input file...")
			Using pdfdoc As New PDFDoc("tiger.pdf")
				pdfdoc.InitSecurityHandler()
				Console.WriteLine("Printing the input file using PDF.Print.StartPrintJob...")
				Dim printerMode As New PrinterMode()
				printerMode.SetAutoCenter(True)
				printerMode.SetAutoRotate(True)
				printerMode.SetCollation(True)
				printerMode.SetCopyCount(1)
				printerMode.SetDPI(300) ' Set print quality to 300 DPI
				printerMode.SetDuplexing(PrinterMode.DuplexMode.e_Duplex_Auto)
				printerMode.SetNUp(PrinterMode.NUp.e_NUp_1_1, PrinterMode.NUpPageOrder.e_PageOrder_LeftToRightThenTopToBottom)
				printerMode.SetOrientation(PrinterMode.Orientation.e_Orientation_Portrait)
				printerMode.SetOutputAnnot(PrinterMode.PrintContentTypes.e_PrintContent_DocumentAndAnnotations)
				printerMode.SetOutputColor(PrinterMode.OutputColor.e_OutputColor_Grayscale)
				printerMode.SetOutputPageBorder(False)
				printerMode.SetOutputQuality(PrinterMode.OutputQuality.e_OutputQuality_Medium)
				printerMode.SetPaperSize(New Rect(0, 0, 612, 792))
				Dim pagesToPrint As New PageSet(1, pdfdoc.GetPageCount(), PageSet.Filter.e_all)
				Print.StartPrintJob(pdfdoc, "", pdfdoc.GetFileName(), "", pagesToPrint, printerMode, Nothing)
			End Using
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

8. Créer des PDFs à partir de HTML

Les deux bibliothèques possèdent des capacités de conversion HTML en PDF, mais les méthodes sont légèrement différentes.

8.1. Créer des PDFs à partir de HTML en utilisant IronPDF

IronPDF ne nécessite pas l'utilisation de mécanismes JSON ou de chiffrement. IronPDF supporte une large gamme de méthodes. Par exemple :

Fichiers HTML vers PDF

using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
using IronPdf;

class HtmlToPdf
{
    static void Main(string[] args)
    {
        var Renderer = new IronPdf.ChromePdfRenderer();
        Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf");
    }
}
Imports IronPdf

Friend Class HtmlToPdf
	Shared Sub Main(ByVal args() As String)
		Dim Renderer = New IronPdf.ChromePdfRenderer()
		Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>").SaveAs("pixel-perfect.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

URL en PDF

using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
using IronPdf;

class UrlToPdf
{
    static void Main(string[] args)
    {
        IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
        var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
        Pdf.SaveAs("url.pdf");
    }
}
Imports IronPdf

Friend Class UrlToPdf
	Shared Sub Main(ByVal args() As String)
		Dim Renderer As New IronPdf.ChromePdfRenderer()
		Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
		Pdf.SaveAs("url.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel
class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 9

8.2. Créer des PDFs à partir de HTML en utilisant PDFNet

PDFNet fournit également des fonctionnalités de conversion HTML en PDF à la fois par conversion de page et conversion d'URL. En raison de la longueur du code, nous ne vous donnerons qu'un seul exemple ici.

class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
class HTML2PDFSample
{
    private static pdftron.PDFNetLoader pdfNetLoader = pdftron.PDFNetLoader.Instance();
    static HTML2PDFSample() {}

    static void Main(string[] args)
    {
        string output_path = "../../../../TestFiles/Output/html2pdf_example";
        string host = "https://www.pdftron.com";
        HTML2PDF.SetModulePath("../../../../../Lib");

        if (!HTML2PDF.IsModuleAvailable())
        {
            Console.WriteLine();
            Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.");
            return;
        }

        try
        {
            using (PDFDoc doc = new PDFDoc())
            {
                if (HTML2PDF.Convert(doc, host + "/"))
                    doc.Save(output_path + "_01.pdf", SDFDoc.SaveOptions.e_linearized);
                else
                    Console.WriteLine("Conversion failed.");
            }
        }
        catch (PDFNetException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}
Friend Class HTML2PDFSample
	Private Shared pdfNetLoader As pdftron.PDFNetLoader = pdftron.PDFNetLoader.Instance()
	Shared Sub New()
	End Sub

	Shared Sub Main(ByVal args() As String)
		Dim output_path As String = "../../../../TestFiles/Output/html2pdf_example"
		Dim host As String = "https://www.pdftron.com"
		HTML2PDF.SetModulePath("../../../../../Lib")

		If Not HTML2PDF.IsModuleAvailable() Then
			Console.WriteLine()
			Console.WriteLine("Unable to run HTML2PDFTest: PDFTron SDK HTML2PDF module not available.")
			Return
		End If

		Try
			Using doc As New PDFDoc()
				If HTML2PDF.Convert(doc, host & "/") Then
					doc.Save(output_path & "_01.pdf", SDFDoc.SaveOptions.e_linearized)
				Else
					Console.WriteLine("Conversion failed.")
				End If
			End Using
		Catch e As PDFNetException
			Console.WriteLine(e.Message)
		End Try
	End Sub
End Class
$vbLabelText   $csharpLabel
class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 10

9. Licences

IronPDF est une bibliothèque qui offre une licence développeur gratuite. IronPDF propose également une structure de prix spéciale : le forfait léger commence à $799 sans coûts cachés. Il est également possible de redistribuer des produits SaaS et OEM. Toutes les licences incluent une garantie de remboursement de 30 jours, une année de support logiciel et de mises à jour, développement/test/mise en scène/production valide, et une licence perpétuelle (achat unique). Les licences IronPDF offrent des performances maximales pour les besoins des utilisateurs. Allez à cette Page de licence IronPDF pour voir toute la structure de prix et les licences d'IronPDF.

class="content-img-align-center">
class="center-image-wrapper"> Une comparaison entre IronPDF et PDFNet, Figure 11

Le SDK PDFTron PDFNet est livré avec plusieurs choix de licences adaptés aux besoins de votre entreprise. Trois types de licences sont accompagnés de redistributions d'entreprise et OEM. Les licences d'entreprise sont uniquement destinées à une utilisation organisationnelle et ne peuvent pas être utilisées dans la distribution d'applications. Les APIs supplémentaires nécessitant un accès au système de fichiers sont également incluses avec les licences. Toutes les licences sont fournies avec une clé de licence. Les trois types de licences sont :

  • Vueur
  • Vueur & Annotation
  • SDK de base

Pour plus d'informations sur leurs structures de licences, visitez cette Page d'information sur la licence PDFTron.

10. Conclusion

IronPDF offre de nombreuses fonctionnalités pour le traitement des fichiers PDF et leur conversion en différents formats. Les conversions de HTML en PDF sont produites dans un format vectoriel adapté à l'impression commerciale de haute qualité. En conséquence, vous recevrez un PDF clair et de haute qualité. Les informations sur les licences et les prix peuvent être trouvées sur le site web.

Similaire à IronPDF, PDFNet aide à la transition, l'annotation, la signature, le remplissage, la conversion et l'édition de fichiers PDF. Il prend en charge plusieurs plateformes, y compris Windows, iOS, Android, WEB, et Linux. Pour une utilisation en production, les SDKs PDFNet nécessitent une clé produit.

Les licences IronPDF sont centrées sur les développeurs, ce qui signifie que vous devez obtenir une licence en fonction du nombre de développeurs qui vont utiliser le produit. D'autre part, les licences PDFNet ne fonctionnent pas de la même manière, opérant plutôt avec une licence basée sur les fonctionnalités. Cela signifie que vous devez obtenir la licence qui supporte les fonctionnalités requises. Les licences IronPDF incluent toutes les fonctionnalités dès le départ. Avec PDFNet, certaines fonctionnalités, telles que la conversion de documents, doivent être achetées en tant qu'extensions.

La bibliothèque IronPDF offre les fonctionnalités de manière organisée, ce qui facilite l'écriture de code qui effectue de grandes tâches avec quelques lignes de code. Iron Software offre actuellement un package de cinq outils pour le prix de seulement deux. Les outils inclus dans le Iron Suite sont :

Veuillez visiter cette Page d'information Iron Suite pour explorer Iron Suite.

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

Questions Fréquemment Posées

Quelles sont les principales bibliothèques PDF comparées dans l'article?

L'article compare IronPDF, développé par Iron Software, et PDFNet par PDFTron, en se concentrant sur leurs capacités pour les développeurs C# au sein du .NET Framework.

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. De plus, vous pouvez convertir des fichiers HTML et des URL en PDFs en utilisant le moteur Chromium robuste d'IronPDF.

Quels systèmes d'exploitation sont pris en charge par IronPDF?

IronPDF prend en charge plusieurs systèmes d'exploitation, dont Windows, Azure, et Docker, permettant une intégration transparente dans divers environnements de développement.

Comment IronPDF gère-t-il l'extraction de données PDF?

IronPDF permet une extraction efficace de données PDF, permettant aux développeurs de récupérer facilement du texte et des images à partir de documents PDF pour un traitement ultérieur.

Quelles sont les options d'installation pour IronPDF ?

IronPDF peut être installé via le gestionnaire de paquets NuGet de Visual Studio, la ligne de commande de Visual Studio, ou directement depuis la galerie NuGet, assurant une installation facile pour les développeurs.

Quelles sont les différences de licence entre IronPDF et PDFNet?

IronPDF propose des licences centrées sur les développeurs incluant toutes les fonctionnalités, tandis que les licences PDFNet sont basées sur les fonctionnalités et peuvent nécessiter des achats supplémentaires pour des fonctionnalités spécifiques.

IronPDF est-il adapté aux grandes tâches PDF?

Oui, IronPDF est apprécié pour sa facilité d'utilisation et ses exigences de code minimales, le rendant adapté pour gérer efficacement de grandes tâches PDF.

Quels outils supplémentaires sont inclus dans la suite Iron Software?

La suite Iron Software inclut IronBarcode, IronXL, IronOCR, IronPDF et IronWebscraper, disponibles en pack, augmentant son attrait pour les développeurs.

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