Passer au contenu du pied de page
COMPARAISONS DE PRODUITS

IronPDF vs `GrapeCity` PDF : Comparaison de bibliothèques PDF .NET

IronPDF est spécialisé dans la génération de PDF à partir de HTML avec le moteur de rendu Chrome V8 pour les applications .NET, tandis que GrapeCity PDF se concentre sur les fonctionnalités de visualisation et d'annotation des PDF, faisant d'IronPDF le choix idéal pour les développeurs ayant besoin de capacités complètes de création de PDF avec une prise en charge moderne du contenu Web.

PDF signifie Portable Document Format. Il s'agit d'un type de fichier qui permet la visualisation classique de documents sur de nombreux appareils différents. Les PDF sont souvent utilisés pour partager des documents importants tels que des CV avec des employeurs potentiels ou des factures avec des clients.

Malgré sa popularité, le format PDF présente certaines limitations. Par exemple, il est impossible de partager des fichiers PDF par e-mail sans que les destinataires aient besoin d'un lecteur PDF. Les fichiers PDF peuvent ne pas s'afficher correctement sur les appareils mobiles, contrairement aux documents Word. De plus, contrairement aux documents Word, les fichiers PDF nécessitent un logiciel d'édition pour modifier ou mettre à jour leur contenu. Cependant, les fichiers PDF conservent une apparence uniforme sur tous les appareils, qu'il s'agisse de PC ou de Mac. Cette fiabilité fait du format PDF un format standard que l'on ne retrouve pas dans d'autres types de documents comme le JPEG ou le GIF.

Dans cet article, nous examinerons deux bibliothèques PDF .NET :

  • IronPDF
  • PDF GrapeCity

Qu'est-ce qu'IronPDF et comment se compare-t-il à GrapeCity ?

IronPDF est une bibliothèque .NET fournissant des fonctions pour créer, lire et manipuler des documents PDF avec un minimum de code. Cet article explique comment créer des fichiers PDF avec IronPDF. Vous devez posséder des connaissances de base de Visual Studio ou de C# et une connaissance pratique de HTML.

Pour écrire, compiler et exécuter des applications, vous avez besoin de Visual Studio ; pour la logique et le code, de C# ; et pour la mise en forme des fichiers PDF (titres, en-têtes, images et paragraphes), de HTML. IronPDF est entièrement compatible avec .NET Core , .NET 5, Framework et Standard. Pour les applications ASP.NET , IronPDF offre une intégration fluide pour la conversion de pages web en PDF.

Vous pouvez créer des fichiers PDF en C# avec un minimum de code, à condition de posséder des connaissances de base en C# et en HTML. Pour en savoir plus, consultez la page officielle des fonctionnalités d'IronPDF . Pour la création de PDF par programmation , IronPDF offre des fonctionnalités étendues allant au-delà de la simple conversion HTML.

Comment installer IronPDF dans mon projet .NET ?

Le développement de solutions nécessite l'installation du package NuGet IronPDF . Cliquez sur " Projet " dans la barre de menu. Sélectionnez " Gérer les packages NuGet " dans le menu déroulant. Pour des instructions détaillées, consultez la présentation de l'installation . Cette fenêtre affichera :

NuGet Package Manager window in Visual Studio showing no search results for IronPdf package

L'interface du gestionnaire de packages NuGet affiche un résultat de recherche vide lors de la recherche d'IronPdf, indiquant que le package est peut-être indisponible ou qu'il peut y avoir des problèmes de connexion.

Sélectionnez " Parcourir " pour afficher cette fenêtre :

NuGet Package Manager interface in Visual Studio showing popular .NET packages including Entity Framework Core, Newtonsoft.Json, and Microsoft.Extensions.`DependencyInjection` with their version numbers and download counts.

Le gestionnaire de packages NuGet offre un accès facile aux bibliothèques .NET essentielles, parmi lesquelles Entity Framework Core et Newtonsoft.Json figurent parmi les packages les plus populaires pour les opérations de base de données et la gestion JSON respectivement.

Saisissez " IronPdf " dans le champ de recherche et appuyez sur " Entrée ". Pour les options d'installation avancées , y compris les configurations spécifiques à la plateforme, consultez la documentation. Vous devriez voir :

NuGet Package Manager showing search results for IronPDF packages, including the main IronPDF library with 1.87M downloads and related rendering assets packages.

L'interface du gestionnaire de packages NuGet affiche les différents packages IronPDF disponibles pour l'installation, avec le nombre de téléchargements et les numéros de version visibles pour chaque package.

Sélectionnez IronPDF :

NuGet Package Manager showing IronPDF installation options alongside competing PDF libraries including PDFCore and other IronPDF rendering packages

L'interface du gestionnaire de packages NuGet affiche IronPDF (version 2021.3.1) comme package sélectionné pour l'installation, avec des bibliothèques PDF alternatives listées à titre de comparaison, notamment PDFCore et divers éléments de rendu IronPDF.

Cliquez sur " Installer ". Une fois l'installation réussie, vous verrez :

Visual Studio dialog showing IronPDF package installation with dependencies including IronPdf.2021.3.1 and related packages.

Processus d'installation d'IronPDF dans Visual Studio, montrant le gestionnaire de packages NuGet installant IronPDF version 2021.3.1 ainsi que ses dépendances.

Appuyez sur " OK " pour terminer l'installation. IronPDF prend en charge les plateformes Windows , notamment Windows 10, 11 et les versions Server. La bibliothèque prend également en charge Linux et macOS pour le développement multiplateforme.

Comment créer des PDF avec IronPDF ?

Ajoutez l'espace de noms IronPdf en haut du fichier. Une fonctionnalité similaire est disponible pour les développeurs VB.NET :

using IronPdf;
using IronPdf;
$vbLabelText   $csharpLabel

Vous avez besoin d'un chemin d'accès pour enregistrer le fichier PDF généré. Utilisez SaveFileDialog pour inviter les utilisateurs à saisir le nom et le chemin du fichier. Pour les scénarios avancés, exportez les fichiers PDF vers des flux de mémoire sans enregistrement sur disque :

