Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

Une Comparaison Entre Compdfkit & IronPDF

PDF, abréviation de Portable Document Format, est un type de fichier créé par Adobe pour garantir l'uniformité dans le partage de documents. Ce format maintient la mise en page, le texte et les images constants sur divers appareils et systèmes d'exploitation. Les PDFs sont connus pour leur sécurité, leurs fonctionnalités interactives et leur taille compacte, ce qui les rend parfaits pour distribuer des documents sans altérer le contenu original.

Pour les développeurs utilisant C#, les bibliothèques PDF fournissent des solutions PDF pour travailler avec des fichiers PDF. Ces bibliothèques permettent la création de documents, la modification de contenu et l'extraction de texte et d'images. Elles supportent également des fonctionnalités telles que la gestion de formulaires, les signatures numériques et la compatibilité sur différentes plateformes. Conçues pour des performances optimales, ces bibliothèques facilitent un traitement efficace des PDF.

In this article, we will compare two C# PDF libraries: IronPDF and ComPDFKit. Cette comparaison couvrira les fonctionnalités, la fonctionnalité, des exemples de code et la licence. En examinant ces aspects, vous pourrez déterminer quelle bibliothèque convient le mieux à vos projets liés aux PDF.

1. ComPDFKit SDK

Une comparaison entre Compdfkit & IronPDF : Figure 1 - Page d'accueil du SDK ComPDFKIT

Le ComPDFKit PDF SDK est un SDK PDF C# robuste qui permet aux développeurs d'intégrer des fonctionnalités PDF complètes dans leurs applications. Cette bibliothèque prend en charge un large éventail de fonctions PDF nécessaires à la gestion programmatique des documents PDF. Il est conçu pour être utilisé dans divers environnements, y compris les plateformes Web, de bureau et mobiles, ce qui en fait un outil polyvalent pour les développeurs travaillant sur des projets multiplateformes. Il a plusieurs fonctions dans la solution d'exemple. Vous pouvez sélectionner n'importe quelle fonction liée au ComPDFKit PDF SDK que vous souhaitez essayer.

1.1 Principales fonctionnalités de ComPDFKit

  1. Affichage PDF : ComPDFKit fournit un visionneur PDF puissant qui permet aux utilisateurs de visualiser des documents PDF avec une grande fidélité. Le visionneur prend en charge le défilement fluide, le zoom et la navigation, garantissant une expérience utilisateur transparente.
  2. Annotations : La bibliothèque comprend des outils pour intégrer les annotations PDF de manière fluide. Les utilisateurs peuvent surligner du texte, ajouter des commentaires et créer divers types d'annotations, qui sont essentiels pour les flux de travail collaboratifs.
  3. Gestion des formulaires : La bibliothèque offre un support étendu pour les formulaires interactifs. Les développeurs peuvent créer, remplir et extraire des données de formulaires PDF, ce qui la rend idéale pour les applications nécessitant le traitement de formulaires.
  4. Édition PDF : ComPDFKit permet des capacités d'édition PDF étendues, y compris la modification de texte, d'images et d'autres contenus au sein des fichiers PDF. Cette fonctionnalité est utile pour les applications qui doivent mettre à jour ou personnaliser des documents PDF existants.
  5. Conversion : La bibliothèque prend en charge la conversion de fichiers PDF vers et à partir de divers formats tels que Word, Excel, PowerPoint et images. Cette flexibilité est essentielle pour les applications qui doivent transformer le contenu PDF pour différents usages.
  6. Sécurité : ComPDFKit inclut des fonctionnalités de sécurité robustes telles que le chiffrement et la gestion des permissions. Les développeurs peuvent sécuriser des documents PDF pour protéger des informations sensibles d'un accès non autorisé.
  7. Reconnaissance Optique de Caractères (OCR) : La bibliothèque inclut des capacités d'OCR pour convertir des documents numérisés en PDFs modifiables et consultables. Cette fonctionnalité est essentielle pour numériser des documents papier et les rendre accessibles électroniquement.

ComPDFKit fournit un ensemble complet d'API qui simplifient l'intégration de ces fonctionnalités dans diverses applications. Sa documentation étendue et son support en font un excellent choix pour les développeurs souhaitant incorporer des fonctionnalités PDF avancées dans leurs projets.

2. Bibliothèque IronPDF

Une comparaison entre Compdfkit & IronPDF : Figure 2 - Page d'accueil d'IronPDF

IronPDF est une bibliothèque PDF polyvalente pour .NET qui permet aux développeurs de créer, d'éditer et de gérer des documents PDF en utilisant C#. Elle fournit des fonctions PDF complètes. Elle est conçue pour simplifier la génération de PDF en rendant des PDFs à partir de HTML, de CSS, de JavaScript et de divers formats d'image. Cela en fait un outil idéal pour les développeurs cherchant à intégrer une fonctionnalité PDF robuste dans leurs applications .NET.

Caractéristiques clés d'IronPDF

  1. Conversion HTML en PDF : IronPDF excelle dans la conversion de contenu HTML, CSS et JavaScript en documents PDF de haute qualité. Cette fonctionnalité prend en charge les chaînes HTML en PDFs, les URL, les webforms ASPX et les vues MVC, ce qui en fait une solution flexible pour divers contenus basés sur le Web.
  2. Édition PDF : La bibliothèque offre des capacités d'édition étendues, y compris l'ajout, la copie et la suppression de pages, la fusion et la division de PDFs et la manipulation de texte et d'images. Les développeurs peuvent également ajouter des en-têtes, des pieds de page, des filigranes et des signatures numériques aux documents PDF.
  3. Gestion des formulaires : IronPDF prend en charge la création de formulaires intelligents et le remplissage programmatique de formulaires PDF. Cette fonctionnalité est essentielle pour les applications qui nécessitent la génération dynamique de formulaires et l'extraction de données à partir de formulaires soumis par l'utilisateur.
  4. Fonctions de sécurité : IronPDF fournit des options de sécurité robustes, telles que la définition de mots de passe et de permissions, le chiffrement de documents et l'ajout de signatures numériques. Ces fonctionnalités garantissent que les informations sensibles contenues dans les documents PDF sont protégées contre l'accès non autorisé.
  5. OCR et extraction de données : La bibliothèque inclut des capacités de reconnaissance optique de caractères (OCR), permettant la conversion de documents numérisés en PDFs modifiables et consultables. De plus, IronPDF peut extraire du texte, des images et d'autres données à partir de PDFs existants, facilitant la réutilisation et l'analyse de contenu.
  6. Conversion d'images : IronPDF prend en charge la conversion de divers formats d'image, y compris JPG, PNG, GIF, BMP et SVG, en documents PDF. Elle offre également la possibilité de rendre des pages PDF en tant qu'images, ce qui est utile pour les applications nécessitant des aperçus visuels du contenu PDF.
  7. Compatibilité multiplateforme : IronPDF est compatible avec plusieurs plateformes .NET, y compris .NET Core, .NET Framework et .NET Standard. Elle prend en charge le déploiement sur Windows, Linux, macOS et Azure, ce qui en fait un choix polyvalent pour les développeurs travaillant dans divers environnements.
  8. Optimisation des performances : La bibliothèque est conçue pour des performances élevées, avec une prise en charge du multithreading et des opérations asynchrones. Cela garantit que les tâches de traitement PDF sont exécutées efficacement, même dans des applications avec des charges de travail élevées.
  9. Documentation complète et support : IronPDF fournit une documentation détaillée et de nombreux exemples de code, ce qui facilite la prise en main pour les développeurs et l'implémentation de ses fonctionnalités. De plus, elle offre un support technique pour aider à résoudre les problèmes qui peuvent survenir pendant le développement.

3. Créer un nouveau projet Visual Studio

Avant de plonger dans des exemples de code, créons un nouveau projet Visual Studio. Voici un guide étape par étape pour configurer une application console C# dans Visual Studio.

