COMPARAISON DES PRODUITS

Comparaison entre IronPDF et GrapeCity PDF Viewer

Publié septembre 1, 2022
Partager:

PDF est l'abréviation de Portable Document Format (format de document portable). Il s'agit d'un type de fichier qui permet la visualisation conventionnelle de n'importe quel document 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é, l'utilisation des PDF comme moyen de stockage et de partage des données présente également certains inconvénients. Par exemple, les PDF ne peuvent pas être partagés par courrier électronique, car ils doivent d'abord être ouverts dans un lecteur de PDF. Même si c'était le cas, les PDF ne seraient pas aussi clairs qu'un document Word lorsqu'ils sont ouverts sur un téléphone. En outre, les PDF ne peuvent pas être édités ou mis à jour comme les documents Word, à moins que vous ne disposiez d'un logiciel d'édition installé sur votre ordinateur, capable de reconnaître les données du fichier et de les reconvertir en format éditable. Cela signifie que les fichiers PDF doivent avoir la même apparence lorsque vous les ouvrez, quel que soit l'appareil que vous utilisez, qu'il s'agisse d'un PC ou d'un Mac. Les fichiers PDF sont donc fiables sur tous les appareils grâce aux normes familières qu'ils mettent en œuvre et que l'on ne retrouve pas dans d'autres formats de documents tels que JPEG ou GIF.

Dans cet article, nous allons passer en revue deux bibliothèques PDF .NET :

  • IronPDF
  • GrapeCity PDF

IronPDF

IronPDF est une bibliothèque .NET qui fournit des fonctions de construction pour créer, lire et manipuler des documents PDF avec seulement quelques lignes de code. L'article suivant vous montrera comment créer des fichiers PDF avec IronPDF. Le contenu est basé sur l'hypothèse que vous avez une compréhension des bases de Visual Studio ou C#, et que vous possédez une connaissance pratique de HTML.

Nous avons besoin de Visual Studio pour écrire, compiler et exécuter notre application, de C# pour écrire la logique et le code, et de HTML pour formater les fichiers PDF, notamment en ajoutant des titres, des en-têtes, des images, des paragraphes, etc. La bibliothèque IronPDF prend entièrement en charge .NET Core, .NET 5, Framework et Standard.

Nous pouvons créer un fichier PDF en C# avec seulement quelques lignes de code. Il s'agit d'une tâche simple si l'on dispose de connaissances de base en C# et en HTML. Pour en savoir plus sur IronPDF, visitez le site de l'entreprisesite officiel sur les fonctionnalités d'IronPDF.

Installation d'IronPDF

L'élaboration d'une solution nécessite l'installation duPaquet NuGet pour IronPDF. Cliquez sur "Projet" directement dans la barre de menu. Une liste déroulante apparaît. Sélectionnez "GérerPaquets NuGetvous pouvez sélectionner le mot "N" dans le menu déroulant et le sélectionner. Une fenêtre comme celle-ci s'affiche :

Grapecity Pdf Viewer Alternatives 1 related to Installation d'IronPDF

Sélectionnez l'onglet "Parcourir" et la fenêtre suivante apparaîtra :

Grapecity Pdf Viewer Alternatives 2 related to Installation d'IronPDF

Tapez "IronPdf" dans le champ de recherche et appuyez sur "Entrée" La fenêtre résultante devrait apparaître :

Grapecity Pdf Viewer Alternatives 3 related to Installation d'IronPDF

Sélectionnez IronPDF :

Comment créer un fichier PDF en C# par Ironpdfile

Comment créer un fichier PDF en C# par Ironpdfile

Sélectionnez le bouton "Installer". Une fois l'installation réussie, la fenêtre résultante s'affiche :

Grapecity Pdf Viewer Alternatives 5 related to Installation d'IronPDF

Une fois que vous avez appuyé sur le bouton "OK", vous êtes prêt à partir.

Création d'un PDF

Ajoutez l'espace de noms IronPdf en haut du fichier.

using IronPdf;
using IronPdf;
Imports IronPdf
VB   C#

Le travail proprement dit commence à ce stade. Nous avons besoin d'un chemin d'accès au fichier pour stocker le document PDF construit. Pour ce faire, nous utilisons la boîte de dialogue SaveFileDialog, qui invite l'utilisateur à choisir un nom de fichier et un chemin d'accès.

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!");
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

SaveFileDialog devrait ouvrir une boîte de dialogue qui vous permettra de sélectionner le dossier et le nom du fichier à l'endroit où vous souhaitez créer un document PDF. Le répertoire initial est défini sur le lecteur D, mais vous pouvez choisir n'importe quel répertoire. Comme nous ne traitons que des fichiers PDF, l'extension par défaut a été définie sur les fichiers PDF.