private void Save_Click(object sender, EventArgs e)
{
    // Code to Select the folder and save the file.
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.InitialDirectory = @"D:\";
    saveFileDialog1.Title = "Save Pdf File";
    saveFileDialog1.DefaultExt = "pdf";
    saveFileDialog1.Filter = "Pdf files (*.pdf)|*.pdf|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string filename = saveFileDialog1.FileName;
        // actual code that will create Pdf files
        var HtmlLine = new HtmlToPdf();
        HtmlLine.RenderHtmlAsPdf(PdfText.Text).SaveAs(filename);
        // MessageBox to display that file save
        MessageBox.Show("File Saved Successfully!");
    }
}
private void Save_Click(object sender, EventArgs e)
{
    // Code to Select the folder and save the file.
    SaveFileDialog saveFileDialog1 = new SaveFileDialog();
    saveFileDialog1.InitialDirectory = @"D:\";
    saveFileDialog1.Title = "Save Pdf File";
    saveFileDialog1.DefaultExt = "pdf";
    saveFileDialog1.Filter = "Pdf files (*.pdf)|*.pdf|All files (*.*)|*.*";
    saveFileDialog1.FilterIndex = 2;
    saveFileDialog1.RestoreDirectory = true;
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
    {
        string filename = saveFileDialog1.FileName;
        // actual code that will create Pdf files
        var HtmlLine = new HtmlToPdf();
        HtmlLine.RenderHtmlAsPdf(PdfText.Text).SaveAs(filename);
        // MessageBox to display that file save
        MessageBox.Show("File Saved Successfully!");
    }
}
$vbLabelText   $csharpLabel

SaveFileDialog ouvre une boîte de dialogue permettant de sélectionner le dossier et le nom du fichier. Le répertoire initial est par défaut le lecteur D, mais vous pouvez le modifier. DefaultExtension est définie sur PDF. Pour connaître toutes les options de conversion, consultez le tutoriel HTML vers PDF .

La condition " si " contient le code qui génère le PDF. Vous générez des PDF avec seulement deux lignes de code. PdfText est le nom de la zone de texte enrichi contenant le contenu PDF. Le nom du fichier correspond au chemin d'accès au fichier sélectionné dans la SaveFileDialog . Pour les applications web, IronPDF prend en charge la conversion d'URL en PDF et la conversion ASPX en PDF .

Comment lire des fichiers PDF avec IronPDF ?

Avec IronPDF, la lecture des fichiers PDF ne nécessite que deux lignes de code. Pour une extraction avancée, consultez le guide d'extraction de texte et d'images .

Ajoutez ces importations :

using IronPdf;
using System;
using System.Windows.Forms;
using IronPdf;
using System;
using System.Windows.Forms;
$vbLabelText   $csharpLabel

Écrivez ce code à l'intérieur de votre fonction. IronPDF offre des fonctionnalités d'analyse de fichiers PDF et d'accès au DOM des PDF :

private void Read_Click(object sender, EventArgs e)
{
    PdfDocument PDF = PdfDocument.FromFile(FilePath.Text);
    FileContent.Text = PDF.ExtractAllText();
}
private void Read_Click(object sender, EventArgs e)
{
    PdfDocument PDF = PdfDocument.FromFile(FilePath.Text);
    FileContent.Text = PDF.ExtractAllText();
}
$vbLabelText   $csharpLabel

Cela extrait toutes les informations des documents pour les visionneuses. Les composants de reporting utilisent ces données comme sources. IronPDF permet de lire les fichiers PDF à partir de flux de mémoire et de convertir les fichiers PDF en HTML pour l'affichage sur le Web.

Quelles sont les fonctionnalités offertes par GrapeCity PDF ?

GrapeCity Documents propose une gestion documentaire multiplateforme pour les formats courants. La bibliothèque .NET Standard 2.0 permet de lire, générer, modifier et enregistrer des fichiers PDF sans Adobe Acrobat. Il offre la prise en charge des polices de caractères, des images, des graphiques, des codes-barres, des commentaires, des contours, des tampons et des filigranes.

Quelles sont les fonctionnalités de manipulation de fichiers PDF disponibles ?

GrapeCity PDF crée des PDF pour répondre aux besoins métiers, simples ou complexes, des applications .NET Standard. Vous pouvez charger, modifier et enregistrer des PDF depuis n'importe quelle source. IronPDF offre des fonctionnalités complètes d'édition de PDF, notamment la fusion/division de PDF , l'ajout/la suppression de pages et la rotation des pages .

Puis-je convertir des PDF en images ?

GrapeCity PDF enregistre les PDF sous forme d'images sans perte de qualité grâce à un minimum de code. IronPDF propose une fonctionnalité de rastérisation de PDF en images prenant en charge les formats PNG, JPEG et TIFF.

GrapeCity inclut-il un module de visualisation de fichiers PDF ?

GrapeCity Documents PDF Viewer est une visionneuse légère côté client prenant en charge les fonctionnalités PDF standard. Pour les développeurs .NET MAUI, IronPDF offre la visualisation de fichiers PDF dans les applications MAUI avec des fonctionnalités de navigation et de recherche.

Quelles sont les fonctionnalités prises en charge ?

GrapeCity PDF crée des PDF complexes avec du texte, des graphiques, des photos, des annotations et des contours. IronPDF étend ces fonctionnalités avec des signatures numériques , la création/le remplissage de formulaires , le marquage numérique et la gestion des métadonnées .

Comment installer GrapeCity PDF ?

Deux méthodes d'installation existent. Pour le déploiement conteneurisé, IronPDF offre la prise en charge de Docker et l'exploitation à distance des conteneurs pour une génération flexible :

  1. Téléchargez les fichiers sources compressés.
  2. Extraire les fichiers dans un répertoire.
  3. Accédez à ce répertoire.
  4. Exécutez run.cmd pour compiler les exemples, démarrer le service SupportApi et ouvrir http://localhost:3003.
  5. Consultez readme.MD pour plus de détails.

Comment installer l'édition WinForms ?