Étape 1 : Installer Visual Studio (si ce n'est pas déjà fait)

Visual Studio est le meilleur IDE pour les projets C#. Si vous ne l'avez pas encore téléchargé et installé, téléchargez-le depuis cette page de téléchargement de Visual Studio.

Étape 2 : Ouvrir Visual Studio

Après avoir installé Visual Studio, ouvrez-le. Si vous avez Visual Studio Community, vous pouvez soit vous connecter soit continuer sans vous connecter.

Étape 3 : Créer un nouveau projet

  1. Cliquez sur "Créer un nouveau projet" ou accédez à Fichier > Nouveau > Projet.

    Une comparaison entre Compdfkit & IronPDF : Figure 3 - Une comparaison entre IronPDF & DinkToPdf : Figure 1

  2. Recherchez l'application Console dans la barre de recherche et sélectionnez l'application Console parmi les résultats.

    Une comparaison entre Compdfkit & IronPDF : Figure 4 - Une comparaison entre IronPDF & DinkToPdf : Figure 2 - Dans la boîte de dialogue Créer un nouveau projet, sélectionnez l'application Console C# et cliquez sur Suivant.

  3. Choisissez le modèle de projet qui correspond le mieux à vos besoins. Pour une application console de base, vous pouvez choisir « Application Console (.NET Framework) ».
  4. Indiquez le nom et l'emplacement de sauvegarde de votre projet. Vous pouvez également définir le nom de la solution.
  5. Choisissez le framework cible approprié et cliquez sur « Créer » pour générer votre projet.

4. Installer IronPDF

Intégrer IronPDF dans votre projet peut se faire par diverses méthodes, chacune offrant une expérience d'installation sans heurts.

  1. Pour utiliser le gestionnaire de packages NuGet de Visual Studio, commencez par faire un clic droit sur « Dépendances » dans votre solution et sélectionnez « Gérer les packages NuGet ». Dans l'onglet « Parcourir », recherchez « IronPDF » et installez la dernière version pour votre projet.

    Une comparaison entre Compdfkit & IronPDF : Figure 5 - Recherchez IronPDF en utilisant le gestionnaire de packages NuGet

  2. Vous pouvez également utiliser la console du gestionnaire de packages NuGet. Ouvrez la console en accédant à Outils > Gestionnaire de packages NuGet > Console du gestionnaire de packages dans Visual Studio. Une fois la console ouverte, exécutez la commande :

    Install-Package IronPdf

    Cette approche fournit un moyen rapide d'installer la bibliothèque à l'aide d'une simple ligne de commande.

    Une comparaison entre Compdfkit & IronPDF : Figure 6 - En utilisant la ligne de commande, entrez la commande ci-dessus

  3. Pour ceux qui préfèrent télécharger directement depuis le site NuGet, visitez la page du package NuGet IronPDF. De là, vous pouvez télécharger le fichier du package. Après avoir téléchargé, double-cliquez sur le fichier pour l'ajouter à votre projet, puis rechargez votre solution pour finaliser l'intégration.
  4. Une autre méthode consiste à télécharger directement la dernière version d'IronPDF. Cela garantit que vous avez le package le plus à jour. Suivez les instructions fournies sur le site pour intégrer manuellement IronPDF dans votre projet Visual Studio.

En suivant l'une de ces méthodes, vous pouvez intégrer efficacement IronPDF dans votre projet .NET.

5. Installer ComPDFKit C

Il existe deux méthodes principales pour ajouter ComPDFKit à votre projet : en utilisant le gestionnaire de packages NuGet ou un package local.

5.1 Utiliser le gestionnaire de packages NuGet

  1. Ouvrir le gestionnaire de packages NuGet : Dans l'Explorateur de solutions, faites un clic droit sur « Références » et sélectionnez « Gérer les packages NuGet ».
  2. Rechercher et installer : Recherchez « ComPDFKit » dans le gestionnaire de packages NuGet. Sélectionnez l'package approprié (ex. ComPDFKit.NetFramework ou ComPDFKit.Conversion.NetFramework) et cliquez sur « Installer ».

Une comparaison entre Compdfkit & IronPDF : Figure 7 - Recherchez ComPDFKit en utilisant le gestionnaire de packages NuGet

  1. Vérifier l'installation : Assurez-vous que le package apparaît sous « Références » dans l'Explorateur de solutions.

5.2 Utiliser un package local

  1. Télécharger le package : Obtenez le fichier ComPDFKit.NetFramework.nupkg sur le site officiel de ComPDFKit.
  2. Configurer la source NuGet : Créez ou modifiez un fichier nuget.config dans votre répertoire de projet pour inclure le chemin vers le package local.

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <packageSources>
            <add key="ComPDFKitSource" value="path\to\directoryContainingNupkg" />
        </packageSources>
    </configuration>
    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
        <packageSources>
            <add key="ComPDFKitSource" value="path\to\directoryContainingNupkg" />
        </packageSources>
    </configuration>
    XML
  3. Installer le package local : Réouvrez votre solution dans Visual Studio, allez à « Gérer les packages NuGet » et sélectionnez votre source de package local. Installez le package ComPDFKit à partir de la source locale.

5.3 Appliquer la clé de licence

  1. Obtenir la licence : Contactez l'équipe de ComPDFKit pour obtenir une licence d'essai ou complète.
  2. Appliquer la licence dans le code :

    bool LicenseVerify()
    {
        if (!CPDFSDKVerifier.LoadNativeLibrary())
            return false;
        LicenseErrorCode verifyResult = CPDFSDKVerifier.LicenseVerify("input your license here");
        return (verifyResult == LicenseErrorCode.E_LICENSE_SUCCESS);
    }
    bool LicenseVerify()
    {
        if (!CPDFSDKVerifier.LoadNativeLibrary())
            return false;
        LicenseErrorCode verifyResult = CPDFSDKVerifier.LicenseVerify("input your license here");
        return (verifyResult == LicenseErrorCode.E_LICENSE_SUCCESS);
    }
    IRON VB CONVERTER ERROR developers@ironsoftware.com
    $vbLabelText   $csharpLabel

    Ajoutez cette méthode à votre fichier d'application principale pour vérifier la licence.

En suivant ces étapes, vous pouvez intégrer avec succès ComPDFKit dans votre projet C#.

6. HTML vers PDF

La conversion HTML en PDF est une exigence courante dans de nombreuses applications, telles que la génération de rapports, de factures ou de documentation à partir de contenu web. IronPDF et ComPDFKit offrent tous deux des solutions robustes pour cette tâche, mais leurs approches et capacités diffèrent considérablement.

Le processus commence généralement par la capture du contenu HTML, qui peut être statique ou généré dynamiquement. Le HTML capturé est ensuite traité pour appliquer toute feuille de style (CSS) et script (JavaScript) associés, ce qui garantit que le PDF final reflète l'apparence et le comportement de la page web originale.

6.1 Convertir HTML en PDF avec IronPDF

IronPDF est une bibliothèque polyvalente pour convertir des HTML en PDF en C#. Elle utilise un moteur de rendu basé sur Chrome pour garantir une sortie de haute qualité. Ce processus implique de rendre avec précision le contenu HTML, CSS et JavaScript au format PDF. Voici un exemple de base sur la façon de convertir une chaîne HTML en un fichier PDF en utilisant IronPDF :

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Define your HTML string
        string htmlString = @"
            <h1>Hello, IronPDF!</h1>
            <p>This is a simple PDF created from an HTML string.</p>";

        var renderer = new ChromePdfRenderer();
        // Convert the HTML string to a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlString);
        // Save the PDF document to a file
        string outputPath = "sample.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        // Define your HTML string
        string htmlString = @"
            <h1>Hello, IronPDF!</h1>
            <p>This is a simple PDF created from an HTML string.</p>";

        var renderer = new ChromePdfRenderer();
        // Convert the HTML string to a PDF document
        PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlString);
        // Save the PDF document to a file
        string outputPath = "sample.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main()
		' Define your HTML string
		Dim htmlString As String = "
            <h1>Hello, IronPDF!</h1>
            <p>This is a simple PDF created from an HTML string.</p>"

		Dim renderer = New ChromePdfRenderer()
		' Convert the HTML string to a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlString)
		' Save the PDF document to a file
		Dim outputPath As String = "sample.pdf"
		pdf.SaveAs(outputPath)
		Console.WriteLine($"PDF created successfully and saved to {outputPath}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Une comparaison entre Compdfkit & IronPDF : Figure 8 - Exemple de sortie du code ci-dessus

De même, vous pouvez créer des PDFs à partir d'un fichier HTML. C'est très utile car parfois les chaînes HTML sont trop grandes et vous devez y ajouter du CSS. IronPDF aide en fournissant une méthode pour convertir directement des fichiers HTML avec leurs fichiers CSS et JS en documents PDF.

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        // Convert the HTML file to a PDF document
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("index.html");
        // Save the PDF document to a file
        string outputPath = "HTML File.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        var renderer = new ChromePdfRenderer();
        // Convert the HTML file to a PDF document
        PdfDocument pdf = renderer.RenderHtmlFileAsPdf("index.html");
        // Save the PDF document to a file
        string outputPath = "HTML File.pdf";
        pdf.SaveAs(outputPath);
        Console.WriteLine($"PDF created successfully and saved to {outputPath}");
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main()
		Dim renderer = New ChromePdfRenderer()
		' Convert the HTML file to a PDF document
		Dim pdf As PdfDocument = renderer.RenderHtmlFileAsPdf("index.html")
		' Save the PDF document to a file
		Dim outputPath As String = "HTML File.pdf"
		pdf.SaveAs(outputPath)
		Console.WriteLine($"PDF created successfully and saved to {outputPath}")
	End Sub
End Class
$vbLabelText   $csharpLabel

Une comparaison entre Compdfkit & IronPDF : Figure 9 - Exemple de sortie du code ci-dessus utilisant IronPDF pour rendre un HTML en PDF

IronPDF prend également en charge les URLs vers PDF et les fichiers HTML vers PDF. Ces fonctionnalités sont très utiles dans un logiciel où la gestion des documents est importante. IronPDF offre une large gamme de fonctionnalités pour la création et la manipulation de PDF, ce qui en fait un outil puissant pour les développeurs.

6.2 HTML en PDF en utilisant ComPDFKit C

ComPDFKit ne prend pas directement en charge la conversion HTML en PDF dans son SDK C#. Au lieu de cela, il offre une API distincte spécifiquement pour cet objectif. Cette API vous permet d'effectuer des conversions HTML en PDF en faisant des requêtes HTTP vers leur service.

Pour utiliser l'API HTML vers PDF de ComPDFKit, vous suivriez généralement ces étapes :

  1. Envoyer le contenu HTML : Créez une requête HTTP POST vers le point de terminaison API de ComPDFKit avec votre contenu HTML.
  2. Recevoir la sortie PDF : L'API traite le contenu HTML et renvoie le fichier PDF généré.

Voici un exemple de structure que vous pourriez utiliser pour une telle demande en C# :

using System;
using System.Net.Http;
using System.Threading.Tasks;

public class HtmlToPdfExample
{
    public static async Task ConvertHtmlToPdfAsync()
    {
        using (var client = new HttpClient())
        {
            var content = new StringContent("<h1>Hello World</h1>");
            var response = await client.PostAsync("https://api.compdfkit.com/html-to-pdf", content);
            var pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
        }
    }
}
using System;
using System.Net.Http;
using System.Threading.Tasks;

public class HtmlToPdfExample
{
    public static async Task ConvertHtmlToPdfAsync()
    {
        using (var client = new HttpClient())
        {
            var content = new StringContent("<h1>Hello World</h1>");
            var response = await client.PostAsync("https://api.compdfkit.com/html-to-pdf", content);
            var pdfBytes = await response.Content.ReadAsByteArrayAsync();
            System.IO.File.WriteAllBytes("output.pdf", pdfBytes);
        }
    }
}
Imports System
Imports System.Net.Http
Imports System.Threading.Tasks

Public Class HtmlToPdfExample
	Public Shared Async Function ConvertHtmlToPdfAsync() As Task
		Using client = New HttpClient()
			Dim content = New StringContent("<h1>Hello World</h1>")
			Dim response = Await client.PostAsync("https://api.compdfkit.com/html-to-pdf", content)
			Dim pdfBytes = Await response.Content.ReadAsByteArrayAsync()
			System.IO.File.WriteAllBytes("output.pdf", pdfBytes)
		End Using
	End Function
End Class
$vbLabelText   $csharpLabel

C'est une démonstration uniquement, que nous pouvons utiliser une API de cette manière dans le programme C#. Il n'y a pas de manière spécifique de l'utiliser pour C# dans la documentation de ComPDFKit.

Prise en charge du cadre CSS Bootstrap pour la génération de PDF

Les applications modernes de commerce électronique et professionnelles utilisent extensivement Bootstrap pour un design d'interface utilisateur cohérent. Lors de la génération de factures, reçus et rapports en formats PDF, maintenir le style Bootstrap est essentiel pour la cohérence de la marque. Le moteur Chromium d'IronPDF fournit une prise en charge complète de Bootstrap, tandis que l'approche basée sur l'API de ComPDFKit a des limitations avec les cadres CSS complexes.

IronPDF : Rendu natif de Bootstrap avec Chromium

IronPDF exploite toute la puissance du moteur de rendu Chromium, offrant un support pixel-parfait de Bootstrap sur toutes les versions (Bootstrap 5, 4 et 3). La bibliothèque gère de manière transparente les mises en page Flexbox, la grille CSS, les utilitaires réactifs et les composants personnalisés.

using IronPdf;

// Set license
IronPdf.License.LicenseKey = "License-Key";

var renderer = new ChromePdfRenderer();

// Bootstrap 5 e-commerce invoice example
string bootstrapInvoice = @"
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        @page { margin: 20mm; }
        .invoice-header { border-bottom: 3px solid #0d6efd; }
        .product-row { border-bottom: 1px solid #dee2e6; }
        .total-section { background-color: #f8f9fa; }
    </style>
</head>
<body>
    <div class='container-fluid p-4'>
        <!-- Invoice Header -->
        <div class='row invoice-header pb-4 mb-4'>
            <div class='col-8'>
                <h1 class='display-4 text-primary'>INVOICE</h1>
                <p class='text-muted mb-0'>TechStore Inc.</p>
                <p class='text-muted mb-0'>123 Commerce Street, Tech City, TC 12345</p>
                <p class='text-muted'>Email: sales@techstore.com | Phone: (555) 123-4567</p>
            </div>
            <div class='col-4 text-end'>
                <p class='mb-1'><strong>Invoice #:</strong> INV-2024-1089</p>
                <p class='mb-1'><strong>Date:</strong> October 27, 2024</p>
                <p class='mb-1'><strong>Due Date:</strong> November 27, 2024</p>
                <span class='badge bg-success'>PAID</span>
            </div>
        </div>

        <!-- Bill To Section -->
        <div class='row mb-4'>
            <div class='col-6'>
                <h5 class='text-primary'>Bill To:</h5>
                <p class='mb-1'><strong>Acme Corporation</strong></p>
                <p class='mb-1'>456 Business Ave</p>
                <p class='mb-1'>Enterprise City, EC 67890</p>
                <p class='mb-0'>contact@acmecorp.com</p>
            </div>
            <div class='col-6 text-end'>
                <h5 class='text-primary'>Payment Method:</h5>
                <p class='mb-1'>Credit Card ending in 4242</p>
                <p class='mb-0'>Transaction ID: TXN-9876543210</p>
            </div>
        </div>

        <!-- Products Table -->
        <div class='row mb-4'>
            <div class='col-12'>
                <table class='table'>
                    <thead class='table-primary'>
                        <tr>
                            <th scope='col'>#</th>
                            <th scope='col'>Product</th>
                            <th scope='col'>Description</th>
                            <th scope='col' class='text-center'>Qty</th>
                            <th scope='col' class='text-end'>Unit Price</th>
                            <th scope='col' class='text-end'>Amount</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class='product-row'>
                            <td>1</td>
                            <td><strong>IronPDF Pro License</strong></td>
                            <td>Professional developer license with 1 year support</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$2,999.00</td>
                            <td class='text-end'><strong>$2,999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>2</td>
                            <td><strong>Priority Support</strong></td>
                            <td>24/7 priority technical support package</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$999.00</td>
                            <td class='text-end'><strong>$999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>3</td>
                            <td><strong>Training Package</strong></td>
                            <td>On-site developer training (2 days)</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$1,500.00</td>
                            <td class='text-end'><strong>$1,500.00</strong></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>

        <!-- Totals Section -->
        <div class='row justify-content-end mb-4'>
            <div class='col-md-6'>
                <div class='card total-section'>
                    <div class='card-body'>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Subtotal:</strong></div>
                            <div class='col-6 text-end'>$5,498.00</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Tax (8.5%):</strong></div>
                            <div class='col-6 text-end'>$467.33</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6 text-success'><strong>Discount (10%):</strong></div>
                            <div class='col-6 text-end text-success'>-$549.80</div>
                        </div>
                        <hr>
                        <div class='row'>
                            <div class='col-6'><h4 class='text-primary'>Total:</h4></div>
                            <div class='col-6 text-end'><h4 class='text-primary'>$5,415.53</h4></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Payment Terms -->
        <div class='row mb-4'>
            <div class='col-12'>
                <div class='alert alert-info' role='alert'>
                    <h6 class='alert-heading'>Payment Terms</h6>
                    <p class='mb-0'>Payment is due within 30 days. Late payments may incur a 1.5% monthly interest charge. Thank you for your business!</p>
                </div>
            </div>
        </div>

        <!-- Footer -->
        <div class='row border-top pt-3'>
            <div class='col-12 text-center text-muted'>
                <small>TechStore Inc. | Tax ID: 12-3456789 | All prices in USD</small>
            </div>
        </div>
    </div>
</body>
</html>";

// Render PDF with optimized settings
var pdf = renderer.RenderHtmlAsPdf(bootstrapInvoice);

// Add metadata for document management
pdf.MetaData.Title = "Invoice INV-2024-1089";
pdf.MetaData.Author = "TechStore Inc.";
pdf.MetaData.Subject = "Sales Invoice";
pdf.MetaData.Keywords = "invoice, payment, e-commerce";

// Save the invoice
pdf.SaveAs("invoice-with-bootstrap.pdf");
using IronPdf;

// Set license
IronPdf.License.LicenseKey = "License-Key";

var renderer = new ChromePdfRenderer();

// Bootstrap 5 e-commerce invoice example
string bootstrapInvoice = @"
<!DOCTYPE html>
<html lang='en'>
<head>
    <meta charset='utf-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1'>
    <link href='https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css' rel='stylesheet'>
    <style>
        @page { margin: 20mm; }
        .invoice-header { border-bottom: 3px solid #0d6efd; }
        .product-row { border-bottom: 1px solid #dee2e6; }
        .total-section { background-color: #f8f9fa; }
    </style>
</head>
<body>
    <div class='container-fluid p-4'>
        <!-- Invoice Header -->
        <div class='row invoice-header pb-4 mb-4'>
            <div class='col-8'>
                <h1 class='display-4 text-primary'>INVOICE</h1>
                <p class='text-muted mb-0'>TechStore Inc.</p>
                <p class='text-muted mb-0'>123 Commerce Street, Tech City, TC 12345</p>
                <p class='text-muted'>Email: sales@techstore.com | Phone: (555) 123-4567</p>
            </div>
            <div class='col-4 text-end'>
                <p class='mb-1'><strong>Invoice #:</strong> INV-2024-1089</p>
                <p class='mb-1'><strong>Date:</strong> October 27, 2024</p>
                <p class='mb-1'><strong>Due Date:</strong> November 27, 2024</p>
                <span class='badge bg-success'>PAID</span>
            </div>
        </div>

        <!-- Bill To Section -->
        <div class='row mb-4'>
            <div class='col-6'>
                <h5 class='text-primary'>Bill To:</h5>
                <p class='mb-1'><strong>Acme Corporation</strong></p>
                <p class='mb-1'>456 Business Ave</p>
                <p class='mb-1'>Enterprise City, EC 67890</p>
                <p class='mb-0'>contact@acmecorp.com</p>
            </div>
            <div class='col-6 text-end'>
                <h5 class='text-primary'>Payment Method:</h5>
                <p class='mb-1'>Credit Card ending in 4242</p>
                <p class='mb-0'>Transaction ID: TXN-9876543210</p>
            </div>
        </div>

        <!-- Products Table -->
        <div class='row mb-4'>
            <div class='col-12'>
                <table class='table'>
                    <thead class='table-primary'>
                        <tr>
                            <th scope='col'>#</th>
                            <th scope='col'>Product</th>
                            <th scope='col'>Description</th>
                            <th scope='col' class='text-center'>Qty</th>
                            <th scope='col' class='text-end'>Unit Price</th>
                            <th scope='col' class='text-end'>Amount</th>
                        </tr>
                    </thead>
                    <tbody>
                        <tr class='product-row'>
                            <td>1</td>
                            <td><strong>IronPDF Pro License</strong></td>
                            <td>Professional developer license with 1 year support</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$2,999.00</td>
                            <td class='text-end'><strong>$2,999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>2</td>
                            <td><strong>Priority Support</strong></td>
                            <td>24/7 priority technical support package</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$999.00</td>
                            <td class='text-end'><strong>$999.00</strong></td>
                        </tr>
                        <tr class='product-row'>
                            <td>3</td>
                            <td><strong>Training Package</strong></td>
                            <td>On-site developer training (2 days)</td>
                            <td class='text-center'>1</td>
                            <td class='text-end'>$1,500.00</td>
                            <td class='text-end'><strong>$1,500.00</strong></td>
                        </tr>
                    </tbody>
                </table>
            </div>
        </div>

        <!-- Totals Section -->
        <div class='row justify-content-end mb-4'>
            <div class='col-md-6'>
                <div class='card total-section'>
                    <div class='card-body'>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Subtotal:</strong></div>
                            <div class='col-6 text-end'>$5,498.00</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6'><strong>Tax (8.5%):</strong></div>
                            <div class='col-6 text-end'>$467.33</div>
                        </div>
                        <div class='row mb-2'>
                            <div class='col-6 text-success'><strong>Discount (10%):</strong></div>
                            <div class='col-6 text-end text-success'>-$549.80</div>
                        </div>
                        <hr>
                        <div class='row'>
                            <div class='col-6'><h4 class='text-primary'>Total:</h4></div>
                            <div class='col-6 text-end'><h4 class='text-primary'>$5,415.53</h4></div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- Payment Terms -->
        <div class='row mb-4'>
            <div class='col-12'>
                <div class='alert alert-info' role='alert'>
                    <h6 class='alert-heading'>Payment Terms</h6>
                    <p class='mb-0'>Payment is due within 30 days. Late payments may incur a 1.5% monthly interest charge. Thank you for your business!</p>
                </div>
            </div>
        </div>

        <!-- Footer -->
        <div class='row border-top pt-3'>
            <div class='col-12 text-center text-muted'>
                <small>TechStore Inc. | Tax ID: 12-3456789 | All prices in USD</small>
            </div>
        </div>
    </div>
</body>
</html>";

// Render PDF with optimized settings
var pdf = renderer.RenderHtmlAsPdf(bootstrapInvoice);

// Add metadata for document management
pdf.MetaData.Title = "Invoice INV-2024-1089";
pdf.MetaData.Author = "TechStore Inc.";
pdf.MetaData.Subject = "Sales Invoice";
pdf.MetaData.Keywords = "invoice, payment, e-commerce";

// Save the invoice
pdf.SaveAs("invoice-with-bootstrap.pdf");
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

Fonctionnalités clés de Bootstrap démontrées :

  • Système de grilles : classes row et col-* pour une structure de mise en page réactive
  • Typographie : display-4, text-muted, h5 pour le style hiérarchique du texte
  • Tableaux : table, table-primary, table-hover pour l'affichage structuré des données
  • Cartes : card et card-body pour la section des totaux avec un style d'arrière-plan
  • Badges : badge bg-success pour les indicateurs d'état de paiement
  • Alertes : alert alert-info pour les notifications des termes de paiement
  • Utilitaires : text-end, text-center, mb-, pb- pour des utilitaires de marge
  • Style personnalisé : Combiné avec des classes Bootstrap pour la conception spécifique de factures

Le moteur Chromium d'IronPDF garantit le rendu parfait des composants Bootstrap, maintenant la cohérence de la marque entre les documents web et PDF.

Pour un dépannage complet des mises en page Bootstrap dans la génération de PDF, y compris les problèmes de Flexbox et de design réactif, consultez : Dépannage des problèmes de Flexbox et CSS de Bootstrap.

ComPDFKit : Limitations du traitement HTML basé sur l'API

La conversion HTML en PDF de ComPDFKit repose sur des appels API externes plutôt que sur un rendu intégré. Alors que cette approche peut gérer un style Bootstrap de base, elle présente plusieurs limitations :

  • Dépendance réseau : Nécessite des requêtes HTTP vers des services externes
  • Support des cadres CSS : Peut ne pas prendre entièrement en charge des mises en page complexes utilisant Flexbox ou la grille CSS
  • Cohérence du rendu : Les résultats peuvent varier en fonction de l'implémentation du service API
  • Style personnalisé : Contrôle limité sur le rendu des composants Bootstrap
  • Performance : La latence du réseau ajoute une surcharge à la génération de documents

Pour les applications nécessitant un rendu Bootstrap fiable avec un contrôle total sur le style et la mise en page, le rendu natif Chromium fournit des résultats supérieurs.

7. Filigrane sur PDF

Le filigranage d'un PDF est une pratique essentielle pour de nombreuses raisons. Elle aide à protéger l'intégrité du document, affirme la propriété, et ajoute une couche de sécurité. Les filigranes peuvent être des textes, des logos ou des images qui apparaissent soit en arrière-plan soit en premier plan du document. Ils dissuadent l'utilisation, la copie et la distribution non autorisées du contenu. En outre, les filigranes peuvent transmettre des informations importantes telles que le statut du document (par exemple, « Confidentiel », « Brouillon », « Approuvé ») ou l'identité du créateur.

7.1 Filigrane utilisant IronPDF

IronPDF offre une méthode simple pour ajouter des filigranes aux documents PDF de manière programmatique. Cette fonctionnalité est intégrée à la bibliothèque, permettant aux développeurs d'appliquer des filigranes en utilisant du code en C#.

using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Code";

        string watermarkHtml = @"
            <img style='width: 500px;' src='C:\Users\Tayyab Ali\Desktop\watermark.png'>
            <h1>IronPDF Watermark</h1>";

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>It's a PDF with a watermark</h1>");
        // Apply watermark with 30 degrees rotation and 50% opacity
        pdf.ApplyWatermark(watermarkHtml, rotation: 30, opacity: 50);
        pdf.SaveAs("Confidential.pdf");
    }
}
using IronPdf;
using IronPdf.Editing;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Code";

        string watermarkHtml = @"
            <img style='width: 500px;' src='C:\Users\Tayyab Ali\Desktop\watermark.png'>
            <h1>IronPDF Watermark</h1>";

        ChromePdfRenderer renderer = new ChromePdfRenderer();
        PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>It's a PDF with a watermark</h1>");
        // Apply watermark with 30 degrees rotation and 50% opacity
        pdf.ApplyWatermark(watermarkHtml, rotation: 30, opacity: 50);
        pdf.SaveAs("Confidential.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Editing

Friend Class Program
	Shared Sub Main()
		License.LicenseKey = "License-Code"

		Dim watermarkHtml As String = "
            <img style='width: 500px;' src='C:\Users\Tayyab Ali\Desktop\watermark.png'>
            <h1>IronPDF Watermark</h1>"

		Dim renderer As New ChromePdfRenderer()
		Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>It's a PDF with a watermark</h1>")
		' Apply watermark with 30 degrees rotation and 50% opacity
		pdf.ApplyWatermark(watermarkHtml, rotation:= 30, opacity:= 50)
		pdf.SaveAs("Confidential.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Une comparaison entre Compdfkit & IronPDF : Figure 10 - Exemple de sortie ci-dessus du code montrant le filigrane ajouté avec IronPDF

Dans cet exemple, la classe ChromePdfRenderer est utilisée pour créer un PDF à partir d'une chaîne HTML. La méthode ApplyWatermark est ensuite utilisée pour appliquer un filigrane. Le filigrane se compose d'une image et d'un en-tête, tous deux définis dans la chaîne watermarkHtml. Le paramètre rotation est réglé à 30 degrés, et l'opacité est définie à 50 %, garantissant que le filigrane est visible mais n'écrase pas le contenu principal. Le PDF résultant est enregistré à un chemin spécifié.

7.2 Filigrane utilisant ComPDFKit

ComPDFKit fournit une fonctionnalité complète pour ajouter des filigranes aux documents PDF directement dans C#. Cela peut être fait de manière programmatique en utilisant les méthodes de la bibliothèque ComPDFKit. Voici un exemple de la façon d'ajouter un filigrane de texte en utilisant ComPDFKit :

static private bool AddTextWatermark(CPDFDocument document)
{
    CPDFWatermark watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
    watermark.SetText("test");
    watermark.SetFontName("Helvetica"); 
    watermark.SetPages("0-3");
    byte[] color = { 255, 0, 0 };
    watermark.SetTextRGBColor(color);
    watermark.SetScale(2);
    watermark.SetRotation(0);
    watermark.SetOpacity(120);
    watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
    watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
    watermark.SetVertOffset(0);
    watermark.SetHorizOffset(0);
    watermark.SetFront(true);
    watermark.SetFullScreen(true);
    watermark.SetVerticalSpacing(10);
    watermark.SetHorizontalSpacing(10);
    watermark.CreateWatermark();
    string path = "AddTextWatermarkTest.pdf";
    if (!document.WriteToFilePath(path))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + path);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("SamplePDF.pdf");
if (AddTextWatermark(document))
{
    Console.WriteLine("Add text watermark done.");
}
else
{
    Console.WriteLine("Add text watermark failed.");
}
static private bool AddTextWatermark(CPDFDocument document)
{
    CPDFWatermark watermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT);
    watermark.SetText("test");
    watermark.SetFontName("Helvetica"); 
    watermark.SetPages("0-3");
    byte[] color = { 255, 0, 0 };
    watermark.SetTextRGBColor(color);
    watermark.SetScale(2);
    watermark.SetRotation(0);
    watermark.SetOpacity(120);
    watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER);
    watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER);
    watermark.SetVertOffset(0);
    watermark.SetHorizOffset(0);
    watermark.SetFront(true);
    watermark.SetFullScreen(true);
    watermark.SetVerticalSpacing(10);
    watermark.SetHorizontalSpacing(10);
    watermark.CreateWatermark();
    string path = "AddTextWatermarkTest.pdf";
    if (!document.WriteToFilePath(path))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + path);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("SamplePDF.pdf");
if (AddTextWatermark(document))
{
    Console.WriteLine("Add text watermark done.");
}
else
{
    Console.WriteLine("Add text watermark failed.");
}
Private Shared Function AddTextWatermark(ByVal document As CPDFDocument) As Boolean
	Dim watermark As CPDFWatermark = document.InitWatermark(C_Watermark_Type.WATERMARK_TYPE_TEXT)
	watermark.SetText("test")
	watermark.SetFontName("Helvetica")
	watermark.SetPages("0-3")
	Dim color() As Byte = { 255, 0, 0 }
	watermark.SetTextRGBColor(color)
	watermark.SetScale(2)
	watermark.SetRotation(0)
	watermark.SetOpacity(120)
	watermark.SetVertalign(C_Watermark_Vertalign.WATERMARK_VERTALIGN_CENTER)
	watermark.SetHorizalign(C_Watermark_Horizalign.WATERMARK_HORIZALIGN_CENTER)
	watermark.SetVertOffset(0)
	watermark.SetHorizOffset(0)
	watermark.SetFront(True)
	watermark.SetFullScreen(True)
	watermark.SetVerticalSpacing(10)
	watermark.SetHorizontalSpacing(10)
	watermark.CreateWatermark()
	Dim path As String = "AddTextWatermarkTest.pdf"
	If Not document.WriteToFilePath(path) Then
		Return False
	End If
	Console.WriteLine("Browse the changed file in " & path)
	Return True
End Function

Private document As CPDFDocument = CPDFDocument.InitWithFilePath("SamplePDF.pdf")
If AddTextWatermark(document) Then
	Console.WriteLine("Add text watermark done.")
Else
	Console.WriteLine("Add text watermark failed.")
End If
$vbLabelText   $csharpLabel

Une comparaison entre Compdfkit & IronPDF : Figure 11 - Exemple ci-dessus du code montrant le filigrane ajouté avec ComPDFKit

Dans cet exemple, la classe CPDFDocument est utilisée pour ouvrir un document PDF existant. La méthode AddTextWatermark initialise un filigrane de texte en utilisant la méthode InitWatermark. Diverses propriétés du filigrane sont définies, telles que le contenu du texte, la police, la couleur, l'échelle, la rotation, l'opacité, l'alignement et l'espacement. Le filigrane est ensuite créé et appliqué aux pages spécifiées du document PDF. Enfin, le PDF modifié est enregistré à un chemin spécifié. Différentes méthodes sont nécessaires pour intégrer des filigranes d'images.

8. PDFA

PDF/A est une version standardisée du PDF conçue pour la préservation numérique à long terme de documents électroniques. Garantir que les documents sont conformes à PDF/A assure qu'ils peuvent être correctement visualisés et reproduits à l'avenir. Cette section explore comment créer des documents conformes PDF/A en utilisant deux bibliothèques populaires : IronPDF et ComPDFKit.

8.1 PDFA utilisant IronPDF

IronPDF simplifie le processus de conversion des documents PDF standard en documents conformes PDF/A. Avec IronPDF, vous pouvez facilement charger un PDF existant et l'enregistrer dans un format conforme PDF/A.

using IronPdf;
using System;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key";
        PdfDocument pdf = PdfDocument.FromFile("Source.pdf");
        pdf.SaveAsPdfA("pdfa-compliant.pdf", PdfAVersions.PdfA3);
    }
}
using IronPdf;
using System;

class Program
{
    static void Main()
    {
        License.LicenseKey = "License-Key";
        PdfDocument pdf = PdfDocument.FromFile("Source.pdf");
        pdf.SaveAsPdfA("pdfa-compliant.pdf", PdfAVersions.PdfA3);
    }
}
Imports IronPdf
Imports System

Friend Class Program
	Shared Sub Main()
		License.LicenseKey = "License-Key"
		Dim pdf As PdfDocument = PdfDocument.FromFile("Source.pdf")
		pdf.SaveAsPdfA("pdfa-compliant.pdf", PdfAVersions.PdfA3)
	End Sub
End Class
$vbLabelText   $csharpLabel

Voici un aperçu du processus :

  1. Initialiser IronPDF : Commencez par importer la bibliothèque IronPDF et définissez votre clé de licence.
  2. Charger le PDF : Utilisez PdfDocument.FromFile pour charger votre fichier PDF source.
  3. Convertir et Enregistrer : Convertissez le PDF chargé en PDF/A en spécifiant la version PDF/A souhaitée et en enregistrant le document résultant.

Cette approche simple fait de IronPDF un choix pratique pour gérer les conversions PDF/A.

8.2 PDFA utilisant ComPDFKit

ComPDFKit fournit une solution robuste pour convertir les PDFs au format PDF/A. Le processus implique d'initialiser un document PDF, de définir le chemin de sortie, et d'invoquer la méthode de conversion.

static public bool CovertToPDFA1a(CPDFDocument document)
{
    string convertToPDFA1aPath = "ConvertToPDFA1aTest.pdf";
    if (!document.WritePDFAToFilePath(CPDFType.CPDFTypePDFA1a, convertToPDFA1aPath))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + convertToPDFA1aPath);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");
if (CovertToPDFA1a(document))
{
    Console.WriteLine("Convert to PDF/A-1a done.");
}
else
{
    Console.WriteLine("Convert to PDF/A-1a failed.");
}
static public bool CovertToPDFA1a(CPDFDocument document)
{
    string convertToPDFA1aPath = "ConvertToPDFA1aTest.pdf";
    if (!document.WritePDFAToFilePath(CPDFType.CPDFTypePDFA1a, convertToPDFA1aPath))
    {
        return false;
    }
    Console.WriteLine("Browse the changed file in " + convertToPDFA1aPath);
    return true;
}

CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");
if (CovertToPDFA1a(document))
{
    Console.WriteLine("Convert to PDF/A-1a done.");
}
else
{
    Console.WriteLine("Convert to PDF/A-1a failed.");
}
Public Shared Function CovertToPDFA1a(ByVal document As CPDFDocument) As Boolean
	Dim convertToPDFA1aPath As String = "ConvertToPDFA1aTest.pdf"
	If Not document.WritePDFAToFilePath(CPDFType.CPDFTypePDFA1a, convertToPDFA1aPath) Then
		Return False
	End If
	Console.WriteLine("Browse the changed file in " & convertToPDFA1aPath)
	Return True
End Function

Private document As CPDFDocument = CPDFDocument.InitWithFilePath("CommonFivePage.pdf")
If CovertToPDFA1a(document) Then
	Console.WriteLine("Convert to PDF/A-1a done.")
Else
	Console.WriteLine("Convert to PDF/A-1a failed.")
End If
$vbLabelText   $csharpLabel

Voici un résumé des étapes :

  1. Initialiser le Document : Chargez le document PDF en utilisant CPDFDocument.InitWithFilePath.
  2. Configurer le Répertoire de Sortie : Assurez-vous que le répertoire de sortie existe ou créez-le si nécessaire.
  3. Convertir en PDF/A : Utilisez WritePDFAToFilePath avec le type PDF/A spécifié pour réaliser la conversion et enregistrer le fichier.

9. Signature Numérique

Les signatures numériques sont essentielles pour vérifier l'authenticité et l'intégrité des documents. Cette section démontre comment ajouter des signatures numériques aux PDFs en utilisant IronPDF et ComPDFKit.

9.1 Signature Numérique par IronPDF

IronPDF fournit une méthode simple et efficace pour appliquer des signatures numériques aux documents PDF.

using IronPdf;
using IronPdf.Signing;

class Program
{
    static void Main(string[] args)
    {
        var simpleSignature = new PdfSignature("MyCert.p12", "newpassword");
        simpleSignature.SignPdfFile("sample.pdf");
    }
}
using IronPdf;
using IronPdf.Signing;

class Program
{
    static void Main(string[] args)
    {
        var simpleSignature = new PdfSignature("MyCert.p12", "newpassword");
        simpleSignature.SignPdfFile("sample.pdf");
    }
}
Imports IronPdf
Imports IronPdf.Signing

Friend Class Program
	Shared Sub Main(ByVal args() As String)
		Dim simpleSignature = New PdfSignature("MyCert.p12", "newpassword")
		simpleSignature.SignPdfFile("sample.pdf")
	End Sub
End Class
$vbLabelText   $csharpLabel

Le processus implique :

  1. Initialiser IronPDF : Importez les bibliothèques nécessaires d'IronPDF.
  2. Créer une Signature : Initialisez un objet de type PdfSignature avec le fichier de certificat et le mot de passe.
  3. Signer le PDF : Appliquez la signature au PDF en utilisant SignPdfFile.

Cette méthode garantit que vos documents PDF sont signés de manière sécurisée, améliorant leur crédibilité et leur sécurité.

9.2 Signature Numérique par CompDFKit

ComPDFKit offre une solution complète pour créer des signatures numériques avec des options de personnalisation étendues.

private static void CreateDigitalSignature(CPDFDocument document, string certificatePath, string password)
{
    Console.WriteLine("--------------------");
    Console.WriteLine("Create digital signature.");
    CPDFSignatureCertificate certificate = CPDFPKCS12CertHelper.GetCertificateWithPKCS12Path("Certificate.pfx", "ComPDFKit");
    CPDFPage page = document.PageAtIndex(0);
    CPDFSignatureWidget signatureField = page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS) as CPDFSignatureWidget;
    signatureField.SetRect(new CRect(28, 420, 150, 370));
    signatureField.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 });
    signatureField.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 });
    signatureField.UpdateAp();
    string name = GetGrantorFromDictionary(certificate.SubjectDict) + "\n";
    string date = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
    string reason = "I am the owner of the document.";
    string location = certificate.SubjectDict["C"];
    string DN = certificate.Subject;

    CPDFSignatureConfig signatureConfig = new CPDFSignatureConfig
    {
        Text = GetGrantorFromDictionary(certificate.SubjectDict),
        Content =
            "Name: " + name + "\n" +
            "Date: " + date + "\n" +
            "Reason: " + reason + " \n" +
            "Location: " + location + "\n" +
            "DN: " + DN + "\n",
        IsContentAlignLeft = false,
        IsDrawLogo = true,
        LogoBitmap = new Bitmap("Logo.png"),
        TextColor = new float[] { 0, 0, 0 },
        ContentColor = new float[] { 0, 0, 0 }
    };
    string filePath = document.FileName + "_Signed.pdf";
    signatureField.UpdataApWithSignature(signatureConfig);
    if (document.WriteSignatureToFilePath(signatureField,
        filePath,
        certificatePath, password,
        location,
        reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone))
    {
        Console.WriteLine("File saved in " + filePath);
        Console.WriteLine("Create digital signature done.");
    }
    else
    {
        Console.WriteLine("Create digital signature failed.");
    }
    Console.WriteLine("--------------------");
}
private static void CreateDigitalSignature(CPDFDocument document, string certificatePath, string password)
{
    Console.WriteLine("--------------------");
    Console.WriteLine("Create digital signature.");
    CPDFSignatureCertificate certificate = CPDFPKCS12CertHelper.GetCertificateWithPKCS12Path("Certificate.pfx", "ComPDFKit");
    CPDFPage page = document.PageAtIndex(0);
    CPDFSignatureWidget signatureField = page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS) as CPDFSignatureWidget;
    signatureField.SetRect(new CRect(28, 420, 150, 370));
    signatureField.SetWidgetBorderRGBColor(new byte[] { 0, 0, 0 });
    signatureField.SetWidgetBgRGBColor(new byte[] { 150, 180, 210 });
    signatureField.UpdateAp();
    string name = GetGrantorFromDictionary(certificate.SubjectDict) + "\n";
    string date = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss");
    string reason = "I am the owner of the document.";
    string location = certificate.SubjectDict["C"];
    string DN = certificate.Subject;

    CPDFSignatureConfig signatureConfig = new CPDFSignatureConfig
    {
        Text = GetGrantorFromDictionary(certificate.SubjectDict),
        Content =
            "Name: " + name + "\n" +
            "Date: " + date + "\n" +
            "Reason: " + reason + " \n" +
            "Location: " + location + "\n" +
            "DN: " + DN + "\n",
        IsContentAlignLeft = false,
        IsDrawLogo = true,
        LogoBitmap = new Bitmap("Logo.png"),
        TextColor = new float[] { 0, 0, 0 },
        ContentColor = new float[] { 0, 0, 0 }
    };
    string filePath = document.FileName + "_Signed.pdf";
    signatureField.UpdataApWithSignature(signatureConfig);
    if (document.WriteSignatureToFilePath(signatureField,
        filePath,
        certificatePath, password,
        location,
        reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone))
    {
        Console.WriteLine("File saved in " + filePath);
        Console.WriteLine("Create digital signature done.");
    }
    else
    {
        Console.WriteLine("Create digital signature failed.");
    }
    Console.WriteLine("--------------------");
}
Imports Microsoft.VisualBasic

