Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

Une Comparaison Entre Report .NET & IronPDF

In this article, we'll be taking a close look at two popular C# libraries used for working with PDF files: IronPDF - The .NET PDF Library for C# Developers and Report.NET. Ces outils sont essentiels pour les développeurs qui doivent créer, modifier ou interagir avec des documents PDF via leurs applications C#. Les deux bibliothèques offrent une gamme de fonctionnalités conçues pour faciliter la gestion des PDF et la rendre plus efficace, mais elles le font de différentes manières.

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 prennent également en charge le traitement des formulaires, ajoutent des signatures numériques et garantissent que les applications peuvent gérer des PDF sur différentes plateformes sans perdre la fidélité des documents. Cela signifie que, quel que soit l'appareil ou le système d'exploitation, les PDF apparaîtront et fonctionneront comme prévu.

Au fil de cette comparaison, nous explorerons les fonctionnalités spécifiques de chaque bibliothèque, leur fonctionnement, fournirons des extraits de code pour illustrer comment elles peuvent être utilisées et 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, les aidant à décider laquelle pourrait être le mieux adaptée à leurs exigences de projet. Analysons les capacités et les différences entre IronPDF et Report.NET, en nous concentrant sur la simplicité et les perspectives pratiques pour les développeurs.

1. Bibliothèque C# Report.NET

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 simplifiée 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 d'existants. Ses capacités vont de l'ajout simple de texte à l'incorporation d'images et de formes, ce qui en fait un choix polyvalent pour les développeurs cherchant à implémenter des fonctionnalités PDF dans leurs projets.

1.1 Principales caractéristiques de Report.NET

1.1.1 Création et édition de documents

Report.NET excelle dans la création de nouveaux documents PDF et l'édition de ceux existants. Les développeurs peuvent facilement ajouter du texte, des images et des graphiques, permettant la production de 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 le formatage du texte, le placement des images et les éléments graphiques. Ce niveau de contrôle garantit que le PDF final apparaît exactement comme 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 sont nouveaux dans le maniement des PDF dans un contexte de programmation.

1.1.4 Compatibilité entre les plateformes

Report.NET est conçu pour fonctionner de manière transparente sur la plateforme .NET, y compris .NET Core, garantissant 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 de vastes options de personnalisation 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 Open Source

En tant qu'outil open source, Report.NET bénéficie des contributions de la communauté, garantissant qu'il reste à jour et reçoit de nouvelles fonctionnalités au fil du temps. Ce soutien communautaire signifie également que les développeurs peuvent accéder à une mine de connaissances et de ressources.

2. Bibliothèque C# IronPDF

IronPDF est une bibliothèque .NET complète conçue pour faciliter la création, la manipulation et le rendu de documents PDF au sein des 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 parfaitement aux Services de rapports SQL Server. Nous pouvons créer un concepteur de rapports utilisateur final avec IronPDF pour créer un outil de reporting et un visualiseur de rapport.

2.1 Fonctionnalités clés de IronPDF

2.1.1 Conversion HTML en PDF

L'une des principales forces d'IronPDF est sa capacité à convertir HTML et CSS en documents PDF. Cette fonctionnalité est inestimable pour les développeurs cherchant à transformer le contenu web en un format portable tout en préservant le design et la mise en page originaux.

2.1.2 Manipulation de PDF

IronPDF excelle en fournissant aux développeurs des outils pour éditer et manipuler des documents PDF. Cela inclut l'ajout ou la suppression de pages, la modification du texte, et l'intégration d'images. Nous pouvons également extraire des données de rapport des rapports utilisant IronPDF.

2.1.3 Gestion des formulaires

La bibliothèque prend en charge la création et l'édition de formulaires PDF, permettant aux utilisateurs d'interagir avec des documents de manière dynamique. Cette fonctionnalité est cruciale pour les applications nécessitant une saisie de la part des utilisateurs finaux, telles que des enquêtes ou des formulaires de demande.