Suivez ces étapes pour l'installation de l'édition WinForms :

  • Download C1ControlPanel from GrapeCity's ComponentOne.
  • Ouvrez ControlPanel avec ComponentOne C1ControlPanel.exe (fermez Visual Studio).
  • Connectez-vous avec votre adresse e-mail et votre mot de passe enregistrés.
  • Pour les nouveaux utilisateurs :
    • Inscrivez-vous et créez un compte.
    • Vérifiez votre adresse e-mail.
    • Activer via le lien de vérification.
    • Vous pouvez continuer en tant qu'utilisateur anonyme si vous le préférez.
  • Sélectionnez la tuile " Installer dans WinForms Edition ". Installez toutes les éditions via la case à cocher " Toutes les éditions ".
`ComponentOne` product edition comparison showing six different editions including `WinForms`, WPF, MVC, MVC Core, Wijmo, and UWP editions with their descriptions and install options

`GrapeCity`'s `ComponentOne` offers multiple edition options tailored to different development platforms and frameworks, each with the option to install sample projects

  • Cliquez sur Installer pour consulter le contrat de licence. Accepter après examen.
  • Acceptez le contrat de licence pour accéder à la page des paramètres. Vérifiez le chemin d'accès au répertoire et lancez l'installation.
`ComponentOne` installation settings screen showing installation directory, samples directory, and options to join customer experience program and send system information

`ComponentOne` installation configuration screen with privacy and data collection options

  • L'assistant d'installation affiche la progression de l'installation des commandes. Impossible d'annuler pendant cette procédure.
  • L'écran " Installation réussie " s'affiche une fois l'installation terminée. Affiche la version actuellement installée.
`WinForms` Edition installation dialog showing download progress and install button for 65+ UI controls

The `WinForms` Edition installer interface displays a simple download progress bar and installation option for a suite of 65+ smart and effective UI controls designed for rapid Windows Forms development.

`ComponentOne` installation success screen showing version 20183.1.338 with View Log and Back buttons

The `ComponentOne` installation interface displays a successful installation message for version 20183.1.338, featuring navigation tabs for Products, Activities, License, and Support

Comment créer des PDF avec GrapeCity ?

Le code suivant illustre la création de PDF basiques GrapeCity . Pour des fonctionnalités avancées telles que la conversion HTML vers PDF avec JavaScript , le CSS réactif ou les en-têtes/pieds de page personnalisés , IronPDF propose des solutions complètes :

using System;
using System.IO;
using System.Drawing;
using System.Text;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Common;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Structure;
using GrapeCity.Documents.Pdf.MarkedContent;
using GrapeCity.Documents.Pdf.Graphics;
using GrapeCity.Documents.Pdf.Annotations;
using GCTEXT = GrapeCity.Documents.Text;
using GCDRAW = GrapeCity.Documents.Drawing;
namespace GcPdfWeb.Samples.Basics
{
    // This sample shows how to create a PDF/A-3u compliant document.
    public class PdfA
    {
        public void CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            var date = new DateTime(1961, 4, 12, 6, 7, 0, DateTimeKind.Utc);

            // Mark the document as PDF/A-3u conformant:
            doc.ConformanceLevel = PdfAConformanceLevel.PdfA3u;