Private Shared Sub CreateDigitalSignature(ByVal document As CPDFDocument, ByVal certificatePath As String, ByVal password As String)
	Console.WriteLine("--------------------")
	Console.WriteLine("Create digital signature.")
	Dim certificate As CPDFSignatureCertificate = CPDFPKCS12CertHelper.GetCertificateWithPKCS12Path("Certificate.pfx", "ComPDFKit")
	Dim page As CPDFPage = document.PageAtIndex(0)
	Dim signatureField As CPDFSignatureWidget = TryCast(page.CreateWidget(C_WIDGET_TYPE.WIDGET_SIGNATUREFIELDS), CPDFSignatureWidget)
	signatureField.SetRect(New CRect(28, 420, 150, 370))
	signatureField.SetWidgetBorderRGBColor(New Byte() { 0, 0, 0 })
	signatureField.SetWidgetBgRGBColor(New Byte() { 150, 180, 210 })
	signatureField.UpdateAp()
	Dim name As String = GetGrantorFromDictionary(certificate.SubjectDict) & vbLf
	Dim [date] As String = DateTime.Now.ToString("yyyy.MM.dd HH:mm:ss")
	Dim reason As String = "I am the owner of the document."
	Dim location As String = certificate.SubjectDict("C")
	Dim DN As String = certificate.Subject

	Dim signatureConfig As New CPDFSignatureConfig With {
		.Text = GetGrantorFromDictionary(certificate.SubjectDict),
		.Content = "Name: " & name & vbLf & "Date: " & [date] & vbLf & "Reason: " & reason & " " & vbLf & "Location: " & location & vbLf & "DN: " & DN & vbLf,
		.IsContentAlignLeft = False,
		.IsDrawLogo = True,
		.LogoBitmap = New Bitmap("Logo.png"),
		.TextColor = New Single() { 0, 0, 0 },
		.ContentColor = New Single() { 0, 0, 0 }
	}
	Dim filePath As String = document.FileName & "_Signed.pdf"
	signatureField.UpdataApWithSignature(signatureConfig)
	If document.WriteSignatureToFilePath(signatureField, filePath, certificatePath, password, location, reason, CPDFSignaturePermissions.CPDFSignaturePermissionsNone) Then
		Console.WriteLine("File saved in " & filePath)
		Console.WriteLine("Create digital signature done.")
	Else
		Console.WriteLine("Create digital signature failed.")
	End If
	Console.WriteLine("--------------------")