2.1.4 Fonctionnalités de sécurité

Avec IronPDF, la mise en œuvre des mesures de sécurité comme le cryptage et la protection par mot de passe est simple. Ces fonctionnalités garantissent que les informations sensibles au sein des documents PDF restent sécurisées contre des accès non autorisés.

2.1.5 Impression et Rendu

IronPDF permet aux développeurs de rendre les PDF à la fois pour la visualisation à l'écran et l'impression physique, garantissant une sortie de haute qualité dans les deux cas. Cela facilite la préparation des documents pour une gamme de besoins de présentation ou de distribution.

2.1.6 Support multiplateforme

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

2.1.7 Documentation complète et Assistance

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

2.1.8 Édition avancée de PDF

IronPDF propose de nombreuses fonctionnalités d'édition avancées. Cela inclut la possibilité de fusionner et scinder des documents PDF, ce qui est particulièrement utile pour organiser de grands volumes d'informations ou extraire des sections spécifiques d'un document pour un usage séparé.

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

La bibliothèque permet la personnalisation des en-têtes et des pieds de page dans les documents PDF. Cette capacité est essentielle pour ajouter une marque cohérente, des numéros de page ou des titres de document sur toutes les pages, améliorant l'apparence professionnelle de la sortie.

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

Créer une application console dans l'IDE de Visual Studio est un processus simple qui comprend plusieurs étapes.

3.1 Lancer Visual Studio

Commencez par ouvrir Microsoft Visual Studio. Si vous ne l'avez pas installé, il va falloir le télécharger et l'installer depuis le site officiel de Microsoft. Une fois installé, lancez Visual Studio.

3.2 Créer un nouveau projet

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

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

3.3 Choisir le type de projet

Dans la fenêtre "Créer un nouveau projet", plusieurs modèles de projet vous seront proposés. Tapez "console" dans la boîte de recherche pour filtrer les options, puis sélectionnez "Application Console" dans la liste. Assurez-vous de choisir le modèle correspondant au langage de programmation que vous souhaitez utiliser, comme C#.

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

3.4 Configurer le projet

Une fois que vous avez sélectionné le modèle d'application 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 pertinent qui reflète son objectif.
    • Emplacement : Choisissez l'emplacement sur votre ordinateur où vous souhaitez enregistrer les fichiers du projet.