            var fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "arial.ttf"));
            var gap = 36;

            // PDF/A-3a requires all content to be tagged so create and populate StructElement when rendering:
            StructElement sePart = new StructElement("Part");
            doc.StructTreeRoot.Children.Add(sePart);

            TextLayout tl = null;
            // Add 3 pages with sample content tagged according to PDF/A rules:
            for (int pageNo = 1; pageNo <= 3; ++pageNo)
            {
                // add page
                var page = doc.Pages.Add();
                var g = page.Graphics;
                float y = 72;
                if (doc.Pages.Count == 1)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    tl = g.CreateTextLayout();
                    tl.MarginAll = 72;
                    tl.MaxWidth = page.Size.Width;

                    tl.DefaultFormat.Font = fnt;
                    tl.DefaultFormat.FontBold = true;
                    tl.DefaultFormat.FontSize = 20;
                    tl.Append("PDF/A-3A Document");

                    // PerformLayout is done automatically in a new TextLayout or after a Clear():
                    //tl.PerformLayout(true);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", 0));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y = tl.ContentRectangle.Bottom + gap;

                    seParagraph.ContentItems.Add(new McidContentItemLink(0));
                }

                // Add some sample paragraphs tagged according to PDF/A rules:
                for (int i = 1; i <= 3; ++i)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    var sb = new StringBuilder();
                    sb.Append(string.Format("Paragraph {0} on page {1}: ", i, pageNo));
                    sb.Append(Common.Util.LoremIpsum(1, 2, 4, 5, 10));
                    var para = sb.ToString();

                    tl.Clear();
                    tl.DefaultFormat.FontSize = 14;
                    tl.DefaultFormat.FontBold = false;
                    tl.MarginTop = y;
                    tl.Append(para);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", i));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y += tl.ContentHeight + gap;

                    // Add content item to paragraph StructElement:
                    seParagraph.ContentItems.Add(new McidContentItemLink(i));

                    // PDF/A-3 allows embedding files into document, but they should be associated with some document element
                    // add embedded file associated with seParagraph:
                    var ef1 = EmbeddedFileStream.FromBytes(doc, Encoding.UTF8.GetBytes(para));
                    // ModificationDate and MimeType should be specified in case of PDF/A:
                    ef1.ModificationDate = date;
                    ef1.MimeType = "text/plain";
                    var fn = string.Format("Page{0}_Paragraph{1}.txt", pageNo, i);
                    var fs1 = FileSpecification.FromEmbeddedStream(fn, ef1);
                    // UnicodeFile.FileName should be specified for PDF/A compliance:
                    fs1.UnicodeFile.FileName = fs1.File.FileName;
                    // Relationship should be specified in case of PDF/A:
                    fs1.Relationship = AFRelationship.Unspecified;
                    doc.EmbeddedFiles.Add(fn, fs1);
                    seParagraph.AssociatedFiles.Add(fs1);
                }
            }

            // PDF/A-3 allows transparency drawing in PDF file, add some:
            var gpage = doc.Pages [0].Graphics;
            gpage.FillRectangle(new RectangleF(20, 20, 200, 200), Color.FromArgb(40, Color.Red));

            // PDF/A-3 allows using FormXObjects, add one with transparency:
            var r = new RectangleF(0, 0, 144, 72);
            var fxo = new FormXObject(doc, r);
            var gfxo = fxo.Graphics;
            gfxo.FillRectangle(r, Color.FromArgb(40, Color.Violet));
            TextFormat tf = new TextFormat()
            {
                Font = fnt,
                FontSize = 16,
                ForeColor = Color.FromArgb(100, Color.Black),
            };
            gfxo.DrawString("FormXObject", tf, r, TextAlignment.Center, ParagraphAlignment.Center);
            gfxo.DrawRectangle(r, Color.Blue, 3);
            gpage.DrawForm(fxo, new RectangleF(300, 250, r.Width, r.Height), null, ImageAlign.ScaleImage);

            // PDF/A-3 allows using embedded files, but each embedded file must be associated with a document's element:
            EmbeddedFileStream ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "WordDocs", "ProcurementLetter.docx"));
            // ModificationDate and MimeType should be specified for EmbeddedFile in PDF/A:
            ef.ModificationDate = date;
            ef.MimeType = "application/msword";
            var fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("ProcurementLetter.docx", fs);
            // Associate embedded file with the document:
            doc.AssociatedFiles.Add(fs);

            // Add an attachment associated with an annotation:
            var sa = new StampAnnotation()
            {
                UserName = "Minerva",
                Font = fnt,
                Rect = new RectangleF(300, 36, 220, 72),
            };
            sa.Flags |= AnnotationFlags.Print;
            // Use a FormXObject to represent the stamp annotation:
            var stampFxo = new FormXObject(doc, new RectangleF(PointF.Empty, sa.Rect.Size));
            var gstampFxo = stampFxo.Graphics;
            gstampFxo.FillRectangle(stampFxo.Bounds, Color.FromArgb(40, Color.Green));
            gstampFxo.DrawString("Stamp Annotation\nassociated with minerva.jpg", tf, stampFxo.Bounds, TextAlignment.Center, ParagraphAlignment.Center);
            gstampFxo.DrawRectangle(stampFxo.Bounds, Color.Green, 3);
            //
            sa.AppearanceStreams.Normal.Default = stampFxo;
            doc.Pages [0].Annotations.Add(sa);
            ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "Images", "minerva.jpg"));
            ef.ModificationDate = date;
            ef.MimeType = "image/jpeg";
            fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("minerva.jpg", fs);
            sa.AssociatedFiles.Add(fs);

            // Mark the document as conforming to Tagged PDF conventions (required for PDF/A):
            doc.MarkInfo.Marked = true;

            // Metadata.CreatorTool and DocumentInfo.Creator should be the same for a PDF/A document:
            doc.Metadata.CreatorTool = doc.DocumentInfo.Creator;
            // A title should be specified for PDF/A document:
            doc.Metadata.Title = "GcPdf Document";
            doc.ViewerPreferences.DisplayDocTitle = true;

            // Done:
            doc.Save(stream);
        }
    }
}
using System;
using System.IO;
using System.Drawing;
using System.Text;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Common;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Pdf.Structure;
using GrapeCity.Documents.Pdf.MarkedContent;
using GrapeCity.Documents.Pdf.Graphics;
using GrapeCity.Documents.Pdf.Annotations;
using GCTEXT = GrapeCity.Documents.Text;
using GCDRAW = GrapeCity.Documents.Drawing;
namespace GcPdfWeb.Samples.Basics
{
    // This sample shows how to create a PDF/A-3u compliant document.
    public class PdfA
    {
        public void CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            var date = new DateTime(1961, 4, 12, 6, 7, 0, DateTimeKind.Utc);

            // Mark the document as PDF/A-3u conformant:
            doc.ConformanceLevel = PdfAConformanceLevel.PdfA3u;

