COMPARAISON DES PRODUITS

Une comparaison entre Report .NET et IronPDF for .NET

Publié avril 29, 2024
Partager:

Dans cet article, nous allons examiner de près deux bibliothèques C# populaires utilisées pour travailler avec des fichiers PDF :IronPDF - The .NET PDF Library for C# Developers (en anglais) etReport.NET. Ces outils sont essentiels pour les développeurs qui ont besoin de créer, de modifier ou d'interagir avec des documents PDF par le biais de leurs applications C#. Les deux bibliothèques offrent une série de fonctionnalités conçues pour faciliter la manipulation des PDF et la rendre plus efficace, mais elles le font de manière différente.

IronPDF et Report.NET permettent aux développeurs de générer dynamiquement des documents, de modifier le contenu et d'extraire du texte et des images des PDF. Ils permettent également le traitement des formulaires, l'ajout de signatures numériques et garantissent que les applications peuvent traiter les PDF sur différentes plateformes sans perdre la fidélité du document. Cela signifie que, quel que soit l'appareil ou le système d'exploitation, les PDF s'afficheront et fonctionneront comme prévu.

Tout au long de cette comparaison, nous nous pencherons sur les caractéristiques spécifiques de chaque bibliothèque, sur leur fonctionnement, nous fournirons des extraits de code pour illustrer la manière dont elles peuvent être utilisées et nous discuterons de leurs conditions de licence. Cette comparaison vise à donner aux développeurs une compréhension claire de ce que chaque bibliothèque peut faire, en les aidant à décider laquelle pourrait être la mieux adaptée aux exigences de leur projet. Décortiquons les capacités et les différences entre IronPDF et Report.NET, en nous concentrant sur la simplicité et les aspects pratiques pour les développeurs.

1. Bibliothèque Report.NET C

Report.NET est une bibliothèque C# robuste conçue pour aider les développeurs à créer, gérer et manipuler des documents PDF directement dans leurs applications .NET. Cet outil est connu pour son approche simple de la génération et de la manipulation de PDF, permettant la création de documents PDF complexes à partir de zéro ou la modification de documents existants. Ses capacités vont du simple ajout de texte à l'incorporation d'images et de formes, ce qui en fait un choix polyvalent pour les développeurs qui cherchent à mettre en œuvre des fonctionnalités PDF dans leurs projets.

1.1 Caractéristiques principales de Report.NET

1.1.1 Création et édition de documents

Report.NET brille par sa capacité à créer de nouveaux documents PDF et à modifier des documents existants. Les développeurs peuvent facilement ajouter du texte, des images et des graphiques, ce qui permet de produire des documents détaillés et visuellement attrayants.

1.1.2 Flexibilité dans la gestion du contenu

Cette bibliothèque permet un contrôle précis du contenu du document, y compris la mise en forme du texte, l'emplacement des images et les éléments graphiques. Ce niveau de contrôle permet de s'assurer que le PDF final ressemble exactement à ce qui était prévu.

1.1.3 Facilité d'utilisation

En mettant l'accent sur la simplicité, Report.NET simplifie le processus de génération de PDF, le rendant accessible même à ceux qui n'ont pas l'habitude de travailler avec des PDF dans un contexte de programmation.

1.1.4 Compatibilité entre les plates-formes

Report.NET est conçu pour fonctionner de manière transparente sur la plateforme .NET, y compris .NET Core, ce qui garantit que les applications peuvent générer et gérer des PDF quel que soit le système d'exploitation.

1.1.5 Personnalisation et style

La bibliothèque offre des options de personnalisation étendues pour les documents PDF, permettant aux développeurs d'ajuster la mise en page, le style et l'apparence générale pour répondre à leurs besoins spécifiques.

1.1.6 Source ouverte

En tant qu'outil open-source, Report.NET bénéficie des contributions de la communauté, ce qui lui permet de rester à jour et de recevoir de nouvelles fonctionnalités au fil du temps. Ce soutien de la communauté signifie également que les développeurs peuvent accéder à une mine de connaissances et de ressources.

2. Bibliothèque IronPDF C

IronPDF est une bibliothèque .NET complète conçue pour faciliter la création, la manipulation et le rendu des documents PDF dans les applications .NET. Cet outil se distingue par sa capacité à gérer à la fois la génération de PDF à partir de HTML et l'édition directe de fichiers PDF existants. Il est très utile pour créer des rapports. IronPDF s'intègre également sans problème à SQL Server Reporting Services. Nous pouvons créer un concepteur de rapports pour l'utilisateur final avec IronPDF afin de créer un outil de création de rapports et une visionneuse de rapports.

2.1 Caractéristiques principales d'IronPDF

2.1.1 Conversion de HTML en PDF

L'un des principaux atouts d'IronPDF est sa capacité à convertirHTML et CSS dans les documents PDF. Cette fonction est inestimable pour les développeurs qui cherchent à transformer un contenu web dans un format portable tout en préservant la conception et la mise en page d'origine.

2.1.2 Manipulation des PDF

IronPDF excelle à fournir aux développeurs des outils pour éditer et manipuler les documents PDF. Il s'agit notamment d'ajouter ou de supprimer des pages, de modifier le texte et deintégration d'images. Nous pouvons également extraire les données des rapports à l'aide d'IronPDF.

2.1.3 Traitement des formulaires

La bibliothèque permet de créer et d'éditer desFormulaires PDFpermettant aux utilisateurs d'interagir avec les documents de manière dynamique. Cette fonctionnalité est cruciale pour les applications qui requièrent des données de la part des utilisateurs finaux, telles que les enquêtes ou les formulaires de demande.

2.1.4 Caractéristiques de sécurité

Avec IronPDF, la mise en œuvre de mesures de sécurité telles que le cryptage et l'encryptage est un jeu d'enfantprotection par mot de passe est simple. Ces fonctionnalités garantissent que les informations sensibles contenues dans les documents PDF restent protégées contre tout accès non autorisé.

2.1.5 Impression et rendu

IronPDF permet aux développeurs de rendre les PDF à la fois pour la visualisation à l'écran et pour l'affichageimpression physiquegarantissant une production de haute qualité dans les deux cas. Il est ainsi plus facile de préparer des documents pour toute une série de besoins de présentation ou de distribution.

2.1.6 Support multiplateforme

IronPDF fonctionne sur diverses plates-formes .NET, en adhérant aux normes de code .NET et en facilitant le développement dans divers environnements sans problèmes de compatibilité.

2.1.7 Documentation et soutien complets

IronPDF est soutenu parune documentation détaillée et un support dédié, aidant les développeurs à naviguer dans les fonctionnalités de la bibliothèque et à les intégrer efficacement dans leurs applications.

2.1.8 Edition avancée des PDF

IronPDF offre de nombreuses fonctions d'édition avancées. Il s'agit notamment de la capacité àfusionner et scinder PDF, ce qui est particulièrement utile pour organiser de grands volumes d'informations ou pour extraire des sections spécifiques d'un document en vue d'une utilisation séparée.

2.1.9 En-têtes et pieds de page personnalisés

La bibliothèque permet depersonnalisation des en-têtes et les pieds de page dans les documents PDF. Cette fonctionnalité est essentielle pour ajouter des marques, des numéros de page ou des titres de documents cohérents d'une page à l'autre, ce qui améliore l'aspect professionnel de la production.

3. Création d'un projet de console dans Visual Studio

La création d'une application console dans l'IDE Visual Studio est un processus simple qui comporte plusieurs étapes.

3.1 Lancer Visual Studio

Commencez par ouvrir Microsoft Visual Studio. Si vous ne l'avez pas installé, vous devrez le télécharger et l'installer à partir du site Web de lasite officiel de Microsoft. Une fois installé, lancez le studio visuel.

3.2 Créer un nouveau projet

Après avoir ouvert Visual Studio, vous serez accueilli par la fenêtre de démarrage. Sélectionnez l'option "Créer un nouveau projet" pour lancer le processus de création d'une nouvelle application console.