Dans la condition "if", le code réel qui créera le fichier PDF est inséré. Nous pouvons maintenant constater que nous avons réussi à générer un fichier PDF avec seulement deux lignes de code. PdfText est le nom d'une zone de texte riche qui contient le texte qui sera écrit dans un document PDF. Le nom du fichier est le chemin et le nom du fichier qui a été sélectionné via la méthode SaveFileDialog.

Lecture des PDF

Vous pensez peut-être que le code pour la lecture des fichiers PDF sera complexe et difficile à écrire/comprendre-mais ne vous inquiétez pas-IronPDF l'a rendu plus facile et plus simple. Ce processus ne nécessite que deux lignes de code pour être réalisé!

Ajoutez le code suivant pour l'importation de la bibliothèque IronPdf en haut du fichier.

using IronPdf;
using System;
using System.Windows.Forms;
using IronPdf;
using System;
using System.Windows.Forms;
Imports IronPdf
Imports System
Imports System.Windows.Forms
VB   C#

Ecrivez le code suivant à l'intérieur de la fonction.

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();
}
Private Sub Read_Click(ByVal sender As Object, ByVal e As EventArgs)
	Dim PDF As PdfDocument = PdfDocument.FromFile(FilePath.Text)
	FileContent.Text = PDF.ExtractAllText()
End Sub
VB   C#

Cette opération permet d'extraire toutes les informations de la source de données vers le visualiseur de documents. Tous les composants du rapport utiliseront ces données comme source de données.

GrapeCity PDF Caractéristiques

GrapeCity Documents est un système de gestion de documents multiplateforme qui fournit une solution universelle de document, d'éditeur et de lecteur pour tous les formats de documents courants. Sans avoir besoin d'un programme supplémentaire comme Adobe Acrobat, la riche bibliothèque fournie par Standard .NET 2.0 peut être utilisée pour lire, générer, modifier et enregistrer des fichiers PDF. Il dispose d'un ensemble de fonctionnalités robustes qui permettent aux développeurs de créer des fichiers PDF incluant une prise en charge avancée des polices, des photos, des graphiques, des codes-barres, des commentaires, des contours, des tampons, des filigranes, et bien plus encore.

Manipulation des PDF

Dans les applications Standard .NET, vous pouvez utiliser GrapeCityPDF pour produire des documents PDF répondant à des besoins professionnels simples ou complexes. En outre, vous pouvez charger, modifier et enregistrer des PDF à partir de n'importe quelle source.

Enregistrer le PDF en tant qu'image

GrapeCityPDF vous permet d'enregistrer un PDF en tant qu'image sans sacrifier la qualité de l'image. En outre, quelques lignes de code suffisent pour mettre en œuvre cette fonctionnalité.

Visualisateur de PDF

GrapeCity Documents PDF Viewer est une visionneuse client légère, basée sur la programmation, qui permet de visualiser les fichiers PDF. La plupart des fonctionnalités habituelles des PDF sont prises en charge.

Un grand nombre de fonctionnalités

La bibliothèque GrapeCityPDF possède de nombreuses fonctionnalités qui vous permettent de créer des documents PDF complexes contenant des informations telles que du texte, des graphiques, des photos, des annotations, des contours, etc.

Installations

Il existe deux méthodes pour installer GrapeCity.

  1. Sélectionnez le bouton télécharger les fichiers sources zippés pour télécharger les sources d'échantillons actuelles.

  2. Extrayez les fichiers directement du fichier zip téléchargé dans un répertoire de votre ordinateur.

  3. Naviguez jusqu'à ce répertoire.

  4. Exécutez le fichier batch run.cmd. Cela créera les sources de l'échantillon. Démarrez le service SupportApi et ouvrez l'URL http://localhost:3003 dans votre navigateur par défaut.

  5. Pour plus d'informations, voir le readme.MD, inclus dans le zip téléchargé.

Installation de l'édition WinForms