![Une comparaison entre Report.NET & IronPDF : Figure 3 - Spécifiez le nom du projet et l'emplacement pour le projet Application Console. * Nom de la solution : Par défaut, il est identique au nom de votre projet, mais vous pouvez le changer si vous prévoyez d'inclure plusieurs projets dans une même solution.

  • Framework : Sélectionnez la version du framework .NET que vous voulez cibler. Si vous avez un doute, choisissez la dernière version. ![Une comparaison entre Report.NET & IronPDF : Figure 4 - Sélectionnez la version du Framework .NET que vous souhaitez.

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 selon vos spécifications.

Ce processus peut prendre quelques instants. ## 4. Installer la bibliothèque IronPDF Pour tirer parti des 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 à différents flux de travail ou préférences de développement.

Voici trois méthodes courantes pour installer la bibliothèque IronPDF dans votre projet Visual Studio.

4.1 Installer avec le gestionnaire de packages NuGet L'UI du gestionnaire de packages NuGet dans Visual Studio offre un moyen simple de parcourir, sélectionner et installer des packages.

  1. Dans Visual Studio, accédez à votre projet dans l'Explorateur de solutions, faites un clic droit dessus, et choisissez l'option "Gérer les packages NuGet...".

  2. Cliquez sur l'onglet "Parcourir" et tapez "IronPDF" dans la boîte de recherche.

  3. Trouvez le package IronPDF dans les résultats de recherche, sélectionnez-le, puis cliquez sur le bouton "Installer". Visual Studio se chargera du téléchargement et de l'installation automatiquement. Une comparaison entre Report.NET & IronPDF : Figure 5 - Installez IronPDF en utilisant le Gérer le package NuGet pour Solution en recherchant "IronPDF" dans la barre de recherche du gestionnaire de package NuGet, puis sélectionnez le projet et cliquez sur le bouton Installer. ### 4.2 Installer avec la console de gestion de packages NuGet

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

  1. Ouvrir la console : Allez dans le menu "Outils" dans Visual Studio, puis naviguez à "Gestionnaire de packages NuGet" > "Console du gestionnaire de packages".

  2. Commande d'installation: Dans la console, tapez la commande suivante et appuyez sur Entrée:

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

4.3 Installer en utilisant le site web NuGet

Install-Package IronPdf

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

  1. Visiter le site web NuGet : Allez à nuget.org et cherchez "IronPDF".

  2. Télécharger le package : Depuis la page IronPDF, sé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 package à votre projet manuellement. Dans Visual Studio, allez dans le menu "Outils", puis "Options" > "Gestionnaire de packages NuGet" > "Sources de packages". Ajoutez une nouvelle source pointant vers le dossier où vous avez téléchargé le fichier .nupkg. Enfin, utilisez l'UI ou la console du gestionnaire de packages dans Visual Studio pour installer le package depuis votre source locale. ## 5. Installer la bibliothèque Report.NET Ouvrez votre navigateur web et allez au dépôt GitHub de Report.NET sur https://github.com/ritchiecarroll/Report.NET/tree/master.

Cette page contient la version la plus récente de la bibliothèque Report.NET ainsi que son code source.

5.1 Télécharger la bibliothèque Sur la page du dépôt, localisez le bouton "Code" et cliquez dessus.

Dans le menu déroulant, sélectionnez "Télécharger ZIP" pour télécharger l'intégralité du dépôt sous forme de fichier ZIP. Enregistrez ce fichier dans un endroit pratique sur votre ordinateur et extrayez son contenu.

5.2 Ajouter 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, suivez ces étapes :

  1. Ouvrir votre Projet : Lancez Visual Studio et ouvrez le projet auquel vous souhaitez ajouter Report.NET. 2. Ajouter la bibliothèque manuellement: Il y a plusieurs façons d'inclure la bibliothèque dans votre projet :

    • En tant que bibliothèque d'assemblage compilée: Si le dépôt GitHub inclut un fichier DLL compilé, vous pouvez simplement ajouter un référence à cette DLL dans votre projet. Faites un clic droit sur "Références" dans l'Explorateur de solutions de votre projet, choisissez "Ajouter une référence...", puis accédez à et sélectionnez le fichier DLL.
    • En incluant les fichiers source: Si vous préférez inclure directement le code source ou si une DLL compilée n'est pas fournie, vous pouvez ajouter les fichiers de code source à votre projet. Faites un clic droit sur votre projet dans l'Explorateur de solutions, choisissez "Ajouter" > "Élément existant...", puis naviguez et sélectionnez les fichiers de code source de Report.NET que vous avez extraits du fichier ZIP.
  2. Assurer la compatibilité: Assurez-vous que votre projet cible une version compatible du framework .NET telle que requise par Report.NET. ## 6. Fonctionnalités avancées d'IronPDF vs Report.NET C#

6.1 Fonctionnalités avancées d'IronPDF C#

IronPDF est livré avec une suite de fonctionnalités avancées conçues pour gérer toute une gamme de tâches liées aux PDF avec aisance.

6.1.1 Rendu HTML en PDF

IronPDF peut prendre le contenu HTML, y compris CSS et JavaScript, et le rendre directement dans un document PDF.

Cela signifie que des pages web ou modèles HTML peuvent être convertis en PDF qui ressemblent exactement à ce qu'ils sont dans un navigateur.

6.1.1.1 Chaîne HTML en PDF IronPDF permet la conversion directe de chaînes HTML en PDF.

Cela signifie que les développeurs peuvent prendre du code HTML stocké en tant que variable chaîne et utiliser IronPDF pour le convertir en fichier PDF. Cette fonctionnalité est particulièrement utile lorsque le contenu HTML est généré ou modifié dynamiquement par l'application avant la conversion.

6.1.1.2 Fichier HTML en PDF De même, IronPDF peut convertir des fichiers HTML existants en documents PDF.

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")
$vbLabelText   $csharpLabel

Cela se fait en lisant le fichier HTML depuis le système de fichiers et en utilisant IronPDF pour créer un document PDF avec le même formatage et la même structure.

Une comparaison entre Report.NET & IronPDF : Figure 6 - Sortie fichier HTML en PDF en utilisant IronPDF #### 6.1.1.3 URL en PDF

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")
$vbLabelText   $csharpLabel

IronPDF est également capable de rendre un PDF à partir d'une URL en direct.

Cela permet aux développeurs d'entrer une adresse web, et IronPDF ira chercher le contenu HTML de l'URL et le rendra en tant que PDF.

Une comparaison entre Report.NET & IronPDF : Figure 7 - Sortie conversion URL en PDF utilisant IronPDF #### 6.1.2 Édition 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")
$vbLabelText   $csharpLabel

Avec IronPDF, vous pouvez éditer des documents PDF existants.

Cela inclut l'ajout de texte, d'images et de pages ou la suppression de pages du document.

Vous pouvez également trouver et remplacer du texte dans le document PDF. Une comparaison entre Report.NET & IronPDF : Figure 8 - Sortie : Édition de PDF existant en utilisant IronPDF #### 6.1.3 Extraction de texte et d'images

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")
$vbLabelText   $csharpLabel

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

6.1.4 Génération de formulaires PDF

IronPDF prend en charge la création de formulaires PDF.

Les développeurs peuvent créer des formulaires dans un PDF de manière programmatique et les utilisateurs peuvent les remplir.

Une comparaison entre Report.NET & IronPDF : Figure 9 - Sortie PDF : Génération de formulaires PDF en utilisant IronPDF #### 6.1.5 Fusionner des documents 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");
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")
$vbLabelText   $csharpLabel

Vous pouvez combiner plusieurs fichiers PDF en un seul document.

Cette fonctionnalité est utile pour consolider des rapports ou combiner différentes sections de documents.

Une comparaison entre Report.NET & IronPDF : Figure 10 - Sortie PDF : Génération de plusieurs fichiers PDF et fusion d'eux en un seul PDF. #### 6.1.6 Séparation des documents 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");
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")
$vbLabelText   $csharpLabel

Inversement, IronPDF peut scinder un seul PDF en plusieurs documents.

Cela pourrait être nécessaire si vous voulez distribuer des pages ou sections individuelles.

6.1.7 Cryptage et décryptage de PDF IronPDF permet le cryptage et décryptage de documents PDF, ajoutant une couche supplémentaire de sécurité aux informations sensibles.

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

Avec cette bibliothèque, définir les propriétés du document comme le titre, l'auteur et les métadonnées est simple.

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")
$vbLabelText   $csharpLabel

Cela aide à la gestion et à l'organisation des documents.

6.1.9 Conformité PDF/A IronPDF peut générer des documents conformes à PDF/A, nécessaires pour l'archivage et la tenue de registres à long terme.

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

6.1.10 Rapports XML avec 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 en format HTML.

Cela est réalisé par l'utilisation de XSLT (Extensible Stylesheet Language Transformations), un puissant langage de feuille de style XML conçu pour transformer des documents XML en d'autres formats comme HTML, texte ou même un nouveau document XML.

Imaginons que ce soit notre fichier data.xml : Et c'est notre fichier style.xslt : Voici l'extrait de code qui montre comment nous pouvons aborder cette logique :

<?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>
XML
  1. Vous commencez par une feuille de style XSLT (style.xslt) qui dicte comment les données XML doivent être structurées en HTML.
<?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>
XML

La classe XslCompiledTransform dans .NET est utilisée pour charger votre fichier XSLT.

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")
$vbLabelText   $csharpLabel
  1. Utilisez XmlReader pour charger vos données XML (data.xml). XmlReader est efficace pour cet usage car il offre une vue en lecture seule et seulement en avant des données XML.
  2. Le HTML transformé est écrit dans un fichier (output.html) en utilisant XmlWriter, configuré pour produire un HTML indenté pour la lisibilité et pour omettre la déclaration XML, qui n'est pas nécessaire dans la sortie HTML. 4. Avec le fichier HTML prêt, IronPDF's ChromePdfRenderer est ensuite utilisé pour convertir le document HTML en PDF. Ce moteur imite un moteur de rendu de haute qualité, garantissant que le PDF généré représente fidèlement le contenu HTML.
  3. Enfin, le document PDF est enregistré sur le système de fichiers (Report.pdf). Cette étape conclut le processus de conversion, résultant en un document PDF dérivé des données XML d'origine. C'est ainsi que nous générons des rapports utilisant XML et IronPDF. Le fichier PDF de sortie que nous générons :

Une comparaison entre Report.NET & IronPDF : Figure 11 - Fichier PDF de sortie issu des rapports XML utilisant IronPDF et XSLT Nous pouvons également créer des rapports interactifs SAP de manière programmatique puis les convertir en utilisant IronPDF.

Pour un guide plus détaillé, suivez ce guide sur la génération de rapports C#.

6.2 Fonctionnalités avancées de Report.NET Report.NET propose une suite de fonctionnalités avancées qui permettent une génération et une personnalisation complètes des PDF.

Les fonctionnalités listées dans l'image reflètent certaines de ces capacités avancées.

Explorons chacune en détail. #### 6.2.1 Ajout de polices Cette fonctionnalité permet l'utilisation de différents styles et tailles de polices dans un document PDF.

Les développeurs peuvent tester l'apparence de différentes polices, assurant que le texte est affiché correctement et selon les spécifications de conception.

Une comparaison entre Report.NET & IronPDF : Figure 12 - Ajout de différents styles de police et tailles à un document PDF en utilisant Report.NET #### 6.2.2 Intégration d'images

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
$vbLabelText   $csharpLabel

Avec la fonctionnalité d'échantillon d'images, les développeurs peuvent intégrer des images dans les documents PDF.

Cela inclut le contrôle de la taille et du positionnement des images, ainsi que l'application potentielle de transformations ou d'effets sur elles.

Une comparaison entre Report.NET & IronPDF : Figure 13 - Sortie PDF : Intégration de images dans les documents PDF en utilisant Report.NET #### 6.2.3 Gestionnaire de mise en page de liste

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
$vbLabelText   $csharpLabel

Le gestionnaire de mise en page de liste fournit une méthode pour ajouter des listes à un document PDF.

C'est utile pour créer des listes ordonnées ou non ordonnées, personnaliser l'indentation des listes, les styles de puce, et gérer la disposition générale des éléments de liste dans le document.

Une comparaison entre Report.NET & IronPDF : Figure 14 - Sortie PDF: Ajout de listes aux documents PDF en utilisant Report.NET #### 6.2.4 Propriétés PDF

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
$vbLabelText   $csharpLabel

Cela fait référence à la capacité 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é comme le cryptage et les autorisations d'accès.

6.2.5 PDF à partir de texte

La fonctionnalité PDF à partir du texte met en valeur les capacités de la bibliothèque dans l'ajout et la personnalisation du contenu textuel dans un PDF.

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
$vbLabelText   $csharpLabel

Cela inclut le réglage de l'alignement du texte, l'espacement des lignes, la couleur, et l'application d'effets de texte comme le gras ou l'italique.

7. Documentation et assistance IronPDF offre une section de documentation bien organisée qui inclut des instructions d'installation, des tutoriels et des références API.

documentation détaillée et extensive.

IronPDF offre une section de documentation bien organisée qui inclut des instructions d'installation, des tutoriels et des références API.

IronPDF is known for its extensive and Les guides sont structurés pour aider à la fois les débutants et les développeurs expérimentés à trouver rapidement les informations dont ils ont besoin. Pour le soutien communautaire, les développeurs peuvent se tourner vers les forums et les discussions communautaires. Ici, ils peuvent poser des questions, partager des expériences, et trouver des réponses d'autres utilisateurs. IronPDF propose également un support professionnel via un système de tickets où les ingénieurs peuvent obtenir de l'aide directement de l'équipe IronPDF. Ce service peut faire partie de la licence payante, qui offre une assistance plus directe et immédiate.

La documentation pourrait ne pas être aussi étendue que celle des bibliothèques commerciales, mais elle est suffisante pour commencer et pour gérer les tâches courantes. Report.NET, étant une bibliothèque open source, a une approche différente de la documentation et de l'assistance.

La documentation pourrait ne pas être aussi étendue que celle des bibliothèques commerciales, mais elle est suffisante pour commencer et pour gérer 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. Il a tendance à être plus technique et peut nécessiter un peu de recherche pour trouver les informations nécessaires. Étant donné que Report.NET est une bibliothèque gratuite et open source, elle ne propose pas de support professionnel formel. Les développeurs comptent sur la communauté pour de l'aide ou pourraient devoir engager un spécialiste pour des problèmes plus profonds.

8. Modèles de licence Une comparaison entre Report.NET & IronPDF : Figure 15 - Informations sur la licence IronPDF pour .NET

8.1 Modèle de licence IronPDF

IronPDF offre une variété de modèles de licence pour répondre aux différents besoins de développement et de déploiement, assurant qu'il existe une solution pour des projets et organisations de toutes tailles.

Voici un aperçu :

  1. Licence Lite ($799 USD) : Il s'agit de l'option la plus basique, adaptée aux développeurs individuels travaillant sur un seul projet à un endroit donné. Elle comprend un support par email mais ne couvre pas la redistribution sans redevance.

  2. Licence Plus ($1,199 USD) : Orienté vers les petites équipes, cette licence prend en charge jusqu'à trois développeurs travaillant sur trois projets à travers trois lieux. Elle améliore le support pour inclure des emails et chat 24 heures sur 24, ainsi qu'un support téléphonique.
  3. Licence Professionnelle ($2,399 USD) : Conçue pour les plus grandes équipes et projets, elle peut accueillir jusqu'à 10 développeurs sur 10 lieux travaillant sur 10 projets. Elle inclut toutes les options de support Plus et ajoute un support par partage d'écran pour une résolution de problèmes plus interactive.
  4. Licence d'évaluation gratuite : Idéale pour les évaluations, cette licence d'essai vous permet d'essayer IronPDF sans frais. Toutefois, elle est destinée à une utilisation privée et les PDF générés ne doivent pas être publiés sur un projet internet ou intranet public ou d'entreprise. En plus des licences de base, il existe des options pour une couverture étendue :
    • Redistribution sans redevance : Si vous devez inclure IronPDF dans un produit logiciel que vous distribuerez ou vendrez, une couverture de redistribution sans redevance est requise.

Cela est tarifé à $1,199 pour la redistribution SaaS et OEM.

  • Support et mises à jour étendus : Cet ajout vous assure de recevoir des mises à jour continues et du soutien produit. Vous pouvez choisir entre des packages de support d'1 an ou de 5 ans, ce dernier offrant des économies par rapport à l'option annuelle.

8.2 Modèle de licence Report.NET You can choose from 1-year or 5-year support packages, with the latter offering savings over the annual option.

8.2 Report.NET License Model

Report.NET est distribué gratuitement sous la licence LGPL. La LGPL (Lesser General Public License) est une licence de logiciel libre qui permet aux utilisateurs d'exécuter, étudier, partager et modifier le logiciel. La licence garantit que la bibliothèque Report.NET est libre d'utilisation dans les logiciels open-source et propriétaires, tant que les parties du code sous licence LGPL ne sont pas modifiées. Si elles sont modifiées, ces modifications doivent être partagées sous la même licence.

9. Conclusion

When looking at IronPDF and Report.NET, we've examined various elements such as their capabilities, the range of features they offer, ease of use, support services, and how they are licensed.

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 également d'implémenter des fonctions avancées telles que le cryptage, les signatures numériques et les en-têtes/pieds de page personnalisés. Le support pour différentes licences signifie qu'il peut convenir à des projets de différentes tailles allant des développeurs solos aux grandes entreprises. Sa documentation exhaustive et sa structure de support professionnel le rendent approprié pour les projets où des mises à jour constantes et une assistance directe sont importantes. IronPDF offre également un essai gratuit d'IronPDF à partir de $799.

Report.NET, en revanche, est un outil simple et compétent pour générer des documents PDF. Sa licence LGPL signifie qu'il est assez accessible pour les développeurs à utiliser dans des projets personnels et commerciaux sans restrictions significatives. Bien qu'il n'offre peut-être pas le même niveau de support structuré qu'IronPDF, la nature open-source de Report.NET encourage les contributions 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 une création et une manipulation détaillées de PDF avec le soutien d'un support professionnel, IronPDF pourrait être le choix préféré.

Veuillez noterReport.NET est une marque déposée de son propriétaire respectif. Ce site n'est pas affilié, approuvé ou sponsorisé par Report.NET. 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 PDFs. Vous pouvez également convertir des fichiers HTML en PDFs en utilisant RenderHtmlFileAsPdf.

Quelles sont les principales caractéristiques de la bibliothèque C# pour créer et éditer des documents PDF ?

IronPDF propose des fonctionnalités telles que la conversion HTML en PDF, des capacités d'édition avancées, y compris la fusion et la division de PDF, la gestion des formulaires, le cryptage et la compatibilité cross-plateforme.

Comment IronPDF gère-t-il la sécurité des PDF ?

IronPDF prend en charge la mise en œuvre de mesures de sécurité telles que le cryptage et la protection par mot de passe pour garantir que les informations sensibles contenues dans les documents PDF restent sécurisées.

IronPDF peut-il être utilisé pour l'édition avancée des PDF ?

Oui, IronPDF offre des fonctionnalités d'édition avancées telles que la fusion et la division de PDF, la gestion des formulaires, et la personnalisation des en-têtes et pieds de page.

Quelles sont les options de documentation et de support disponibles pour IronPDF ?

IronPDF fournit une documentation détaillée, des forums communautaires et des options de support professionnel, y compris un support par email, chat et téléphone, selon la licence.

Quelles options de licence offre IronPDF ?

IronPDF propose plusieurs licences, y compris Lite, Plus, et Professional, chacune adaptée à différentes tailles de projets et besoins de support. Il offre également un essai gratuit pour évaluation.

IronPDF est-il une bibliothèque PDF cross-plateforme ?

Oui, IronPDF est conçu pour fonctionner sans problème sur la plateforme .NET, y compris .NET Core, garantissant la compatibilité sur différents systèmes d'exploitation.

Quel est l'avantage d'utiliser IronPDF pour la génération de PDF ?

IronPDF est connu pour ses capacités robustes dans la création, l'édition et le rendu de PDFs à partir de HTML, et sa documentation détaillée en fait un outil flexible pour les développeurs.

Quelles sont les scénarios courants de dépannage lors de l'utilisation d'IronPDF ?

Les problèmes courants incluent le rendu incorrect des éléments HTML dans les PDFs, qui peuvent généralement être résolus en garantissant la compatibilité CSS et en utilisant la version la plus récente d'IronPDF.

Comment IronPDF se compare-t-il aux bibliothèques PDF open-source ?

IronPDF offre des fonctionnalités plus avancées et un support professionnel, tandis que les solutions open-source comme Report.NET offrent simplicité et support piloté par la communauté.

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