Une comparaison entre Report .NET et IronPDF : Figure 1 - Ouvrez Visual Studio et cliquez sur l'option Créer un nouveau projet.

3.3 Choisissez le type de projet

Dans la fenêtre "Créer un nouveau projet", plusieurs modèles de projets vous sont proposés. Tapez "console" dans le champ de recherche pour filtrer les options, puis sélectionnez "Console App" dans la liste. Veillez à choisir le modèle qui correspond au langage de programmation que vous souhaitez utiliser, par exemple C#.

Une comparaison entre Report .NET et IronPDF : Figure 2 - Ensuite, choisissez le type de projet "Console App" ; dans le langage de programmation C#.

3.4 Configurer le projet

Une fois que vous avez sélectionné le modèle d'application de la console, cliquez sur "Suivant" pour passer à l'écran de configuration du projet. Ici, vous devrez fournir quelques détails sur votre projet :

  • Nom du projet : Donnez à votre projet un nom significatif qui reflète son objectif.

    • Emplacement : Choisissez l'endroit de votre ordinateur où vous souhaitez enregistrer les fichiers du projet.

    Une comparaison entre Report .NET et IronPDF : Figure 3 - Spécifiez le nom et l'emplacement du projet Console App. Par défaut, le nom de la solution est le même que celui du projet, mais vous pouvez le modifier.

  • Nom de la solution : Par défaut, ce nom est le même que celui de votre projet, mais vous pouvez le modifier si vous envisagez d'inclure plusieurs projets dans la même solution.

    • Framework : Sélectionnez la version du Framework .NET que vous souhaitez cibler. En cas de doute, choisissez la dernière version.

    Comparaison entre Report .NET et IronPDF : Figure 4 - Sélectionnez la version du Framework .NET que vous souhaitez. Si vous n'êtes pas sûr, choisissez la dernière version.

3.5 Créer le projet

Après avoir rempli toutes les informations nécessaires, cliquez sur le bouton "Créer". Visual Studio va maintenant générer un nouveau projet d'application console basé sur vos spécifications. Ce processus peut prendre quelques instants.

4. Installation de la bibliothèque IronPDF

Pour exploiter les capacités d'IronPDF dans votre projet, vous devez d'abord installer la bibliothèque. Il existe plusieurs méthodes pour y parvenir, chacune adaptée à des flux de développement ou à des préférences différents. Vous trouverez ci-dessous trois méthodes courantes pour installer la bibliothèque IronPDF dans votre projet Visual Studio.

4.1 Installation à l'aide du gestionnaire de paquets NuGet

L'interface utilisateur du gestionnaire de paquets NuGet dans Visual Studio permet de parcourir, de sélectionner et d'installer des paquets en toute simplicité.

  1. Dans Visual Studio, naviguez jusqu'à votre projet dans l'explorateur de solutions, faites un clic droit dessus et choisissez l'option "Manage NuGet Packages...".

  2. Cliquez sur l'onglet "Parcourir" et tapez "IronPDF" dans le champ de recherche.

  3. Trouvez le paquet IronPDF dans les résultats de la recherche, sélectionnez-le, puis cliquez sur le bouton "Installer". Visual Studio se chargera automatiquement du téléchargement et de l'installation.

    Une comparaison entre Report .NET et IronPDF : Figure 5 - Installez IronPDF à l'aide de Manage NuGet Package for Solution en recherchant "IronPdf" ; dans la barre de recherche de NuGet Package Manager, puis sélectionnez le projet et cliquez sur le bouton Installer.

4.2 Installation à l'aide de la console NuGet Package Manager

Pour ceux qui préfèrent utiliser des outils en ligne de commande, la console NuGet Package Manager est une alternative puissante.

  1. Ouvrez la console : Allez dans le menu "Outils" de Visual Studio, puis naviguez jusqu'à "NuGet Package Manager" > "Package Manager Console".

    1. Commande d'installation : Dans la console, tapez la commande suivante et appuyez sur Entrée :
Install-Package IronPdf

Cette commande demande à NuGet de télécharger et d'installer la dernière version d'IronPDF dans votre projet.

4.3 Installation à l'aide du site NuGet

Si vous préférez télécharger manuellement le paquetage ou si vous avez besoin d'une version spécifique d'IronPDF, le site web NuGet est une bonne option.

  1. Visitez le site Web de NuGet : Allez ànuget.org et recherchez "IronPDF".

  2. Télécharger le paquet : A partir de la pagePage IronPDFsélectionnez la version dont vous avez besoin et téléchargez le fichier .nupkg.

  3. Installation manuelle : Une fois téléchargé, vous pouvez ajouter le paquet à votre projet manuellement. Dans Visual Studio, allez dans le menu "Outils", puis "Options" > "NuGet Package Manager" > "Sources de paquets". Ajoutez une nouvelle source pointant vers le dossier où vous avez téléchargé le fichier .nupkg. Enfin, utilisez l'interface utilisateur du gestionnaire de paquets ou la console de Visual Studio pour installer le paquetage à partir de votre source locale.

5. Installation de la bibliothèque Report.NET

Ouvrez votre navigateur web et rendez-vous sur le dépôt GitHub Report.NET à l'adresse https://github.com/ritchiecarroll/Report.NET/tree/master. Cette page contient la version la plus récente duReport.NET ainsi que son code source.

5.1 Télécharger la bibliothèque

Sur la page du référentiel, localisez le bouton "Code" et cliquez dessus. Dans le menu déroulant, sélectionnez "Télécharger ZIP" pour télécharger l'ensemble du référentiel sous forme de fichier ZIP. Enregistrez ce fichier dans un endroit approprié de votre ordinateur et extrayez-en le contenu.

5.2 Ajoutez Report.NET à votre projet

Après avoir extrait le fichier ZIP, vous trouverez le code source de la bibliothèque Report.NET parmi les fichiers extraits. Pour utiliser Report.NET dans votre projet Visual Studio, procédez comme suit :

  1. Ouvrez votre projet : Lancez Visual Studio et ouvrez le projet auquel vous souhaitez ajouter Report.NET.

    1. Ajouter la bibliothèque manuellement : Il existe plusieurs façons d'inclure la bibliothèque dans votre projet :

      • En tant qu'assemblage compilé : Si le dépôt GitHub inclut un fichier DLL compilé, vous pouvez simplement ajouter une référence à cette DLL dans votre projet. Cliquez avec le bouton droit de la souris sur "Références" dans l'explorateur de solutions de votre projet, choisissez "Ajouter une référence...", puis recherchez et sélectionnez le fichier DLL.
    • En incluant les fichiers source : Si vous préférez inclure le code source directement ou si une DLL compilée n'est pas fournie, vous pouvez ajouter les fichiers du code source à votre projet. Cliquez avec le bouton droit de la souris sur votre projet dans l'explorateur de solutions, choisissez "Ajouter" > "Élément existant...", puis naviguez jusqu'aux fichiers de code source Report.NET que vous avez extraits du ZIP et sélectionnez-les.
  2. Assurez-vous de la compatibilité : Assurez-vous que votre projet cible une version compatible du Framework .NET, comme l'exige Report.NET.

6. Fonctionnalités avancées d'IronPDF par rapport à Report.NET C

6.1 Fonctionnalités avancées d'IronPDF C

IronPDF est doté d'une série de fonctionnalités avancées conçues pour gérer facilement un large éventail de tâches liées aux PDF.

6.1.1 Rendu HTML vers PDF

IronPDF peut prendre du contenu HTML, y compris CSS et JavaScript, et le rendre directement dans un document PDF. Cela signifie que les pages web ou les modèles HTML peuvent être convertis en PDF qui ressemblent à ce qu'ils sont dans un navigateur.

6.1.1.1 Chaîne HTML vers PDF