            var fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "arial.ttf"));
            var gap = 36;

            // PDF/A-3a requires all content to be tagged so create and populate StructElement when rendering:
            StructElement sePart = new StructElement("Part");
            doc.StructTreeRoot.Children.Add(sePart);

            TextLayout tl = null;
            // Add 3 pages with sample content tagged according to PDF/A rules:
            for (int pageNo = 1; pageNo <= 3; ++pageNo)
            {
                // add page
                var page = doc.Pages.Add();
                var g = page.Graphics;
                float y = 72;
                if (doc.Pages.Count == 1)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    tl = g.CreateTextLayout();
                    tl.MarginAll = 72;
                    tl.MaxWidth = page.Size.Width;

                    tl.DefaultFormat.Font = fnt;
                    tl.DefaultFormat.FontBold = true;
                    tl.DefaultFormat.FontSize = 20;
                    tl.Append("PDF/A-3A Document");

                    // PerformLayout is done automatically in a new TextLayout or after a Clear():
                    //tl.PerformLayout(true);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", 0));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y = tl.ContentRectangle.Bottom + gap;

                    seParagraph.ContentItems.Add(new McidContentItemLink(0));
                }

                // Add some sample paragraphs tagged according to PDF/A rules:
                for (int i = 1; i <= 3; ++i)
                {
                    // Create paragraph element:
                    var seParagraph = new StructElement("P") { DefaultPage = page };
                    // Add it to Part element:
                    sePart.Children.Add(seParagraph);

                    var sb = new StringBuilder();
                    sb.Append(string.Format("Paragraph {0} on page {1}: ", i, pageNo));
                    sb.Append(Common.Util.LoremIpsum(1, 2, 4, 5, 10));
                    var para = sb.ToString();

                    tl.Clear();
                    tl.DefaultFormat.FontSize = 14;
                    tl.DefaultFormat.FontBold = false;
                    tl.MarginTop = y;
                    tl.Append(para);

                    // Draw TextLayout within tagged content:
                    g.BeginMarkedContent(new TagMcid("P", i));
                    g.DrawTextLayout(tl, PointF.Empty);
                    g.EndMarkedContent();

                    y += tl.ContentHeight + gap;

                    // Add content item to paragraph StructElement:
                    seParagraph.ContentItems.Add(new McidContentItemLink(i));

                    // PDF/A-3 allows embedding files into document, but they should be associated with some document element
                    // add embedded file associated with seParagraph:
                    var ef1 = EmbeddedFileStream.FromBytes(doc, Encoding.UTF8.GetBytes(para));
                    // ModificationDate and MimeType should be specified in case of PDF/A:
                    ef1.ModificationDate = date;
                    ef1.MimeType = "text/plain";
                    var fn = string.Format("Page{0}_Paragraph{1}.txt", pageNo, i);
                    var fs1 = FileSpecification.FromEmbeddedStream(fn, ef1);
                    // UnicodeFile.FileName should be specified for PDF/A compliance:
                    fs1.UnicodeFile.FileName = fs1.File.FileName;
                    // Relationship should be specified in case of PDF/A:
                    fs1.Relationship = AFRelationship.Unspecified;
                    doc.EmbeddedFiles.Add(fn, fs1);
                    seParagraph.AssociatedFiles.Add(fs1);
                }
            }

            // PDF/A-3 allows transparency drawing in PDF file, add some:
            var gpage = doc.Pages [0].Graphics;
            gpage.FillRectangle(new RectangleF(20, 20, 200, 200), Color.FromArgb(40, Color.Red));

            // PDF/A-3 allows using FormXObjects, add one with transparency:
            var r = new RectangleF(0, 0, 144, 72);
            var fxo = new FormXObject(doc, r);
            var gfxo = fxo.Graphics;
            gfxo.FillRectangle(r, Color.FromArgb(40, Color.Violet));
            TextFormat tf = new TextFormat()
            {
                Font = fnt,
                FontSize = 16,
                ForeColor = Color.FromArgb(100, Color.Black),
            };
            gfxo.DrawString("FormXObject", tf, r, TextAlignment.Center, ParagraphAlignment.Center);
            gfxo.DrawRectangle(r, Color.Blue, 3);
            gpage.DrawForm(fxo, new RectangleF(300, 250, r.Width, r.Height), null, ImageAlign.ScaleImage);

            // PDF/A-3 allows using embedded files, but each embedded file must be associated with a document's element:
            EmbeddedFileStream ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "WordDocs", "ProcurementLetter.docx"));
            // ModificationDate and MimeType should be specified for EmbeddedFile in PDF/A:
            ef.ModificationDate = date;
            ef.MimeType = "application/msword";
            var fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("ProcurementLetter.docx", fs);
            // Associate embedded file with the document:
            doc.AssociatedFiles.Add(fs);

            // Add an attachment associated with an annotation:
            var sa = new StampAnnotation()
            {
                UserName = "Minerva",
                Font = fnt,
                Rect = new RectangleF(300, 36, 220, 72),
            };
            sa.Flags |= AnnotationFlags.Print;
            // Use a FormXObject to represent the stamp annotation:
            var stampFxo = new FormXObject(doc, new RectangleF(PointF.Empty, sa.Rect.Size));
            var gstampFxo = stampFxo.Graphics;
            gstampFxo.FillRectangle(stampFxo.Bounds, Color.FromArgb(40, Color.Green));
            gstampFxo.DrawString("Stamp Annotation\nassociated with minerva.jpg", tf, stampFxo.Bounds, TextAlignment.Center, ParagraphAlignment.Center);
            gstampFxo.DrawRectangle(stampFxo.Bounds, Color.Green, 3);
            //
            sa.AppearanceStreams.Normal.Default = stampFxo;
            doc.Pages [0].Annotations.Add(sa);
            ef = EmbeddedFileStream.FromFile(doc, Path.Combine("Resources", "Images", "minerva.jpg"));
            ef.ModificationDate = date;
            ef.MimeType = "image/jpeg";
            fs = FileSpecification.FromEmbeddedFile(ef);
            fs.UnicodeFile.FileName = fs.File.FileName;
            fs.Relationship = AFRelationship.Unspecified;
            doc.EmbeddedFiles.Add("minerva.jpg", fs);
            sa.AssociatedFiles.Add(fs);

            // Mark the document as conforming to Tagged PDF conventions (required for PDF/A):
            doc.MarkInfo.Marked = true;

            // Metadata.CreatorTool and DocumentInfo.Creator should be the same for a PDF/A document:
            doc.Metadata.CreatorTool = doc.DocumentInfo.Creator;
            // A title should be specified for PDF/A document:
            doc.Metadata.Title = "GcPdf Document";
            doc.ViewerPreferences.DisplayDocTitle = true;

            // Done:
            doc.Save(stream);
        }
    }
}
$vbLabelText   $csharpLabel

GrapeCity PDF offre des fonctionnalités limitées comparé à IronPDF. IronPDF prend en charge la conformité PDF/A , l'accessibilité PDF/UA , les formats de papier personnalisés et les options de rendu avancées .

Quels sont les modèles de licence et les tarifs d'IronPDF ?

Garantie de remboursement de 30 jours : Une fois la licence achetée, vous bénéficiez d'une garantie de remboursement de 30 jours. Si la licence n'est pas bien adaptée à vos besoins, IronPDF vous garantit le remboursement dans les 30 jours.

Intégration facile : L'intégration d'IronPDF à un projet en cours d'exécution et à votre environnement est un processus transparent qui s'effectue à l'aide d'une seule ligne de code. Cela peut être réalisé lors de l'intégration en utilisant la méthode du paquet NuGet ou téléchargé directement en ligne et intégré à votre environnement.

Licence perpétuelle : chaque licence n'est achetée qu'une seule fois, sans obligation de renouvellement.

Assistance et mises à jour produit gratuites : Chaque licence inclut une assistance interne assurée directement par l'équipe à l'origine du produit, ainsi qu'une année de mises à jour produit gratuites. Il est possible d'acheter des extensions à tout moment. Les extensions peuvent être consultées avant l'achat.

Licences immédiates : Dès réception du paiement, les clés de licence enregistrées sont envoyées.

Toutes les licences sont perpétuelles pour la mise en scène, le développement et la production.

Comment IronPDF prend-il en charge les frameworks web modernes comme Bootstrap ?

La génération moderne de PDF bénéficie des représentations visuelles des processus. Cet exemple de Bootstrap 5 démontre la capacité d'IronPDF à rendre des chronologies de flux de travail avec des cartes, des badges et des indicateurs de phase. Pour une prise en charge complète du framework, consultez le guide de dépannage Bootstrap et Flexbox :

using IronPdf;

var renderer = new ChromePdfRenderer();