End Sub
$vbLabelText   $csharpLabel

Les étapes incluent :

  1. Initialiser le Document et le Certificat : Chargez le document PDF et récupérez le certificat en utilisant CPDFPKCS12CertHelper.
  2. Créer et Configurer le Champ de Signature : Ajoutez un champ de signature au PDF, définissez ses propriétés, et configurez les détails de la signature.
  3. Appliquer la Signature : Utilisez WriteSignatureToFilePath pour appliquer la signature et enregistrer le PDF signé.

10. Extraire le Texte

L'extraction de texte à partir de documents PDF est cruciale pour diverses tâches de traitement et d'analyse des données. Cette section explique comment extraire du texte à partir de PDFs en utilisant IronPDF et ComPDFKit.

10.1 Extraire le Texte en utilisant IronPDF

IronPDF offre une méthode simple pour extraire du texte à partir de documents PDF.

using IronPdf;
using System.IO;

PdfDocument pdf = PdfDocument.FromFile("PDF File With Text.pdf");
string text = pdf.ExtractAllText();
File.WriteAllText("PDF Text.txt", text);
using IronPdf;
using System.IO;

PdfDocument pdf = PdfDocument.FromFile("PDF File With Text.pdf");
string text = pdf.ExtractAllText();
File.WriteAllText("PDF Text.txt", text);
Imports IronPdf
Imports System.IO