IronPDF permet la conversion directe deChaînes HTML vers PDF. Cela signifie que les développeurs peuvent prendre un code HTML stocké dans une variable de type chaîne et utiliser IronPDF pour le convertir en un fichier PDF. Cette fonction est particulièrement utile lorsque le contenu HTML est généré dynamiquement ou modifié par l'application avant la conversion.

using IronPdf;
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
PDF.SaveAs("HtmlStringToPdf.pdf");
using IronPdf;
var Renderer = new IronPdf.HtmlToPdf();
var PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>");
PDF.SaveAs("HtmlStringToPdf.pdf");
Imports IronPdf
Private Renderer = New IronPdf.HtmlToPdf()
Private PDF = Renderer.RenderHtmlAsPdf("<h1>Hello IronPDF</h1>")
PDF.SaveAs("HtmlStringToPdf.pdf")
VB   C#

6.1.1.2 Fichier HTML vers PDF

De la même manière, IronPDF peut convertir des fichiersTransformer des fichiers HTML en documents PDF. Pour ce faire, le fichier HTML est lu à partir du système de fichiers et IronPDF est utilisé pour créer un document PDF avec le même formatage et la même structure.

using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHTMLFileAsPdf("invoice.html");
PDF.SaveAs("HtmlFileToPdf.pdf");
using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderHTMLFileAsPdf("invoice.html");
PDF.SaveAs("HtmlFileToPdf.pdf");
Imports IronPdf
Private Renderer = New ChromePdfRenderer()
Private PDF = Renderer.RenderHTMLFileAsPdf("invoice.html")
PDF.SaveAs("HtmlFileToPdf.pdf")
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 6 - Conversion d'un fichier HTML en PDF à l'aide d'IronPDF

6.1.1.3 URL vers PDF

IronPDF est également capable de rendre unPDF à partir d'une URL en direct. Les développeurs peuvent ainsi saisir une adresse web, et IronPDF récupère le contenu HTML de l'URL et le restitue sous forme de PDF.

using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com");
PDF.SaveAs("UrlToPdf.pdf");
using IronPdf;
var Renderer = new ChromePdfRenderer();
var PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com");
PDF.SaveAs("UrlToPdf.pdf");
Imports IronPdf
Private Renderer = New ChromePdfRenderer()
Private PDF = Renderer.RenderUrlAsPdf("http://ironpdf.com")
PDF.SaveAs("UrlToPdf.pdf")
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 7 - Conversion d'URL en PDF avec IronPDF

6.1.2 Édition des PDF

Avec IronPDF, vous pouvezmodifier des documents PDF existants. Il s'agit notamment d'ajouter du texte, des images et des pages ou de supprimer des pages du document. Vous pouvez égalementrechercher et remplacer du texte du document PDF.

using IronPdf;
var document = PdfDocument.FromFile("original_document.pdf");
const int targetPageIndex = 1;
const string oldString = "Hello, World!";
const string newString = "Greetings, Universe!";
document.ReplaceTextOnPage(targetPageIndex, oldString, newString);
document.SaveAs("modified_document.pdf");
using IronPdf;
var document = PdfDocument.FromFile("original_document.pdf");
const int targetPageIndex = 1;
const string oldString = "Hello, World!";
const string newString = "Greetings, Universe!";
document.ReplaceTextOnPage(targetPageIndex, oldString, newString);
document.SaveAs("modified_document.pdf");
Imports IronPdf
Private document = PdfDocument.FromFile("original_document.pdf")
Private Const targetPageIndex As Integer = 1
Private Const oldString As String = "Hello, World!"
Private Const newString As String = "Greetings, Universe!"
document.ReplaceTextOnPage(targetPageIndex, oldString, newString)
document.SaveAs("modified_document.pdf")
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 8 - Sortie : Modification d'un PDF existant à l'aide d'IronPDF

6.1.3 Extraction de texte et d'images

Cette bibliothèque peutextraire du texte et des images à partir de fichiers PDF, à l'instar de Crystal Reports, que vous pouvez utiliser pour l'indexation, la recherche ou la réaffectation de contenu.

6.1.4 Générer des formulaires PDF

IronPDF prend en charge la création deFormulaires PDF. Les développeurs peuvent créer par programme des formulaires dans un PDF et les utilisateurs peuvent les remplir.

using IronPdf;
using System;
const string alternativeHtmlContent = @"
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>";
var alternativePdfRenderer = new ChromePdfRenderer();
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = true;
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf");
using IronPdf;
using System;
const string alternativeHtmlContent = @"
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>";
var alternativePdfRenderer = new ChromePdfRenderer();
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = true;
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf");
Imports IronPdf
Imports System
Private Const alternativeHtmlContent As String = "
    <html>
        <body>
            <h2>Alternative PDF Form</h2>
            <form>
              Name: <br> 
              Age: <br> 
              <br>
              <p>Select country:</p>
              <select name='country'>
                <option value='USA'>USA</option>
                <option value='UK'>UK</option>
                <option value='Canada'>Canada</option>
              </select>
              <br>
              <p>Select interests:</p>
              <label for='interest1'> Interest 1</label><br>
              <label for='interest2'> Interest 2</label><br>
            </form>
        </body>
    </html>"
Private alternativePdfRenderer = New ChromePdfRenderer()
alternativePdfRenderer.RenderingOptions.CreatePdfFormsFromHtml = True
alternativePdfRenderer.RenderHtmlAsPdf(alternativeHtmlContent).SaveAs("AlternativeForm.pdf")
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 9 - PDF de sortie : Génération de formulaires PDF à l'aide d'IronPDF

6.1.5 Fusionner des documents PDF

Vous pouvezcombiner plusieurs fichiers PDF en un seul document. Cette fonction est pratique pour consolider des rapports ou combiner différentes sections de documents.

using IronPdf;
var firstHtmlContent = @"<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>";
var secondHtmlContent = @"<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>";
var pdfRenderer = new ChromePdfRenderer();
var pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent);
var pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent);
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
mergedPdf.SaveAs("MergedDocuments.pdf");
using IronPdf;
var firstHtmlContent = @"<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>";
var secondHtmlContent = @"<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>";
var pdfRenderer = new ChromePdfRenderer();
var pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent);
var pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent);
var mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB);
mergedPdf.SaveAs("MergedDocuments.pdf");
Imports IronPdf
Private firstHtmlContent = "<h1>Document A</h1>
        <p>This is the first document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document A</p>"
Private secondHtmlContent = "<h1>Document B</h1>
        <p>This is the second document.</p>
        <div style='page-break-after: always;'></div>
        <p>Continuation of Document B</p>"
Private pdfRenderer = New ChromePdfRenderer()
Private pdfDocA = pdfRenderer.RenderHtmlAsPdf(firstHtmlContent)
Private pdfDocB = pdfRenderer.RenderHtmlAsPdf(secondHtmlContent)
Private mergedPdf = PdfDocument.Merge(pdfDocA, pdfDocB)
mergedPdf.SaveAs("MergedDocuments.pdf")
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 10 - PDF de sortie : Génération de plusieurs fichiers PDF et fusion en un seul PDF.

6.1.6 Fractionnement des documents PDF

Inversement, IronPDF peutdiviser un seul PDF en plusieurs documents. Cela peut s'avérer nécessaire si vous souhaitez distribuer des pages ou des sections individuelles.

6.1.7 Cryptage et décryptage des PDF

IronPDF permet dele cryptage et le décryptage des documents PDFle système d'information de la Commission européenne (CEI) permet d'ajouter une couche supplémentaire de sécurité aux informations sensibles.

using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("protected.pdf", "password");
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption();
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key");
encryptedPdf.Password = "new-password";
encryptedPdf.SaveAs("secured.pdf");
using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("protected.pdf", "password");
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption();
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key");
encryptedPdf.Password = "new-password";
encryptedPdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System
Private encryptedPdf = PdfDocument.FromFile("protected.pdf", "password")
encryptedPdf.SecuritySettings.RemovePasswordsAndEncryption()
encryptedPdf.SecuritySettings.MakePdfDocumentReadOnly("super-secret-key")
encryptedPdf.Password = "new-password"
encryptedPdf.SaveAs("secured.pdf")
VB   C#