La rubrique ci-dessous décrit la procédure d'installation de l'édition WinForms. Les étapes suivantes fournissent les instructions pour installer l'édition WinForms :

  • Téléchargez le C1ControlPanel à partir de ComponentOne de GrapeCity pour installer la dernière édition de WinForms.
  • Ouvrez le Panneau de contrôle en utilisant ComponentOneC1ControlPanel.exe. Toutes les instances de Visual Studio en cours d'exécution doivent être fermées.
  • Un utilisateur existant peut se connecter en utilisant l'adresse électronique et le mot de passe qu'il a enregistrés.
  • Si vous êtes un nouvel utilisateur :

    • Inscrivez-vous auprès de Component One et créez un compte en remplissant les champs requis.

    • La vérification sera envoyée à votre adresse électronique.

    • Activez votre adresse électronique en cliquant sur le lien de vérification.
  • Si vous ne souhaitez pas vous connecter ou vous enregistrer, vous pouvez procéder en tant qu'utilisateur anonyme.
  • Dans la tuile WinForms Edition, sélectionnez Installer. L'installation de toutes les éditions peut être réalisée en cochant la case Toutes les éditions. Sélectionnez le bouton Voir plus pour en savoir plus sur l'édition.
    GrapeCity PDF Installation

  • Une fois que vous avez cliqué sur Installer, une page affiche l'accord de licence et vous demande de le lire avant de cliquer sur le bouton Accepter l'accord de licence.
  • Une fois que vous avez accepté l'accord de licence, une page s'affiche avec les boutons Paramètres et Changement du chemin d'accès au répertoire. Sélectionnez l'invite Accepter les paramètres pour vérifier le chemin d'accès au répertoire et commencer le processus d'installation.
    GrapeCity PDF Installation

  • Le programme d'installation installe les contrôles et affiche sa progression au fur et à mesure. Vous ne pourrez pas annuler le processus d'installation tant que cet écran sera affiché.
  • Une fois les commandes installées, l'écran "Installation réussie" s'affiche. La version actuellement installée est affichée dans l'édition correspondante.
  • Le programme d'installation installe les contrôles et affiche sa progression au fur et à mesure. Vous ne pourrez pas annuler le processus d'installation tant que cet écran sera affiché.

    GrapeCity PDF Installation

  • Une fois les commandes installées, l'écran "Installation réussie" s'affiche. La version actuellement installée est affichée dans l'édition correspondante.
    GrapeCity PDF Installation

Création d'un PDF

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);
        }
    }
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
VB   C#

GrapeCityPDF n'est pas une bibliothèque avancée pour les PDF - elle possède un nombre limité de fonctionnalités par rapport à IronPDF.

Modèles de licence et prix d'IronPDF

La 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 adaptée à vos besoins, IronPDF s'engage à vous rembourser dans les 30 jours.

Intégration facile : L'intégration d'IronPDF à un projet en cours et à votre environnement est un processus transparent réalisé à l'aide d'une seule ligne de code. Ceci peut être réalisé lors de l'intégration à l'aide de la méthode NuGet Package ou téléchargé directement en ligne et intégré dans votre environnement.

Licence perpétuelle : Chaque licence est achetée une seule fois, sans obligation de renouvellement.

Support gratuit et mises à jour du produit : Chaque licence est assortie d'une assistance permanente assurée directement par l'équipe à l'origine du produit et d'un an de mises à jour gratuites du produit. Il est possible d'acheter des extensions à tout moment. Les extensions peuvent être visualisé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 et s'appliquent à la mise en place, au développement et à la production.

Le paquet "Lite

  • 1 Développeur
  • 1 Localisation
  • 1 Projet
  • Licence perpétuelle

    Cette formule permet à un seul développeur de logiciels au sein d'une organisation d'utiliser Iron Software en un seul endroit. Iron Software peut être utilisé dans une application intranet, une application web ou un logiciel de bureau. Il est interdit de partager les licences en dehors d'une organisation ou d'une relation agence/client, car elles ne sont pas transférables. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits qui ne sont pas expressément accordés dans le cadre de l'accord, sans redistribution OEM et utilisation du Iron Software en tant que SaaS sans achat d'une couverture supplémentaire.

    Tarification : à partir de $749 par an.

Licence professionnelle

  • 10 Développeurs
  • 10 Localisations
  • 10 Projets
  • Licence perpétuelle

    Cette licence permet à un nombre prédéterminé de développeurs de logiciels au sein d'une organisation d'utiliser Iron Software dans de nombreux sites, jusqu'à un maximum de dix. Iron Software peut être utilisé dans autant de sites web, d'applications intranet ou de logiciels de bureau que vous le souhaitez. Les licences ne sont pas transférables, il est donc interdit de les partager en dehors d'une organisation ou d'une relation agence/client. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits qui ne sont pas expressément accordés dans le cadre de l'accord, y compris la redistribution OEM et l'utilisation du Iron Software en tant que SaaS sans achat d'une couverture supplémentaire. Cette licence peut être intégrée à un seul projet jusqu'à un maximum de 10.

    Tarification: À partir de 999 $ par an.