Private pdf As PdfDocument = PdfDocument.FromFile("PDF File With Text.pdf")
Private text As String = pdf.ExtractAllText()
File.WriteAllText("PDF Text.txt", text)
$vbLabelText   $csharpLabel

Le processus implique :

  1. Initialiser IronPDF : Importez la bibliothèque IronPDF.
  2. Charger le PDF : Utilisez PdfDocument.FromFile pour charger le fichier PDF.
  3. Extraire le Texte : Appelez ExtractAllText pour récupérer tout le contenu texte du PDF.
  4. Enregistrer le Texte dans un Fichier : Écrivez le texte extrait dans un fichier en utilisant les opérations standard de lecture/écriture de fichiers.

Cette méthode fournit un moyen facile et efficace d'extraire et d'enregistrer le texte des documents PDF.

10.2 Extraire le Texte en utilisant ComPDFKit

ComPDFKit fournit une solution flexible pour l'extraction de texte à partir de documents PDF.

static private bool PDFToText(CPDFDocument document)
{
    string path = "//PDFToText.txt";
    if (!document.PdfToText("1-" + document.PageCount.ToString(), path))//Page ranges are counted from 1
    {
        return false;
    }
    Console.WriteLine("Browse the generated file in " + path);
    return true;
}

static void Main(string[] args)
{
    Console.WriteLine("Running PDFPage test sample…\r\n");
    SDKLicenseHelper.LicenseVerify();
    CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");

    if (PDFToText(document))
    {
        Console.WriteLine("PDF to text done.");
    }
    else
    {
        Console.WriteLine("PDF to text failed.");
    }
    Console.WriteLine("--------------------");
    Console.WriteLine("Done!");
    Console.WriteLine("--------------------");
    Console.ReadLine();
}
static private bool PDFToText(CPDFDocument document)
{
    string path = "//PDFToText.txt";
    if (!document.PdfToText("1-" + document.PageCount.ToString(), path))//Page ranges are counted from 1
    {
        return false;
    }
    Console.WriteLine("Browse the generated file in " + path);
    return true;
}