6.1.8 Définition des propriétés du document et des métadonnées

Avec cette bibliothèque, il est facile de définir les propriétés d'un document telles que le titre, l'auteur et les métadonnées. Cela facilite la gestion et l'organisation des documents.

using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("sample.pdf");
pdf.MetaData.Author = "Iron Developer";
pdf.MetaData.Keywords = "Confidential, Private";
pdf.MetaData.ModifiedDate = DateTime.Now;
pdf.SaveAs("modified.pdf");
using IronPdf;
using System;
var encryptedPdf = PdfDocument.FromFile("sample.pdf");
pdf.MetaData.Author = "Iron Developer";
pdf.MetaData.Keywords = "Confidential, Private";
pdf.MetaData.ModifiedDate = DateTime.Now;
pdf.SaveAs("modified.pdf");
Imports IronPdf
Imports System
Private encryptedPdf = PdfDocument.FromFile("sample.pdf")
pdf.MetaData.Author = "Iron Developer"
pdf.MetaData.Keywords = "Confidential, Private"
pdf.MetaData.ModifiedDate = DateTime.Now
pdf.SaveAs("modified.pdf")
VB   C#

6.1.9 Conformité à la norme PDF/A

IronPDF peutgénérer des documents conformes à la norme PDF/A les documents nécessaires à l'archivage à long terme et à la conservation des données.

6.1.10 Rapports XML à l'aide d'IronPDF

La conversion directe de XML en PDF n'est pas prise en charge par IronPDF, mais une approche viable consiste à convertir d'abord les données XML au format HTML. Pour ce faire, on utilise XSLT(Transformations en langage de feuille de style extensible)xML, un puissant langage de feuille de style XML conçu pour transformer des documents XML en d'autres formats tels que HTML, texte, ou même en un nouveau document XML. Disons qu'il s'agit de notre fichier data.xml :

<?xml version="1.0" encoding="UTF-8"?>
<Library>
    <Book id="1">
        <Title>The Great Gatsby</Title>
        <Author>F. Scott Fitzgerald</Author>
        <Genre>Fiction</Genre>
        <Year>1925</Year>
    </Book>
    <Book id="2">
        <Title>To Kill a Mockingbird</Title>
        <Author>Harper Lee</Author>
        <Genre>Fiction</Genre>
        <Year>1960</Year>
    </Book>
    <Book id="3">
        <Title>1984</Title>
        <Author>George Orwell</Author>
        <Genre>Dystopian</Genre>
        <Year>1949</Year>
    </Book>
</Library>
<?xml version="1.0" encoding="UTF-8"?>
<Library>
    <Book id="1">
        <Title>The Great Gatsby</Title>
        <Author>F. Scott Fitzgerald</Author>
        <Genre>Fiction</Genre>
        <Year>1925</Year>
    </Book>
    <Book id="2">
        <Title>To Kill a Mockingbird</Title>
        <Author>Harper Lee</Author>
        <Genre>Fiction</Genre>
        <Year>1960</Year>
    </Book>
    <Book id="3">
        <Title>1984</Title>
        <Author>George Orwell</Author>
        <Genre>Dystopian</Genre>
        <Year>1949</Year>
    </Book>
</Library>
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'<?xml version="1.0" encoding="UTF-8"?> <Library> <Book id="1"> <Title> The Great Gatsby</Title> <Author> F.Scott Fitzgerald</Author> <Genre> Fiction</Genre> <Year>1925</Year> </Book> <Book id="2"> <Title> @To Kill a Mockingbird</Title> <Author> Harper Lee</Author> <Genre> Fiction</Genre> <Year>1960</Year> </Book> <Book id="3"> <Title>1984</Title> <Author> George Orwell</Author> <Genre> Dystopian</Genre> <Year>1949</Year> </Book> </Library>
VB   C#