License Unlimited

  • Développeurs illimités
  • Nombre illimité de lieux
  • Projets illimités
  • Licence perpétuelle

    Cela vous permet d'avoir un nombre illimité de développeurs de logiciels dans une seule organisation et d'utiliser Iron Software dans un nombre illimité de sites. Iron Software peut être utilisé dans autant d'applications intranet, d'applications logicielles de bureau ou de sites web que vous le souhaitez. Les licences ne sont pas transférables et ne peuvent être partagées en dehors d'une organisation ou d'une relation agence/client. Ce type de licence, comme tous les autres types de licence, exclut expressément tous les droits non accordés dans le cadre de l'accord, y compris la redistribution OEM et l'utilisation du logiciel Iron Software en tant que SaaS sans achat d'une couverture supplémentaire.

    Tarification : A partir de 2999 $ par an.

    Redistribution libre de droits : Cela vous permet de distribuer le Iron Software dans le cadre de plusieurs produits commerciaux conditionnés différemment(sans avoir à payer de redevances) en fonction du nombre de projets couverts par la licence de base. Cela permettra de déployer Iron Software dans le cadre de services logiciels SaaS, qui sont basés sur le nombre de projets couverts par la licence de base.

    Tarification : A partir de 1599 $ par an.

    GrapeCity PDF Installation

Modèles de licence et prix de GrapeCity PDF

Documents pour PDF

  • Comprend 1 licence de développeur
  • 1 Lieu de distribution

    Ce forfait comprend une licence de développeur et un seul lieu de distribution, sans support ni maintenance.

    Tarification : A partir de 999 $ par an.

Documents pour PDF Unlimited

  • Comprend 1 licence de développeur
  • Nombre illimité de lieux de distribution

    Ce paquet comprend une licence de développeur avec un nombre illimité d'emplacements de distribution. Il n'est pas accompagné d'une assistance et d'une maintenance. GrapeCity ne prend pas en charge le SaaS et l'OEM.

    Tarifs : À partir de 2799 $ par an.

Documents pour PDF Team Unlimited

  • Comprend 5 licences de développeur
  • Nombre illimité de lieux de distribution

    Ce forfait comprend cinq licences de développeur avec un nombre illimité de lieux de distribution, sans assistance ni maintenance. GrapeCity ne prend pas en charge le SaaS et l'OEM.

    Tarifs : À partir de 5799 $ par an.

    Comparaison des packages PDF de GrapeCity

    Le package IronPDF Lite One-Developer est livré avec un an de support et coûte environ $749. GrapeCity Documents for PDF, quant à lui, comprend un package pour un seul développeur et coûte 999 dollars sans aucune assistance. Le Package professionnel d'IronPDF, qui comprend le pack 10 développeurs et s'accompagne d'un an d'assistance, coûte 999 dollars. En revanche, GrapeCity n'a pas de pack 10 développeurs, mais seulement un pack 5 développeurs qui coûte 5799 $.

Les offres IronPDF Lite et Professional proposent un service SaaS ou OEM, ainsi qu'une option d'assistance de 5 ans. L'offre Lite pour un développeur comprend cinq ans d'assistance, de SaaS et de services OEM au prix de 2897 USD. GrapeCity n'offre pas de service SaaS ou OEM, ni d'option d'assistance sur 5 ans. L'offre Iron Professional 10 pour les développeurs est assortie d'une assistance de 5 ans, de services Saas et OEM et coûte 3397 USD. GrapeCity n'a pas d'offre pour 10 développeurs.

Conclusion

GrapeCity Documents for PDF permet aux développeurs d'exporter/importer, de créer des AcroForms(Formulaires PDF)et d'exécuter des PDF dans de nombreuses applications de bureau. Avec GrapeCity Documents pour PDF(GcPdf)vous êtes sur la bonne voie pour fournir des solutions PDF complètes à vos clients.

Nous recommandons vivement IronPDF, qui offre une plus grande précision. Les concurrents qui exécutent des fonctions similaires peuvent rencontrer des problèmes d'imprécision tels que l'impossibilité de convertir certaines images, ce qui se traduit par des caractères inconnus. En revanche, IronPDF fournit des résultats précis.

Les packages IronPDF offrent des licences et une assistance compétitives sans coûts permanents. IronPDF commence à $749 avec des packages incluant une plus grande gamme de fonctionnalités. GrapeCity PDF est disponible à partir de 1649 $ par an. IronPDF prend également en charge plusieurs plates-formes à un prix unique!

Si vous n'êtes pas encore client d'IronPDF, vous pouvez accéder à la version d'essai gratuite pour découvrir toutes les fonctionnalités disponibles. Si vous achetez la suite Iron complète, vous pouvez obtenir les cinq produits pour le prix de deux. Pour plus d'informations concernantLicence IronPDFpour plus d'informations, veuillez consulter le site Web d'Iron Software à l'adresse suivantePage produit Iron Suite pour consulter les informations complètes sur le paquet.

< PRÉCÉDENT
Comparaison entre IronPDF et XFINIUM.PDF
SUIVANT >
Comparaison entre IronPDF et Textcontrol