static void Main(string[] args)
{
    Console.WriteLine("Running PDFPage test sample…\r\n");
    SDKLicenseHelper.LicenseVerify();
    CPDFDocument document = CPDFDocument.InitWithFilePath("CommonFivePage.pdf");

    if (PDFToText(document))
    {
        Console.WriteLine("PDF to text done.");
    }
    else
    {
        Console.WriteLine("PDF to text failed.");
    }
    Console.WriteLine("--------------------");
    Console.WriteLine("Done!");
    Console.WriteLine("--------------------");
    Console.ReadLine();
}
Imports Microsoft.VisualBasic

Private Shared Function PDFToText(ByVal document As CPDFDocument) As Boolean
	Dim path As String = "//PDFToText.txt"
	If Not document.PdfToText("1-" & document.PageCount.ToString(), path) Then 'Page ranges are counted from 1
		Return False
	End If
	Console.WriteLine("Browse the generated file in " & path)
	Return True
End Function

Shared Sub Main(ByVal args() As String)
	Console.WriteLine("Running PDFPage test sample…" & vbCrLf)
	SDKLicenseHelper.LicenseVerify()
	Dim document As CPDFDocument = CPDFDocument.InitWithFilePath("CommonFivePage.pdf")

	If PDFToText(document) Then
		Console.WriteLine("PDF to text done.")
	Else
		Console.WriteLine("PDF to text failed.")
	End If
	Console.WriteLine("--------------------")
	Console.WriteLine("Done!")
	Console.WriteLine("--------------------")
	Console.ReadLine()