Il s'agit de notre fichier style.xslt :

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <html>
            <head>
                <title>Library Catalog</title>
                <style>
                    body { font-family: Arial, sans-serif; margin: 20px; }
                    table { border-collapse: collapse; width: 100%; }
                    th, td { text-align: left; padding: 8px; }
                    tr:nth-child(even) { background-color: #f2f2f2; }
                    th { background-color: #4CAF50; color: white; }
                </style>
            </head>
            <body>
                <h2>Library Catalog</h2>
                <table>
                    <tr>
                        <th>Title</th>
                        <th>Author</th>
                        <th>Genre</th>
                        <th>Year</th>
                    </tr>
                    <xsl:for-each select="Library/Book">
                        <tr>
                            <td><xsl:value-of select="Title"/></td>
                            <td><xsl:value-of select="Author"/></td>
                            <td><xsl:value-of select="Genre"/></td>
                            <td><xsl:value-of select="Year"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/>
    <xsl:template match="/">
        <html>
            <head>
                <title>Library Catalog</title>
                <style>
                    body { font-family: Arial, sans-serif; margin: 20px; }
                    table { border-collapse: collapse; width: 100%; }
                    th, td { text-align: left; padding: 8px; }
                    tr:nth-child(even) { background-color: #f2f2f2; }
                    th { background-color: #4CAF50; color: white; }
                </style>
            </head>
            <body>
                <h2>Library Catalog</h2>
                <table>
                    <tr>
                        <th>Title</th>
                        <th>Author</th>
                        <th>Genre</th>
                        <th>Year</th>
                    </tr>
                    <xsl:for-each select="Library/Book">
                        <tr>
                            <td><xsl:value-of select="Title"/></td>
                            <td><xsl:value-of select="Author"/></td>
                            <td><xsl:value-of select="Genre"/></td>
                            <td><xsl:value-of select="Year"/></td>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
'INSTANT VB TODO TASK: The following line could not be converted:
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> (Of html) (Of head) (Of title) Library Catalog</title> (Of style) body
If True Then
	font-family: Arial, sans-serif
	margin:
	20px
End If
					table
					If True Then
						border-collapse: collapse
						width:
						100 Mod 
					End If
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'					th, td
'					{
'						text-align: left;
'						padding:
'						8px;
'					}
					tr:
'INSTANT VB TODO TASK: Local functions are not converted by Instant VB:
'					nth-child(even)
'					{
'						background-color: #f2f2f2;
'					}
					th
					If True Then
						background-color: #4CAF50
						color:
						white
					End If
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'				</style> </head> <body> <h2> Library Catalog</h2> <table> <tr> <th> Title</th> <th> Author</th> <th> Genre</th> <th> Year</th> </tr> <xsl:for-@each @select="Library/Book"> <tr> <td><xsl:value-@of @select="Title"/></td> <td><xsl:value-@of @select="Author"/></td> <td><xsl:value-@of @select="Genre"/></td> <td><xsl:value-@of @select="Year"/></td> </tr> </xsl:for-@each> </table> </body> </html> </xsl:template> </xsl:stylesheet>
VB   C#

Voici un extrait de code qui montre comment nous pouvons aborder cette logique :

using System;
using System.Xml.Xsl;
using System.Xml;
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("style.xslt");
XmlReader reader = XmlReader.Create("data.xml");
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
using (XmlWriter writer = XmlWriter.Create("output.html", settings))
{
    transform.Transform(reader, writer);
}
License.LicenseKey = "Liecense-Key";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("output.html");
pdf.SaveAs("Report.pdf");
using System;
using System.Xml.Xsl;
using System.Xml;
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load("style.xslt");
XmlReader reader = XmlReader.Create("data.xml");
XmlWriterSettings settings = new XmlWriterSettings { Indent = true, OmitXmlDeclaration = true };
using (XmlWriter writer = XmlWriter.Create("output.html", settings))
{
    transform.Transform(reader, writer);
}
License.LicenseKey = "Liecense-Key";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlFileAsPdf("output.html");
pdf.SaveAs("Report.pdf");
Imports System
Imports System.Xml.Xsl
Imports System.Xml
Private transform As New XslCompiledTransform()
transform.Load("style.xslt")
Dim reader As XmlReader = XmlReader.Create("data.xml")
Dim settings As New XmlWriterSettings With {
	.Indent = True,
	.OmitXmlDeclaration = True
}
Using writer As XmlWriter = XmlWriter.Create("output.html", settings)
	transform.Transform(reader, writer)
End Using
License.LicenseKey = "Liecense-Key"
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlFileAsPdf("output.html")
pdf.SaveAs("Report.pdf")
VB   C#
  1. Vous commencez par une feuille de style XSLT(style.xslt) qui dicte comment les données XML doivent être structurées en HTML. La classe XslCompiledTransform de .NET est utilisée pour charger votre fichier XSLT.

  2. Utilisez XmlReader pour charger vos données XML(data.xml). XmlReader est efficace à cette fin car il fournit une vue en lecture seule des données XML.

  3. Le code HTML transformé est écrit dans un fichier(output.html) en utilisant XmlWriter, configuré pour produire du HTML indenté pour plus de lisibilité et pour omettre la déclaration XML, qui n'est pas nécessaire dans la sortie HTML.

  4. Une fois le fichier HTML prêt, ChromePdfRenderer d'IronPDF est utilisé pour convertir le document HTML en PDF. Ce moteur de rendu imite un moteur de rendu de haute qualité, garantissant que le PDF généré représente fidèlement le contenu HTML.

  5. Enfin, le document PDF est enregistré dans le système de fichiers(Rapport.pdf). Cette étape conclut le processus de conversion, qui aboutit à un document PDF dérivé des données XML d'origine.

    C'est ainsi que nous générons des rapports en utilisant XML et IronPDF. Le fichier PDF de sortie que nous générons :

    Comparaison entre Report .NET et IronPDF : Figure 11 - Sortie d'un fichier PDF à partir de rapports XML en utilisant IronPDF et XSLT

    Nous pouvons également créer des rapports interactifs SAP par programme, puis les convertir à l'aide d'IronPDF. Pour plus de détails, suivez ce guideGénération de rapports en C#.

6.2 Fonctionnalités avancées de Report.NET

Report.NET offre une série de fonctions avancées qui permettent de générer et de personnaliser des PDF de manière exhaustive. Les caractéristiques énumérées dans l'image reflètent certaines de ces capacités avancées. Examinons chacun d'entre eux en détail.

6.2.1 Ajout de polices

Cette fonction permet d'utiliser différents styles et tailles de polices dans un document PDF. Il permet aux développeurs de tester l'apparence de différentes polices, en s'assurant que le texte s'affiche correctement et conformément aux spécifications de conception.

using Root.Reports;
using System;
using System.Drawing;
namespace ReportSamples {
  public class Test : Report {
    private readonly FontDef fontDef;
    private readonly FontProp fontProp_Title;
    private readonly FontProp fontProp_Label;
    public Test() {
      fontDef = FontDef.FontDefFromName(this, FontDef.StandardFont.Helvetica);
      fontProp_Title = new FontPropMM(fontDef, 6) { Bold = true };
      fontProp_Label = new FontPropMM(fontDef, 4);
    }
    protected override void Create() {
      FontTest();
    }
    private void FontTest() {
      FontProp fp_Title = new FontPropMM(fontDef, 12) { Bold = true };
      FontProp fp = new FontPropMM(fontDef, 6);
      FontProp fp_Small = new FontPropMM(fontDef, 1.4);
      FontProp fp_XSmall = new FontPropMM(fontDef, 0.8);
      Page page_Cur = new Page(this);
      page_Cur.AddCB_MM(30, new RepString(fontProp_Title, "Font Test"));
      Double rX = 300;
      Double rY = 40;
      for (Int32 i = 32; i < 127; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      for (Int32 i = 161; i < 256; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      PrintCharacter('�', fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
    }
    private void PrintCharacter(Int32 iChar, FontProp fp, FontProp fp_Small, FontProp fp_XSmall, Double rX, Double rY, Page page_Cur) {
      if (rX > 185) {
        rY += fp.rLineFeedMM;
        rX = 22;
      }
      if (rY > 280) {
        new Page(this);
        rY = 40;
      }
      Char ch = (Char)iChar;
      String s = ch.ToString();
      page_Cur.AddMM(rX + 2, rY, new RepString(fp, s));
      rX += 15;
    }
  }
}
using Root.Reports;
using System;
using System.Drawing;
namespace ReportSamples {
  public class Test : Report {
    private readonly FontDef fontDef;
    private readonly FontProp fontProp_Title;
    private readonly FontProp fontProp_Label;
    public Test() {
      fontDef = FontDef.FontDefFromName(this, FontDef.StandardFont.Helvetica);
      fontProp_Title = new FontPropMM(fontDef, 6) { Bold = true };
      fontProp_Label = new FontPropMM(fontDef, 4);
    }
    protected override void Create() {
      FontTest();
    }
    private void FontTest() {
      FontProp fp_Title = new FontPropMM(fontDef, 12) { Bold = true };
      FontProp fp = new FontPropMM(fontDef, 6);
      FontProp fp_Small = new FontPropMM(fontDef, 1.4);
      FontProp fp_XSmall = new FontPropMM(fontDef, 0.8);
      Page page_Cur = new Page(this);
      page_Cur.AddCB_MM(30, new RepString(fontProp_Title, "Font Test"));
      Double rX = 300;
      Double rY = 40;
      for (Int32 i = 32; i < 127; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      for (Int32 i = 161; i < 256; i++) {
        PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
      }
      PrintCharacter('�', fp, fp_Small, fp_XSmall, rX, rY, page_Cur);
    }
    private void PrintCharacter(Int32 iChar, FontProp fp, FontProp fp_Small, FontProp fp_XSmall, Double rX, Double rY, Page page_Cur) {
      if (rX > 185) {
        rY += fp.rLineFeedMM;
        rX = 22;
      }
      if (rY > 280) {
        new Page(this);
        rY = 40;
      }
      Char ch = (Char)iChar;
      String s = ch.ToString();
      page_Cur.AddMM(rX + 2, rY, new RepString(fp, s));
      rX += 15;
    }
  }
}
Imports Root.Reports
Imports System
Imports System.Drawing
Namespace ReportSamples
  Public Class Test
	  Inherits Report

	Private ReadOnly fontDef As FontDef
	Private ReadOnly fontProp_Title As FontProp
	Private ReadOnly fontProp_Label As FontProp
	Public Sub New()
	  fontDef = FontDef.FontDefFromName(Me, FontDef.StandardFont.Helvetica)
	  fontProp_Title = New FontPropMM(fontDef, 6) With {.Bold = True}
	  fontProp_Label = New FontPropMM(fontDef, 4)
	End Sub
	Protected Overrides Sub Create()
	  FontTest()
	End Sub
	Private Sub FontTest()
	  Dim fp_Title As FontProp = New FontPropMM(fontDef, 12) With {.Bold = True}
	  Dim fp As FontProp = New FontPropMM(fontDef, 6)
	  Dim fp_Small As FontProp = New FontPropMM(fontDef, 1.4)
	  Dim fp_XSmall As FontProp = New FontPropMM(fontDef, 0.8)
	  Dim page_Cur As New Page(Me)
	  page_Cur.AddCB_MM(30, New RepString(fontProp_Title, "Font Test"))
	  Dim rX As Double = 300
	  Dim rY As Double = 40
	  For i As Int32 = 32 To 126
		PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	  Next i
	  For i As Int32 = 161 To 255
		PrintCharacter(i, fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	  Next i
	  PrintCharacter(AscW(" "c), fp, fp_Small, fp_XSmall, rX, rY, page_Cur)
	End Sub
	Private Sub PrintCharacter(ByVal iChar As Int32, ByVal fp As FontProp, ByVal fp_Small As FontProp, ByVal fp_XSmall As FontProp, ByVal rX As Double, ByVal rY As Double, ByVal page_Cur As Page)
	  If rX > 185 Then
		rY += fp.rLineFeedMM
		rX = 22
	  End If
	  If rY > 280 Then
		Dim tempVar As New Page(Me)
		rY = 40
	  End If
	  Dim ch As Char = ChrW(iChar)
	  Dim s As String = ch.ToString()
	  page_Cur.AddMM(rX + 2, rY, New RepString(fp, s))
	  rX += 15
	End Sub
  End Class
End Namespace
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 12 - Ajout de différents styles et tailles de polices à un document PDF à l'aide de Report .NET

6.2.2 Intégration d'images

Grâce à la fonction d'échantillonnage d'images, les développeurs peuvent intégrer des images dans les documents PDF. Il s'agit notamment de contrôler la taille et le positionnement des images, ainsi que de leur appliquer éventuellement des transformations ou des effets.

using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ImageSample : Report {
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp_Title = new FontPropMM(fd, 15) { Bold = true };
      FontProp fp_SubTitle = new FontPropMM(fd, 4) { Bold = true };
      PenProp pp = new PenProp(this, 0.2, Color.FromArgb(235, 235, 235));
      PenProp pp_Black = new PenProp(this, 0.2, Color.Black);
      BrushProp bp = new BrushProp(this, Color.LightGray);
      new Page(this);
      page_Cur.AddCB_MM(40, new RepString(fp_Title, "Image Sample"));
      System.IO.Stream stream = GetType().Assembly.GetManifestResourceStream("ReportSamples.Image.jpg");
      page_Cur.AddMM(20, 90, new RepImageMM(stream, 40, Double.NaN));
      page_Cur.AddMM(20, 95, new RepString(fp_SubTitle, "W = 40mm, H = auto."));
      page_Cur.AddMM(67, 90, new RepImageMM(stream, 40, 20));
      page_Cur.AddMM(67, 95, new RepString(fp_SubTitle, "W = 40mm, H = 20mm"));
      page_Cur.AddMM(114, 90, new RepImageMM(stream, Double.NaN, 30));
      page_Cur.AddMM(114, 95, new RepString(fp_SubTitle, "W = auto., H = 30mm"));
      page_Cur.AddMM(161, 90, new RepImageMM(stream, 30, 30));
      page_Cur.AddMM(161, 95, new RepString(fp_SubTitle, "W = 30mm, H = 30mm"));
    }
  }
}
using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ImageSample : Report {
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp_Title = new FontPropMM(fd, 15) { Bold = true };
      FontProp fp_SubTitle = new FontPropMM(fd, 4) { Bold = true };
      PenProp pp = new PenProp(this, 0.2, Color.FromArgb(235, 235, 235));
      PenProp pp_Black = new PenProp(this, 0.2, Color.Black);
      BrushProp bp = new BrushProp(this, Color.LightGray);
      new Page(this);
      page_Cur.AddCB_MM(40, new RepString(fp_Title, "Image Sample"));
      System.IO.Stream stream = GetType().Assembly.GetManifestResourceStream("ReportSamples.Image.jpg");
      page_Cur.AddMM(20, 90, new RepImageMM(stream, 40, Double.NaN));
      page_Cur.AddMM(20, 95, new RepString(fp_SubTitle, "W = 40mm, H = auto."));
      page_Cur.AddMM(67, 90, new RepImageMM(stream, 40, 20));
      page_Cur.AddMM(67, 95, new RepString(fp_SubTitle, "W = 40mm, H = 20mm"));
      page_Cur.AddMM(114, 90, new RepImageMM(stream, Double.NaN, 30));
      page_Cur.AddMM(114, 95, new RepString(fp_SubTitle, "W = auto., H = 30mm"));
      page_Cur.AddMM(161, 90, new RepImageMM(stream, 30, 30));
      page_Cur.AddMM(161, 95, new RepString(fp_SubTitle, "W = 30mm, H = 30mm"));
    }
  }
}
Imports Root.Reports
Imports System.Drawing
Namespace ReportSamples
  Public Class ImageSample
	  Inherits Report

	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 15) With {.Bold = True}
	  Dim fp_SubTitle As FontProp = New FontPropMM(fd, 4) With {.Bold = True}
	  Dim pp As New PenProp(Me, 0.2, Color.FromArgb(235, 235, 235))
	  Dim pp_Black As New PenProp(Me, 0.2, Color.Black)
	  Dim bp As New BrushProp(Me, Color.LightGray)
	  Dim tempVar As New Page(Me)
	  page_Cur.AddCB_MM(40, New RepString(fp_Title, "Image Sample"))
	  Dim stream As System.IO.Stream = Me.GetType().Assembly.GetManifestResourceStream("Image.jpg")
	  page_Cur.AddMM(20, 90, New RepImageMM(stream, 40, Double.NaN))
	  page_Cur.AddMM(20, 95, New RepString(fp_SubTitle, "W = 40mm, H = auto."))
	  page_Cur.AddMM(67, 90, New RepImageMM(stream, 40, 20))
	  page_Cur.AddMM(67, 95, New RepString(fp_SubTitle, "W = 40mm, H = 20mm"))
	  page_Cur.AddMM(114, 90, New RepImageMM(stream, Double.NaN, 30))
	  page_Cur.AddMM(114, 95, New RepString(fp_SubTitle, "W = auto., H = 30mm"))
	  page_Cur.AddMM(161, 90, New RepImageMM(stream, 30, 30))
	  page_Cur.AddMM(161, 95, New RepString(fp_SubTitle, "W = 30mm, H = 30mm"))
	End Sub
  End Class
End Namespace
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 13 - PDF de sortie : Intégration d'images dans des documents PDF à l'aide de Report.NET

6.2.3 Gestionnaire de la mise en page de la liste

Le gestionnaire de mise en page de listes permet d'ajouter des listes à un document PDF. Cette fonction est utile pour créer des listes ordonnées ou non, personnaliser l'indentation des listes, les styles de puces et gérer la présentation générale des éléments de liste dans le document.

using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ListLayoutManagerSample : Report {
    private Double rMarginLeft = 20;  // millimeters
    private Double rWidth = 175;  // millimeters
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 1.9);
      Double rY = 40;  // vertical position in millimeters
      new Page(this);
      FontProp fp_Title = new FontPropMM(fd, 8);
      page_Cur.AddCB_MM(rY, new RepString(fp_Title, "List Layout Manager Sample"));
      rY += 18;
      ListLayoutManager llm = null;
      using (llm = new ListLayoutManager(this)) {
        PenProp pp_BorderLine = new PenPropMM(this, 0.4, Color.Blue);
        PenProp pp_GridLine = new PenPropMM(this, 0.1, Color.Blue);
        // Configuration for columns
        TlmColumn col_Number = new TlmColumnMM(llm, 10);
        col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine;
        TlmColumn col_Text = new TlmColumnMM(llm, 100);
        col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine;
        TlmColumn col_Author = new TlmColumnMM(llm, rWidth - llm.rWidthMM);
        col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine;
        col_Author.tlmCellDef_Default.brushProp_Back = new BrushProp(this, Color.FromArgb(255, 210, 210));
        llm.container_CreateMM(page_Cur, rMarginLeft, rY);  // immediately creates a container
        // Adding rows and content
        // ...
        // Rows and content omitted for brevity
        // ...
      }
      rY += llm.rCurY_MM + 1.5;
      fp.rSizeMM = 1.5;
      page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, new RepString(fp, "End of list"));
    }
  }
}
using Root.Reports;
using System.Drawing;
namespace ReportSamples {
  public class ListLayoutManagerSample : Report {
    private Double rMarginLeft = 20;  // millimeters
    private Double rWidth = 175;  // millimeters
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 1.9);
      Double rY = 40;  // vertical position in millimeters
      new Page(this);
      FontProp fp_Title = new FontPropMM(fd, 8);
      page_Cur.AddCB_MM(rY, new RepString(fp_Title, "List Layout Manager Sample"));
      rY += 18;
      ListLayoutManager llm = null;
      using (llm = new ListLayoutManager(this)) {
        PenProp pp_BorderLine = new PenPropMM(this, 0.4, Color.Blue);
        PenProp pp_GridLine = new PenPropMM(this, 0.1, Color.Blue);
        // Configuration for columns
        TlmColumn col_Number = new TlmColumnMM(llm, 10);
        col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter;
        col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine;
        TlmColumn col_Text = new TlmColumnMM(llm, 100);
        col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine;
        TlmColumn col_Author = new TlmColumnMM(llm, rWidth - llm.rWidthMM);
        col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine;
        col_Author.tlmCellDef_Default.brushProp_Back = new BrushProp(this, Color.FromArgb(255, 210, 210));
        llm.container_CreateMM(page_Cur, rMarginLeft, rY);  // immediately creates a container
        // Adding rows and content
        // ...
        // Rows and content omitted for brevity
        // ...
      }
      rY += llm.rCurY_MM + 1.5;
      fp.rSizeMM = 1.5;
      page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, new RepString(fp, "End of list"));
    }
  }
}
Imports Root.Reports
Imports System.Drawing
Namespace ReportSamples
  Public Class ListLayoutManagerSample
	  Inherits Report

	Private rMarginLeft As Double = 20 ' millimeters
	Private rWidth As Double = 175 ' millimeters
	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp As FontProp = New FontPropMM(fd, 1.9)
	  Dim rY As Double = 40 ' vertical position in millimeters
	  Dim tempVar As New Page(Me)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 8)
	  page_Cur.AddCB_MM(rY, New RepString(fp_Title, "List Layout Manager Sample"))
	  rY += 18
	  Dim llm As ListLayoutManager = Nothing
	  llm = New ListLayoutManager(Me)
	  Using llm
		Dim pp_BorderLine As PenProp = New PenPropMM(Me, 0.4, Color.Blue)
		Dim pp_GridLine As PenProp = New PenPropMM(Me, 0.1, Color.Blue)
		' Configuration for columns
		Dim col_Number As TlmColumn = New TlmColumnMM(llm, 10)
		col_Number.tlmCellDef_Default.rAlignH = RepObj.rAlignCenter
		col_Number.tlmCellDef_Default.rAlignV = RepObj.rAlignCenter
		col_Number.tlmCellDef_Default.penProp_LineLeft = pp_BorderLine
		Dim col_Text As TlmColumn = New TlmColumnMM(llm, 100)
		col_Text.tlmCellDef_Default.tlmTextMode = TlmTextMode.MultiLine
		Dim col_Author As TlmColumn = New TlmColumnMM(llm, rWidth - llm.rWidthMM)
		col_Author.tlmCellDef_Default.penProp_LineRight = pp_BorderLine
		col_Author.tlmCellDef_Default.brushProp_Back = New BrushProp(Me, Color.FromArgb(255, 210, 210))
		llm.container_CreateMM(page_Cur, rMarginLeft, rY) ' immediately creates a container
		' Adding rows and content
		' ...
		' Rows and content omitted for brevity
		' ...
	  End Using
	  rY += llm.rCurY_MM + 1.5
	  fp.rSizeMM = 1.5
	  page_Cur.AddRT_MM(rMarginLeft + rWidth, rY, New RepString(fp, "End of list"))
	End Sub
  End Class