string workflowTimeline = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_66___ rel='stylesheet'>
    <style>
        .timeline-item { position: relative; padding-left: 40px; margin-bottom: 30px; }
        .timeline-item::before { content: ''; position: absolute; left: 0; top: 0; width: 20px; height: 20px;
            background: #0d6efd; border-radius: 50%; border: 3px solid white; box-shadow: 0 0 0 2px #0d6efd; }
        .timeline-item::after { content: ''; position: absolute; left: 9px; top: 20px; width: 2px; height: calc(100% + 10px);
            background: #dee2e6; }
        .timeline-item:last-child::after { display: none; }
        @media print { .timeline-item { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='text-center mb-5'>
            <h1 class='display-6 fw-bold'>PDF Generation Workflow</h1>
            <p class='lead text-muted'>From HTML to Professional PDF Documents</p>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 1: Initialize Renderer</h4>
                        <span class='badge bg-primary'>Setup</span>
                    </div>
                    <p class='card-text'>Create ChromePdfRenderer instance with Chrome V8 engine for accurate HTML rendering.</p>
                    <div class='bg-light p-2 rounded'>
                        <code>var renderer = new ChromePdfRenderer();</code>
                    </div>
                    <div class='mt-2'>
                        <small class='text-muted'>✓ Chrome V8 Engine • ✓ Full CSS3 Support • ✓ JavaScript Ready</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 2: Prepare HTML Content</h4>
                        <span class='badge bg-info'>Content</span>
                    </div>
                    <p class='card-text'>Design your document using modern HTML5, CSS3 (Flexbox/Grid), and optional JavaScript.</p>
                    <div class='row g-2'>
                        <div class='col-4'><span class='badge bg-success w-100'>HTML5</span></div>
                        <div class='col-4'><span class='badge bg-success w-100'>CSS3</span></div>
                        <div class='col-4'><span class='badge bg-success w-100'>JavaScript</span></div>
                    </div>
                </div>
            </div>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 3: Render to PDF</h4>
                        <span class='badge bg-warning text-dark'>Processing</span>
                    </div>
                    <p class='card-text'>Convert HTML to PDF with pixel-perfect accuracy and sub-second performance.</p>
                    <div class='bg-light p-2 rounded'>
                        <code>var pdf = renderer.RenderHtmlAsPdf(htmlContent);</code>
                    </div>
                    <div class='progress mt-2' style='height: 8px;'>
                        <div class='progress-bar bg-warning' style='width: 100%'></div>
                    </div>
                    <small class='text-muted d-block mt-1'>Average render time: 0.9 seconds</small>
                </div>
            </div>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 4: Save or Stream</h4>
                        <span class='badge bg-success'>Output</span>
                    </div>
                    <p class='card-text'>Export to file, stream, or byte array for flexible deployment options.</p>
                    <div class='bg-light p-2 rounded'>
                        <code>pdf.SaveAs("document.pdf");</code>
                    </div>
                    <div class='mt-2'>
                        <span class='badge bg-outline-secondary me-1'>File</span>
                        <span class='badge bg-outline-secondary me-1'>Stream</span>
                        <span class='badge bg-outline-secondary'>Byte Array</span>
                    </div>
                </div>
            </div>
        </div>

        <div class='alert alert-info'>
            <strong>Comparison Note:</strong> GrapeCity PDF Viewer focuses on document viewing and annotation, not HTML-to-PDF generation. IronPDF specializes in creating PDFs from modern web content with full Bootstrap and framework support.
        </div>

        <div class='card shadow-sm border-primary'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Key Advantages</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF Strengths</h6>
                        <ul class='small'>
                            <li>Complete HTML-to-PDF workflow</li>
                            <li>Bootstrap 5 framework support</li>
                            <li>Async/await for scalability</li>
                            <li>Cross-platform deployment</li>
                        </ul>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-muted'>GrapeCity Focus</h6>
                        <ul class='small'>
                            <li>PDF viewing and annotation</li>
                            <li>UI component for display</li>
                            <li>Limited generation features</li>
                            <li>Viewer-centric approach</li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(workflowTimeline);
pdf.SaveAs("workflow-timeline.pdf");
using IronPdf;

var renderer = new ChromePdfRenderer();

string workflowTimeline = @"
<!DOCTYPE html>
<html>
<head>
    <meta charset='utf-8'>
    <link href='___PROTECTED_URL_66___ rel='stylesheet'>
    <style>
        .timeline-item { position: relative; padding-left: 40px; margin-bottom: 30px; }
        .timeline-item::before { content: ''; position: absolute; left: 0; top: 0; width: 20px; height: 20px;
            background: #0d6efd; border-radius: 50%; border: 3px solid white; box-shadow: 0 0 0 2px #0d6efd; }
        .timeline-item::after { content: ''; position: absolute; left: 9px; top: 20px; width: 2px; height: calc(100% + 10px);
            background: #dee2e6; }
        .timeline-item:last-child::after { display: none; }
        @media print { .timeline-item { page-break-inside: avoid; } }
    </style>
</head>
<body class='bg-light'>
    <div class='container py-4'>
        <div class='text-center mb-5'>
            <h1 class='display-6 fw-bold'>PDF Generation Workflow</h1>
            <p class='lead text-muted'>From HTML to Professional PDF Documents</p>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 1: Initialize Renderer</h4>
                        <span class='badge bg-primary'>Setup</span>
                    </div>
                    <p class='card-text'>Create ChromePdfRenderer instance with Chrome V8 engine for accurate HTML rendering.</p>
                    <div class='bg-light p-2 rounded'>
                        <code>var renderer = new ChromePdfRenderer();</code>
                    </div>
                    <div class='mt-2'>
                        <small class='text-muted'>✓ Chrome V8 Engine • ✓ Full CSS3 Support • ✓ JavaScript Ready</small>
                    </div>
                </div>
            </div>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 2: Prepare HTML Content</h4>
                        <span class='badge bg-info'>Content</span>
                    </div>
                    <p class='card-text'>Design your document using modern HTML5, CSS3 (Flexbox/Grid), and optional JavaScript.</p>
                    <div class='row g-2'>
                        <div class='col-4'><span class='badge bg-success w-100'>HTML5</span></div>
                        <div class='col-4'><span class='badge bg-success w-100'>CSS3</span></div>
                        <div class='col-4'><span class='badge bg-success w-100'>JavaScript</span></div>
                    </div>
                </div>
            </div>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 3: Render to PDF</h4>
                        <span class='badge bg-warning text-dark'>Processing</span>
                    </div>
                    <p class='card-text'>Convert HTML to PDF with pixel-perfect accuracy and sub-second performance.</p>
                    <div class='bg-light p-2 rounded'>
                        <code>var pdf = renderer.RenderHtmlAsPdf(htmlContent);</code>
                    </div>
                    <div class='progress mt-2' style='height: 8px;'>
                        <div class='progress-bar bg-warning' style='width: 100%'></div>
                    </div>
                    <small class='text-muted d-block mt-1'>Average render time: 0.9 seconds</small>
                </div>
            </div>
        </div>

        <div class='timeline-item'>
            <div class='card shadow-sm'>
                <div class='card-body'>
                    <div class='d-flex justify-content-between align-items-center mb-2'>
                        <h4 class='card-title mb-0'>Step 4: Save or Stream</h4>
                        <span class='badge bg-success'>Output</span>
                    </div>
                    <p class='card-text'>Export to file, stream, or byte array for flexible deployment options.</p>
                    <div class='bg-light p-2 rounded'>
                        <code>pdf.SaveAs("document.pdf");</code>
                    </div>
                    <div class='mt-2'>
                        <span class='badge bg-outline-secondary me-1'>File</span>
                        <span class='badge bg-outline-secondary me-1'>Stream</span>
                        <span class='badge bg-outline-secondary'>Byte Array</span>
                    </div>
                </div>
            </div>
        </div>

        <div class='alert alert-info'>
            <strong>Comparison Note:</strong> GrapeCity PDF Viewer focuses on document viewing and annotation, not HTML-to-PDF generation. IronPDF specializes in creating PDFs from modern web content with full Bootstrap and framework support.
        </div>

        <div class='card shadow-sm border-primary'>
            <div class='card-header bg-primary text-white'>
                <h5 class='mb-0'>Key Advantages</h5>
            </div>
            <div class='card-body'>
                <div class='row'>
                    <div class='col-md-6'>
                        <h6 class='text-primary'>IronPDF Strengths</h6>
                        <ul class='small'>
                            <li>Complete HTML-to-PDF workflow</li>
                            <li>Bootstrap 5 framework support</li>
                            <li>Async/await for scalability</li>
                            <li>Cross-platform deployment</li>
                        </ul>
                    </div>
                    <div class='col-md-6'>
                        <h6 class='text-muted'>GrapeCity Focus</h6>
                        <ul class='small'>
                            <li>PDF viewing and annotation</li>
                            <li>UI component for display</li>
                            <li>Limited generation features</li>
                            <li>Viewer-centric approach</li>
                        </ul>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>";

var pdf = renderer.RenderHtmlAsPdf(workflowTimeline);
pdf.SaveAs("workflow-timeline.pdf");
$vbLabelText   $csharpLabel

Résultat : Un PDF de chronologie de flux de travail professionnelle avec des cartes Bootstrap 5, des badges, des barres de progression et un style de chronologie personnalisé. IronPDF rend avec précision tous les positionnements, mises en page flexbox et classes utilitaires, démontrant une prise en charge CSS3 complète pour des conceptions visuelles complexes.

Pour plus de détails sur la compatibilité avec Bootstrap, consultez le guide CSS Bootstrap et Flexbox . IronPDF prend en charge les polices web et les icônes pour une typographie riche.

Quel est le prix du forfait Lite ?

  • 1 développeur
  • 1 lieu
  • 1 projet
  • Licence perpétuelle

Ce package permet à un développeur d'utiliser Iron Software à un seul endroit pour une seule application. Les licences ne sont pas transférables en dehors des organisations ou des relations agence/client. Exclut la redistribution par les OEM et l'utilisation SaaS sans couverture supplémentaire.

Tarification : à partir de $799 par an.

Que comprend la licence professionnelle ?

  • 10 développeurs
  • 10 lieux
  • 10 projets
  • Licence perpétuelle

Cette licence autorise dix développeurs à utiliser Iron Software dans un maximum de dix emplacements. Vous pouvez l'utiliser sur un nombre illimité de sites web, d'applications intranet ou de logiciels de bureau. Les licences ne sont pas transférables en dehors des organisations. Exclut la redistribution par les OEM et l'utilisation SaaS sans couverture supplémentaire. S'intègre à un maximum de 10 projets.

Tarification : À partir de $1,199 par an.

Quels sont les avantages d'une licence illimitée ?

  • Développeurs illimités
  • Lieux illimités
  • Projets illimités
  • Licence perpétuelle

Permet à un nombre illimité de développeurs au sein d'une même organisation d'utiliser Iron Software depuis un nombre illimité de sites. Utilisation illimitée. Les licences ne sont pas transférables en dehors des organisations. Exclut la redistribution par les OEM et l'utilisation SaaS sans couverture supplémentaire.

Tarification : À partir de 2999 $ par an.

Redistribution sans redevances : cela vous permet de distribuer le logiciel Iron dans le cadre de plusieurs produits commerciaux présentés différemment (sans avoir à payer de redevances) en fonction du nombre de projets couverts par la licence de base. Cela permettra le déploiement d'Iron Software au sein des services de logiciels SaaS, qui est basé sur le nombre de projets couverts par la licence de base.

Tarification : À partir de 1599 $ par an.

IronPDF pricing tiers comparison showing Lite ($499), Professional ($999), and Unlimited ($2,999) licenses with different developer, location, and project limits

IronPDF propose trois niveaux de licence, la licence Professionnelle étant présentée comme la plus populaire. Elle comprend 10 développeurs, 10 emplacements et 10 projets pour 999 $.

Quels sont les modèles de licence et les tarifs de GrapeCity PDF ?

Que comprennent les documents pour la licence PDF ?

  • Inclut 1 licence développeur
  • 1 lieu de distribution

Inclut une licence développeur et un emplacement de distribution sans support ni maintenance.

Tarification : À partir de $1,199 par an.

Qu'est-ce que Documents for PDF Unlimited ?

  • Inclut 1 licence développeur
  • Lieux de distribution illimités

Inclut une licence développeur avec un nombre illimité d'emplacements de distribution. Aucun support ni maintenance. GrapeCity ne prend pas en charge les solutions SaaS et OEM.

Tarifs : À partir de 2799 $ par an.

Que propose Documents for PDF Team Unlimited ?

  • Inclut 5 licences développeur
  • Lieux de distribution illimités

Comprend cinq licences de développeur avec un nombre illimité de points de distribution. Aucun support ni maintenance. GrapeCity ne prend pas en charge les solutions SaaS et OEM.

Tarifs : À partir de 5799 $ par an.

Three pricing tiers for Documents for PDF software: basic at $999 per developer, Unlimited at $2799, and Team Unlimited at $5799, each with different license and distribution options.

`GrapeCity`'s Documents for PDF pricing structure offers three tiers to accommodate different development team sizes and distribution needs.

Le package IronPDF Lite One-Developer inclut 1 an de support pour $799 . Le pack GrapeCity Documents pour PDF One-Developer coûte $1,199 sans support. Le pack IronPDF Professional inclut 10 développeurs avec un an de support pour $1,199 . GrapeCity propose uniquement un pack pour 5 développeurs au prix de 5 799 $. Pour plus d'informations sur les options de licence d'IronPDF , veuillez consulter la page officielle des licences.

Les forfaits IronPDF Lite et Professional incluent un service SaaS, une option OEM et des options de support de 5 ans. Le pack Lite pour un développeur, incluant cinq ans de support, le SaaS et l'OEM, coûte 2 897 $. GrapeCity ne propose ni SaaS, ni OEM, ni support sur 5 ans. Le pack Iron Professional pour 10 développeurs avec 5 ans de support, SaaS et OEM coûte 3397 $. GrapeCity ne propose pas d'option pour 10 développeurs. Découvrez les extensions de licence et les options de mise à niveau pour un support à long terme.

Quelle bibliothèque PDF choisir pour mon projet .NET ?

GrapeCity Documents for PDF permet l'exportation/importation, la création AcroForms et l'exécution de PDF dans des applications de bureau. Toutefois, pour une manipulation complète des fichiers PDF, incluant la création de formulaires , les signatures numériques et la prise en charge des annotations , IronPDF offre des fonctionnalités avancées.

IronPDF offre une plus grande précision. Les concurrents peuvent rencontrer des problèmes tels que des conversions d'images échouées ou des caractères inconnus. IronPDF fournit des résultats précis. Le moteur de rendu Chrome garantit un rendu pixel-perfect, vérifié à l'aide du guide HTML vers PDF pixel-perfect . Pour une optimisation, consultez le guide d'assistance aux performances d'IronPDF .

IronPDF propose des licences et un support compétitifs sans frais récurrents. IronPDF est disponible à partir de $799 avec des packs de fonctionnalités complets. L'abonnement GrapeCity PDF est disponible à partir de 1649 $ par an. IronPDF prend en charge plusieurs plateformes à un prix unique. Pour les déploiements en entreprise, IronPDF offre des fonctionnalités asynchrones et multithread pour une génération haute performance.

Vous pouvez accéder à l'essai gratuit pour découvrir toutes les fonctionnalités. L'achat de la suite Iron complète vous permet d'obtenir cinq produits pour le prix de deux. Pour plus de détails sur les licences IronPDF , consultez la page produit Iron Suite d'Iron Software pour obtenir des informations complètes sur le package.

Veuillez noter GrapeCity Documents pour PDF est une marque déposée de son propriétaire respectif. Ce site n'est ni affilié à, ni approuvé par, ni sponsorisé par GrapeCity Documents for PDF. Tous les noms de produits, logos et marques sont la propriété de leurs propriétaires respectifs. Les comparaisons sont faites à titre d'information uniquement et reflètent les informations publiquement disponibles au moment de la rédaction.

Questions Fréquemment Posées

Comment puis-je convertir du HTML en PDF en .NET ?

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

Quelles sont les étapes d'installation pour une bibliothèque PDF utilisant NuGet ?

Pour installer IronPDF en utilisant NuGet, ouvrez Visual Studio, naviguez vers 'Gérer les packages NuGet', recherchez 'IronPdf', et cliquez sur 'Installer' pour l'ajouter à votre projet.

Quelles sont les alternatives au visualiseur PDF GrapeCity pour .NET ?

IronPDF est une alternative appropriée au visualiseur PDF GrapeCity, offrant une expérience conviviale avec un support étendu pour .NET Core, .NET 5, Framework, et Standard.

Comment puis-je créer et lire des fichiers PDF en utilisant une bibliothèque .NET ?

En utilisant IronPDF, vous pouvez créer des PDFs en incluant l'espace de noms IronPdf et en utilisant la classe HtmlToPdf pour rendre du HTML en PDF. Pour lire des PDFs, vous pouvez utiliser la classe PdfDocument pour accéder et manipuler le contenu.

Quelles sont les options de licence disponibles pour une bibliothèque PDF ?

IronPDF propose une gamme d'options de licence, y compris un package Lite pour développeurs uniques, une licence professionnelle pour jusqu'à 10 développeurs, et une licence illimitée pour les équipes, toutes avec des options de licence perpétuelle et de support.

Pourquoi devrais-je choisir IronPDF par rapport à d'autres solutions PDF ?

IronPDF est recommandé pour sa précision, ses fonctionnalités complètes, sa licence compétitive, et ses vastes options de support. Il offre un support pour plusieurs plateformes à un prix compétitif.

Puis-je essayer une bibliothèque PDF avant de l'acheter ?

Oui, IronPDF propose un essai gratuit qui vous permet d'explorer toutes les fonctionnalités disponibles avant de prendre une décision d'achat. De plus, le package Iron Suite offre un accès à tous les produits Iron Software à un tarif réduit.

Quels sont les inconvénients de l'utilisation des fichiers PDF ?

Les PDFs peuvent être difficiles à partager par email en raison de leur taille, peuvent ne pas s'afficher clairement sur les appareils mobiles par rapport aux documents Word, et nécessitent un logiciel spécifique pour être édités ou mis à jour.

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