End Sub
$vbLabelText   $csharpLabel

Les étapes sont :

  1. Initialiser le Document : Chargez le document PDF en utilisant CPDFDocument.InitWithFilePath.
  2. Extraire et Enregistrer le Texte : Utilisez PdfToText pour extraire du texte à partir de la plage de pages spécifiée et l'enregistrer dans un fichier.

11. Licence

Les modèles de licence pour IronPDF et ComPDFKit diffèrent dans leur approche et leurs conditions d'utilisation. Comprendre ces différences peut vous aider à choisir l'outil approprié pour les besoins et le budget de votre projet.

11.1 Licence IronPDF

Une comparaison entre Compdfkit & IronPDF : Figure 12 - Page de licence d'IronPDF

IronPDF opère sous un modèle de licence commerciale, ce qui signifie que pour des applications commerciales ou liées aux affaires, l'achat d'une licence est généralement nécessaire. Ce modèle offre de la flexibilité, y compris des options de distribution sans redevance. Cela permet aux développeurs d'incorporer la bibliothèque dans leurs projets sans faire face à des coûts supplémentaires pendant l'exécution.

IronPDF offre des licences perpétuelles. Les licences perpétuelles nécessitent un paiement unique pour une utilisation à vie, avec des frais optionnels pour les mises à jour et le support technique au-delà de la période initiale. Ce modèle commercial assure que les entreprises reçoivent un support dédié, une documentation complète et l'accès aux fonctionnalités avancées nécessaires pour la génération et la manipulation PDF professionnelles.