End Namespace
VB   C#

Comparaison entre Report .NET et IronPDF : Figure 14 - PDF de sortie : Ajouter des listes aux documents PDF en utilisant Report.NET

6.2.4 Propriétés du PDF

Il s'agit de la possibilité de définir et de modifier diverses propriétés du document PDF lui-même, telles que les métadonnées(auteur, titre, sujet)les préférences d'affichage et les paramètres de sécurité tels que le cryptage et les autorisations d'accès.

using Root.Reports;
using System;
namespace ReportSamples {
  public class PdfPropertiesSample : Report {
    public PdfPropertiesSample() {
      PdfFormatter pf = (PdfFormatter)formatter;
      pf.sTitle = "PDF Sample";
      pf.sAuthor = "Otto Mayer, mot@root.ch";
      pf.sSubject = "Sample of some PDF features";
      pf.sKeywords = "Sample PDF RSF";
      pf.sCreator = "RSF Sample Application";
      pf.dt_CreationDate = new DateTime(2002, 8, 15, 0, 0, 0, 0);
      pf.pageLayout = PageLayout.TwoColumnLeft;
      pf.bHideToolBar = true;
      pf.bHideMenubar = false;
      pf.bHideWindowUI = true;
      pf.bFitWindow = true;
      pf.bCenterWindow = true;
      pf.bDisplayDocTitle = true;
    }
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 4);
      FontProp fp_Title = new FontPropMM(fd, 11);
      fp_Title.bBold = true;
      Page page = new Page(this);
      page.AddCB_MM(40, new RepString(fp_Title, "PDF Properties Sample"));
      fp_Title.rSizeMM = 8;
      page.AddCB_MM(100, new RepString(fp_Title, "First Page"));
      page.AddCB_MM(120, new RepString(fp, "Choose <Document Properties, Summary> from the"));
      page.AddCB_MM(126, new RepString(fp, "File menu to display the document properties"));
      page = new Page(this);
      page.AddCB_MM(100, new RepString(fp_Title, "Second Page"));
    }
  }
}
using Root.Reports;
using System;
namespace ReportSamples {
  public class PdfPropertiesSample : Report {
    public PdfPropertiesSample() {
      PdfFormatter pf = (PdfFormatter)formatter;
      pf.sTitle = "PDF Sample";
      pf.sAuthor = "Otto Mayer, mot@root.ch";
      pf.sSubject = "Sample of some PDF features";
      pf.sKeywords = "Sample PDF RSF";
      pf.sCreator = "RSF Sample Application";
      pf.dt_CreationDate = new DateTime(2002, 8, 15, 0, 0, 0, 0);
      pf.pageLayout = PageLayout.TwoColumnLeft;
      pf.bHideToolBar = true;
      pf.bHideMenubar = false;
      pf.bHideWindowUI = true;
      pf.bFitWindow = true;
      pf.bCenterWindow = true;
      pf.bDisplayDocTitle = true;
    }
    protected override void Create() {
      FontDef fd = new FontDef(this, FontDef.StandardFont.Helvetica);
      FontProp fp = new FontPropMM(fd, 4);
      FontProp fp_Title = new FontPropMM(fd, 11);
      fp_Title.bBold = true;
      Page page = new Page(this);
      page.AddCB_MM(40, new RepString(fp_Title, "PDF Properties Sample"));
      fp_Title.rSizeMM = 8;
      page.AddCB_MM(100, new RepString(fp_Title, "First Page"));
      page.AddCB_MM(120, new RepString(fp, "Choose <Document Properties, Summary> from the"));
      page.AddCB_MM(126, new RepString(fp, "File menu to display the document properties"));
      page = new Page(this);
      page.AddCB_MM(100, new RepString(fp_Title, "Second Page"));
    }
  }
}
Imports Root.Reports
Imports System
Namespace ReportSamples
  Public Class PdfPropertiesSample
	  Inherits Report

	Public Sub New()
	  Dim pf As PdfFormatter = CType(formatter, PdfFormatter)
	  pf.sTitle = "PDF Sample"
	  pf.sAuthor = "Otto Mayer, mot@root.ch"
	  pf.sSubject = "Sample of some PDF features"
	  pf.sKeywords = "Sample PDF RSF"
	  pf.sCreator = "RSF Sample Application"
	  pf.dt_CreationDate = New DateTime(2002, 8, 15, 0, 0, 0, 0)
	  pf.pageLayout = PageLayout.TwoColumnLeft
	  pf.bHideToolBar = True
	  pf.bHideMenubar = False
	  pf.bHideWindowUI = True
	  pf.bFitWindow = True
	  pf.bCenterWindow = True
	  pf.bDisplayDocTitle = True
	End Sub
	Protected Overrides Sub Create()
	  Dim fd As New FontDef(Me, FontDef.StandardFont.Helvetica)
	  Dim fp As FontProp = New FontPropMM(fd, 4)
	  Dim fp_Title As FontProp = New FontPropMM(fd, 11)
	  fp_Title.bBold = True
	  Dim page As New Page(Me)
	  page.AddCB_MM(40, New RepString(fp_Title, "PDF Properties Sample"))
	  fp_Title.rSizeMM = 8
	  page.AddCB_MM(100, New RepString(fp_Title, "First Page"))
	  page.AddCB_MM(120, New RepString(fp, "Choose <Document Properties, Summary> from the"))
	  page.AddCB_MM(126, New RepString(fp, "File menu to display the document properties"))
	  page = New Page(Me)
	  page.AddCB_MM(100, New RepString(fp_Title, "Second Page"))
	End Sub
  End Class
End Namespace
VB   C#

6.2.5 PDF à partir d'un texte

La fonction PDF à partir d'un texte présente les capacités de la bibliothèque à ajouter et à personnaliser le contenu textuel d'un PDF. Il s'agit notamment de définir l'alignement du texte, l'espacement des lignes, la couleur et d'appliquer des effets de texte tels que le gras ou l'italique.

7. Documentation et assistance

7.1 IronPDF

IronPDF est connue pour son vaste programme d'éducation et de formation à l'environnementune documentation détaillée. IronPDF propose une section de documentation bien organisée qui comprend des instructions d'installation, des tutoriels et des références d'API. Les guides sont structurés de manière à aider les débutants et les développeurs expérimentés à trouver rapidement les informations dont ils ont besoin. Pour obtenir un soutien de la part de la communauté, les développeurs peuvent se tourner vers les forums et les discussions communautaires. Ils peuvent y poser des questions, partager leurs expériences et trouver des réponses auprès d'autres utilisateurs.

IronPDF offre également une assistance professionnelle par le biais d'un système de ticketing où les ingénieurs peuvent obtenir de l'aide directement auprès de l'équipe IronPDF. Ce service peut faire partie de la licence payante, qui offre une assistance plus directe et plus immédiate.

7.2 Report.NET