11.2 Licence ComPDFKit

ComPDFKit emploie un modèle de licence flexible qui répond à divers besoins commerciaux. Il offre à la fois des licences perpétuelles et des licences d'abonnement. Une licence perpétuelle implique un paiement unique accordant un accès à vie au SDK, avec des frais optionnels pour les mises à jour et le support prolongé. Les licences d'abonnement nécessitent des paiements réguliers (mensuels ou annuels) et incluent un accès continu aux mises à jour et au support.

Lors de votre décision entre IronPDF et ComPDFKit, considérez les exigences spécifiques de votre projet, telles que le besoin de support dédié, les contraintes de budget et l'échelle de déploiement. Le modèle commercial d'IronPDF est plus adapté aux entreprises cherchant un support robuste et des fonctionnalités avancées.

12. Documentation et Support

12.1. Documentation et Support IronPDF

IronPDF offre une documentation complète et des options de support robustes pour ses utilisateurs. La documentation est extensive et détaillée, fournissant des orientations claires sur l'installation, l'utilisation de base, les fonctionnalités avancées et le dépannage. La documentation officielle est disponible sur Read the Docs, qui inclut un guide de démarrage rapide, des références API détaillées, et de nombreux exemples de code pour aider les développeurs à démarrer et utiliser efficacement les fonctionnalités d'IronPDF.

IronPDF maintient également un guide de dépannage actif et un site de support technique via son blog et sa section d'exemple, où les utilisateurs peuvent trouver des solutions à des problèmes communs, tels que les retards de rendu et les défis de déploiement. Le site de support comprend une collection d'articles répondant aux questions fréquemment posées et aux problèmes techniques spécifiques.

Pour un soutien direct, IronPDF offre une équipe de service client réactive qui peut être contactée pour des problèmes plus complexes ou une assistance personnalisée. Cette combinaison de documentation extensive et d'infrastructure de support solide fait d'IronPDF un choix fiable pour les développeurs cherchant à intégrer des fonctionnalités PDF dans leurs applications.

12.2. Documentation et Support de ComPDFKit

ComPDFKit fournit également une documentation complète et des ressources de support pour ses utilisateurs. Il couvre divers aspects de l'utilisation du SDK, depuis la configuration de base jusqu'aux fonctionnalités avancées comme le filigranage et les signatures numériques. Pour le support, ComPDFKit fournit une assistance technique par l'intermédiaire de ses canaux de service client. L'équipe de support est disponible pour aider à résoudre les problèmes techniques, répondre aux questions et fournir des conseils sur l'utilisation efficace du SDK.

Bien que tant IronPDF que ComPDFKit offrent une documentation et un support de qualité, IronPDF a un avantage grâce à ses guides de dépannage plus complets et une équipe de support hautement réactive. Cela en fait un atout particulièrement pour les développeurs qui pourraient rencontrer des défis techniques complexes et avoir besoin d'une assistance fiable.

13. Conclusion

La comparaison entre IronPDF et ComPDFKit met en évidence les points forts et les considérations pour les développeurs cherchant des bibliothèques C# robustes pour la génération et la manipulation de PDF.

ComPDFKit est un SDK PDF complet qui prend en charge une large gamme de fonctionnalités nécessaires pour manipuler des documents PDF de manière programmée. Il excelle dans les annotations PDF et possède de vastes capacités d'édition. Ses fonctionnalités telles que la conversion de formats et les options de sécurité ajoutent une valeur significative pour les développeurs.

IronPDF, quant à lui, est connu pour son API puissante et conviviale. Il simplifie la génération de PDF en rendant des PDFs à partir d'HTML, CSS et JavaScript. IronPDF excelle dans la conversion de HTML en PDF, offrant une intégration transparente avec les applications .NET. La bibliothèque offre des capacités d'édition étendues, y compris l'ajout d'en-têtes, de pieds de page, de filigranes et de signatures numériques.

Les fonctionnalités de sécurité d'IronPDF garantissent que les informations sensibles contenues dans les documents PDF sont bien protégées. Son support pour plusieurs plateformes .NET et ses performances optimisées pour des charges de travail élevées en font un choix idéal pour les applications de niveau entreprise. Le modèle de licence commerciale d'IronPDF assure un support dédié, une documentation complète et un accès à des fonctionnalités avancées, ce qui le rend particulièrement adapté aux projets de qualité professionnelle.

IronPDF se distingue comme une option solide par rapport à ComPDFKit pour les développeurs à la recherche d'une bibliothèque PDF complète et riche en fonctionnalités. Ses fonctionnalités avancées, son API conviviale et son infrastructure de support robuste en font une solution de choix pour les entreprises et les projets aux exigences diverses et exigeantes en matière de PDF. Les capacités étendues et le support dédié d'IronPDF offrent un avantage significatif, garantissant une génération et une manipulation de PDF fiables et efficaces pour les applications professionnelles.

En résumé, tant IronPDF que ComPDFKit sont des outils puissants pour le traitement de PDF en C#. Cependant, l'ensemble de fonctionnalités étendu, les performances optimisées et le support supérieur d'IronPDF en font le choix préféré des développeurs visant des applications professionnelles et de niveau entreprise.

IronPDF propose une licence d'essai gratuite pour permettre aux utilisateurs d'essayer la bibliothèque et ses capacités. Les licences IronPDF débutent à partir de $799. Additionally, Iron Software bundles nine libraries for the cost of two, which includes IronXL and IronOCR along with IronPDF.

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

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 PDF. Cette méthode est adaptée pour convertir HTML, CSS et JavaScript en documents PDF de haute qualité.

Quels sont les avantages d'utiliser une bibliothèque PDF C# ?

Les bibliothèques PDF C# comme IronPDF et ComPDFKit permettent la création, la modification et l'extraction de texte/image des PDF. Elles prennent en charge des fonctionnalités telles que la gestion des formulaires, les signatures numériques et la sécurité, offrant de la flexibilité sur différentes plateformes.

Puis-je ajouter de la sécurité à mes PDF en C# ?

Oui, en utilisant IronPDF, vous pouvez améliorer la sécurité des PDF en définissant des mots de passe, en cryptant les documents et en ajoutant des signatures numériques pour protéger les informations sensibles.

Comment ComPDFKit gère-t-il l'édition et la conversion de PDF ?

ComPDFKit offre des capacités d'édition de PDF robustes et une conversion vers divers formats, y compris PDF/A pour la préservation numérique à long terme, ce qui le rend polyvalent pour les projets multiplateformes.

Quelles options de licence sont disponibles pour les bibliothèques PDF C# ?

IronPDF propose un modèle de licence commerciale avec licences perpétuelles, tandis que ComPDFKit propose à la fois des licences perpétuelles et des abonnements, permettant une flexibilité en fonction des besoins de l'entreprise.

Quels supports et ressources sont disponibles pour les développeurs utilisant ces bibliothèques ?

IronPDF fournit une documentation complète et un support client réactif, le rendant adapté aux applications de niveau entreprise. ComPDFKit offre également une documentation approfondie et un support technique.

Comment IronPDF et ComPDFKit se comparent-ils en termes de conversion HTML en PDF ?

IronPDF excelle dans la conversion HTML en PDF, prenant en charge les chaînes HTML, les URLs, les formulaires web ASPX et les vues MVC, tandis que ComPDFKit propose une gamme plus large de fonctionnalités d'édition et de conversion PDF.

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