Report.NETétant une bibliothèque open-source, son approche de la documentation et de l'assistance est différente. La documentation n'est peut-être pas aussi complète que celle des bibliothèques commerciales, mais elle est suffisante pour démarrer et effectuer les tâches courantes. La documentation de la bibliothèque se trouve dans le dépôt GitHub ou sous forme de commentaires en ligne dans le code source. Elle a tendance à être plus technique et peut nécessiter quelques recherches pour trouver les informations nécessaires.

Report.NET étant une bibliothèque libre et gratuite, elle n'offre pas d'assistance professionnelle formelle. Les développeurs s'appuient sur la communauté pour obtenir de l'aide ou peuvent avoir besoin d'engager un spécialiste pour des questions plus approfondies.

8. Modèles de licences

Comparaison entre Report .NET et IronPDF : Figure 15 - Informations sur la licence IronPDF for .NET

8.1 Modèle de licence IronPDF

IronPDF offre une variété demodèles de licence pour répondre aux différents besoins en matière de développement et de déploiement, ce qui permet de s'assurer que les projets et les organisations de toutes tailles sont adaptés. En voici un aperçu :

  1. License Lite(749 USD) : Il s'agit de l'option la plus basique, qui convient aux développeurs individuels travaillant sur un seul projet à un seul endroit. Il est accompagné d'une assistance par courrier électronique mais ne couvre pas la redistribution libre de droits.

  2. License Plus(1 499 $US) : Destinée aux petites équipes, cette licence prend en charge jusqu'à trois développeurs travaillant sur trois projets répartis sur trois sites. Il améliore l'assistance en y ajoutant un service de messagerie électronique et de chat 24 heures sur 24, ainsi qu'un service d'assistance téléphonique.

  3. Licence professionnelle(2,999 USD) : Cette solution est conçue pour les équipes et les projets de plus grande envergure, pouvant accueillir jusqu'à 10 développeurs répartis sur 10 sites et travaillant sur 10 projets. Il inclut toutes les options de soutien Plus et ajoute le partage d'écran pour une résolution plus interactive des problèmes.

  4. Licence d'essai gratuite : Idéale à des fins d'évaluation, cettelicence d'essai vous permet d'essayer IronPDF gratuitement. Cependant, il est destiné à un usage privé et les PDF générés ne doivent pas être publiés sur des projets Internet ou intranet publics ou d'entreprise.

    En plus des licences de base, il existe des options pour une couverture étendue :

    • Redistribution libre de droits : Si vous devez inclure IronPDF dans un produit logiciel que vous distribuerez ou vendrez, une couverture de redistribution libre de droits est nécessaire. Le prix est de 1 499 dollars pour le SaaS et la redistribution OEM.
    • Assistance et mises à jour étendues : Ce module complémentaire vous permet de bénéficier d'une assistance et de mises à jour permanentes du produit. Vous pouvez choisir des formules d'assistance d'un an ou de cinq ans, ces dernières permettant de réaliser des économies par rapport à l'option annuelle.

8.2 Modèle de licence Report.NET

Report.NET est distribué gratuitement sous licence LGPL. La LGPL(Licence publique générale restreinte) est une licence de logiciel libre qui permet aux utilisateurs d'exécuter, d'étudier, de partager et de modifier le logiciel. La licence garantit que la bibliothèque Report.NET peut être utilisée librement dans les logiciels libres et propriétaires, tant que les parties du code sous licence LGPL ne sont pas modifiées. S'ils sont modifiés, ces modifications doivent être partagées sous la même licence.

9. Conclusion

Lors de l'examen desIronPDF etReport.NETnous avons examiné divers éléments tels que leurs capacités, la gamme de fonctionnalités qu'ils offrent, la facilité d'utilisation, les services d'assistance et la manière dont ils sont licenciés.

IronPDF offre un riche ensemble de fonctionnalités qui permettent aux développeurs non seulement de créer et d'éditer des fichiers PDF à partir de HTML, d'images et de texte, mais aussi de mettre en œuvre des fonctionnalités avancées telles que le cryptage, les signatures numériques et des en-têtes/pieds de page personnalisés. La prise en charge de différentes licences signifie qu'il peut convenir à des projets de différentes tailles, qu'il s'agisse de développeurs solitaires ou de grandes entreprises. Sa documentation complète et sa structure d'assistance professionnelle en font un outil adapté aux projets pour lesquels des mises à jour régulières et une assistance directe sont importantes. IronPDF propose également un service deessai gratuit d'IronPDF commence à partir de 749 $.

Report.NET, en revanche, est un outil simple qui permet de générer des documents PDF. Sa licence LGPL signifie qu'il est tout à fait accessible aux développeurs qui peuvent l'utiliser dans des projets personnels et commerciaux sans restrictions importantes. Bien qu'il n'offre pas le même niveau d'assistance structurée qu'IronPDF, la nature open-source de Report.NET encourage la contribution et l'aide de la communauté.

Votre décision entre IronPDF et Report.NET dépendra des exigences spécifiques de votre projet. Si votre projet nécessite la création et la manipulation détaillées de PDF avec l'appui d'un support professionnel, IronPDF pourrait être le choix idéal.

< PRÉCÉDENT
Une comparaison entre Compdfkit et IronPDF
SUIVANT >
Outils de reporting C# (comparaison des fonctionnalités)