COMPARACIóN DE PRODUCTOS

Comparación entre IronPDF y GrapeCity PDF Viewer

Publicado en 1 de septiembre, 2022
Compartir:

PDF son las siglas de Portable Document Format (formato de documento portátil). Es un tipo de archivo que permite la visualización convencional de cualquier documento en muchos dispositivos diferentes. Los PDF suelen utilizarse para compartir documentos importantes, como currículos con posibles empleadores o facturas con clientes.

A pesar de su popularidad, el uso de PDF como forma de almacenar y compartir datos también tiene algunas desventajas. Por ejemplo, los PDF no se pueden compartir por correo electrónico, ya que primero hay que abrirlos en un lector de PDF. Y aunque así fuera, los PDF no se verían tan nítidos como un documento de Word cuando se abren en un teléfono. Además, los PDF no pueden editarse ni actualizarse como los documentos de Word, a menos que se disponga de un software de edición instalado en el ordenador que pueda reconocer los datos del archivo y convertirlos de nuevo en formato editable. Esto significa que los archivos PDF tendrán el mismo aspecto al abrirlos, independientemente del dispositivo que se utilice, ya sea un PC o un Mac. Esto hace que los archivos PDF sean fiables en todos los dispositivos gracias al estándar familiar que implementan y que no se encuentra en otros formatos de documento como JPEG o GIF.

En este artículo, analizaremos dos bibliotecas PDF .NET:

  • IronPDF
  • Ciudad de la uva PDF

IronPDF

IronPDF es una biblioteca .NET que proporciona funciones de creación para crear, leer y manipular documentos PDF con sólo unas pocas líneas de código. El siguiente artículo le mostrará cómo crear archivos PDF con IronPDF. El contenido se basa en la suposición de que usted tiene una comprensión de los fundamentos de Visual Studio o C #, y que usted posee un conocimiento práctico de HTML.

Necesitamos Visual Studio para escribir, compilar y ejecutar nuestra aplicación, C# para escribir lógica y código, y HTML para dar formato a los archivos PDF, incluyendo la adición de títulos, encabezados, imágenes, párrafos, etc. La biblioteca IronPDF es totalmente compatible con .NET Core, .NET 5, Framework y Standard.

Podemos crear un archivo PDF en C# con unas pocas líneas de código. Se trata de una tarea sencilla si se tienen conocimientos básicos de C# y HTML. Más información sobre IronPDF en su página websitio oficial sobre las características de IronPDF.

Instalación de IronPDF

El desarrollo de una solución requiere la instalación delPaquete NuGet para IronPDF. Haga clic en "Proyecto" directamente desde la barra de menús. Aparecerá una lista desplegable. Seleccione "GestionarPaquetes NuGet" en el menú desplegable y selecciónelo. Aparecerá una ventana como ésta:

Grapecity Pdf Viewer Alternatives 1 related to Instalación de IronPDF

Seleccione la pestaña "Examinar" y aparecerá una ventana como ésta:

Grapecity Pdf Viewer Alternatives 2 related to Instalación de IronPDF

Escriba 'IronPdf' en el cuadro de búsqueda y pulse "Intro" Debería aparecer la ventana resultante:

Grapecity Pdf Viewer Alternatives 3 related to Instalación de IronPDF

Seleccione IronPDF:

Cómo Crear Un Archivo PDF En C# Por Ironpdfile

Cómo Crear Un Archivo PDF En C# Por Ironpdfile

Seleccione el botón "Instalar". La ventana resultante aparecerá tras una instalación correcta:

Grapecity Pdf Viewer Alternatives 5 related to Instalación de IronPDF

Una vez que pulses el botón "OK", estarás listo para empezar.

Crear un PDF

Añada el espacio de nombres IronPdf al principio del archivo.

using IronPdf;
using IronPdf;
Imports IronPdf
VB   C#

El trabajo propiamente dicho empieza a partir de este momento. Necesitamos una ruta de archivo para almacenar el documento PDF construido. Para ello, utilizamos SaveFileDialog, que pide al usuario que elija un nombre y una ruta de archivo.

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 debería abrir un diálogo de archivo que le permitirá seleccionar la carpeta y el nombre del archivo en la ubicación donde desea construir un documento PDF. El directorio inicial está establecido en la unidad D, pero puede elegir cualquiera. Como sólo tratamos con archivos PDF, la extensión predeterminada es PDF.

En la condición "if" se inserta el código real que creará el archivo PDF. Ahora podemos ver que hemos conseguido generar un archivo PDF con sólo dos líneas de código. PdfText es el nombre de un cuadro de texto enriquecido que contiene el texto que se escribirá en un documento PDF. El nombre del archivo es la ruta y el nombre del archivo que se seleccionó a través del método SaveFileDialog.

Lectura de PDF

Puede que esté pensando que el código para leer archivos PDF será complejo y difícil de escribir/entender, pero no se preocupe: IronPDF lo ha hecho más fácil y sencillo. Este proceso requiere tan solo dos líneas de código para lograr!

Añada el siguiente código para importar la biblioteca IronPdf en la parte superior del archivo.

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#

Escribe el siguiente código dentro de la función.

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#

Esto extraerá toda la información de la fuente de datos al visor de documentos. Todos los componentes de los informes utilizarán esos datos como fuente de datos.

GrapeCity PDF Características

GrapeCity Documents es un sistema de gestión de documentos multiplataforma que proporciona una solución universal de documento, editor y lector para todos los formatos de documento habituales. Sin necesidad de un programa adicional como Adobe Acrobat, la rica biblioteca que proporciona .NET Standard 2.0 puede utilizarse para leer, generar, alterar y guardar archivos PDF. Cuenta con un sólido conjunto de funciones que permite a los desarrolladores crear archivos PDF que incluyan compatibilidad avanzada con fuentes, fotos, gráficos, códigos de barras, comentarios, contornos, sellos, marcas de agua y mucho más.

Manipulación de PDF

En aplicaciones .NET Standard, puede utilizar GrapeCityPDF para producir documentos PDF con necesidades empresariales básicas o complicadas. Además, puede cargar, modificar y guardar PDF de cualquier fuente.

Guardar PDF como imagen

Con GrapeCityPDF puedes guardar un PDF como imagen sin sacrificar la calidad de la imagen. Además, puede utilizar sólo unas pocas líneas de código para implementar esta funcionalidad.

Visor de PDF

GrapeCity Documents PDF Viewer es un visor cliente ligero basado en programación para visualizar archivos PDF. Se admiten muchas de las funciones habituales de PDF.

Gran cantidad de funciones

La biblioteca GrapeCityPDF cuenta con numerosas funciones que permiten crear complicados documentos PDF que contienen información como texto, gráficos, fotos, anotaciones, esquemas, etc.

Instalaciones

Hay dos métodos para instalar GrapeCity.

  1. Seleccione el botón descargar archivos fuente comprimidos para descargar las fuentes de muestra actuales.

  2. Extraiga los archivos directamente del zip descargado en un directorio de su ordenador.

  3. Navegue hasta ese directorio.

  4. Ejecute el archivo por lotes run.cmd. Esto construirá las fuentes de muestra. Inicie el servicio SupportApi y abra la URL http://localhost:3003 en su navegador predeterminado.

  5. Para más información, consulta el archivo readme.MD, incluido en el zip descargado.

Instalación de la edición WinForms

A continuación se describe el procedimiento de instalación de la edición WinForms. Los pasos siguientes proporcionan las instrucciones para instalar la edición WinForms:

  • Descargue el C1ControlPanel de ComponentOne de GrapeCity para instalar la última edición de WinForms.
  • Abra el ControlPanel utilizando ComponentOneC1ControlPanel.exe. Todas las instancias en ejecución de Visual Studio deben cerrarse.
  • Un usuario existente puede iniciar sesión utilizando la dirección de correo electrónico y la contraseña registradas.
  • Si eres un usuario nuevo:

    • Regístrese en Component One y cree una cuenta rellenando los campos obligatorios.

    • La verificación se enviará a su dirección de correo electrónico.

    • Active su dirección de correo electrónico visitando el enlace de verificación.
  • Si no desea identificarse o registrarse, puede hacerlo como usuario anónimo.
  • En el mosaico WinForms Edition, seleccione Install. Para instalar todas las ediciones, marque la casilla Todas las ediciones. Seleccione el botón Ver más para obtener más información sobre la edición.
    Instalación de GrapeCity PDF

  • Una vez que haga clic en Instalar, aparecerá una página con el Acuerdo de Licencia pidiéndole que lo revise antes de hacer clic en el botón Aceptar Acuerdo de Licencia.
  • Una vez que acepte el Acuerdo de Licencia, aparecerá una página consecuente con los botones de Configuración y cambio de ruta de directorio. Seleccione la opción Aceptar configuración para verificar la ruta del directorio y comenzar el proceso de instalación.
    Instalación de GrapeCity PDF

  • El instalador instala los controles y muestra su progreso mientras lo hace. No podrá cancelar el proceso de instalación mientras aparezca esta pantalla.
  • Una vez instalados los controles, aparecerá la pantalla "Instalación correcta". La versión actualmente instalada se mostrará en la Edición correspondiente.
  • El instalador instala los controles y muestra su progreso mientras lo hace. No podrá cancelar el proceso de instalación mientras aparezca esta pantalla.

    Instalación de GrapeCity PDF

  • Una vez instalados los controles, aparecerá la pantalla "Instalación correcta". La versión actualmente instalada se mostrará en la Edición correspondiente.
    Instalación de GrapeCity PDF

Crear 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 no es una biblioteca avanzada para PDF: tiene un número limitado de funciones en comparación con IronPDF.

Modelos de licencia y precios de IronPDF

Garantía de devolución del dinero en 30 días: Una vez adquirida la licencia, recibirá una garantía de devolución del dinero de 30 días. Si la licencia no se adapta bien a sus necesidades, IronPDF le garantiza la devolución de su dinero en un plazo de 30 días.

Fácil integración: La integración de IronPDF junto con un proyecto de trabajo y su entorno es un proceso sin problemas completado utilizando una sola línea de código. Esto puede conseguirse al integrar utilizando el método de paquetes NuGet o descargándolo directamente en línea e integrándolo en su entorno.

Licencia perpetua: Cada licencia se adquiere una sola vez sin necesidad de renovación.

Soporte gratuito y actualizaciones del producto: Cada licencia vendrá con apoyo redondo de la casa directamente desde el equipo detrás del producto y también un año de actualizaciones gratuitas de productos. Es factible comprar extensiones en cualquier momento. Las extensiones pueden verse antes de la compra.

Licencias inmediatas: En cuanto se recibe el pago, se envían las claves de licencia registradas.

Todas las licencias son perpetuas y se aplican a la puesta en marcha, el desarrollo y la producción.

El paquete Lite

  • 1 Desarrollador
  • 1 Localización
  • 1 Proyecto
  • Licencia perpetua

    Este paquete permite a un único desarrollador de software de una organización utilizar Iron Software en una única ubicación. Iron Software puede utilizarse en una única aplicación de intranet, aplicación web o programa de software de escritorio. Está prohibido compartir licencias fuera de una organización o de una relación agencia/cliente, ya que son intransferibles. Este tipo de licencia, al igual que todos los demás tipos de licencia, excluye expresamente todos los derechos no concedidos expresamente en virtud del Acuerdo sin la redistribución OEM y la utilización del Software Iron como SaaS sin adquirir cobertura adicional.

    Precios: desde $749 al año.

Licencia profesional

  • 10 Desarrolladores
  • 10 ubicaciones
  • 10 proyectos
  • Licencia perpetua

    Esta licencia permite a un número predeterminado de desarrolladores de software de una organización utilizar Iron Software en numerosas ubicaciones, con un máximo de diez. Iron Software puede utilizarse en tantos sitios web, aplicaciones de intranet o aplicaciones de software de escritorio como se desee. Las licencias son intransferibles, por lo que está prohibido compartirlas fuera de una organización o de una relación agencia/cliente. Este tipo de licencia, como todos los demás tipos de licencia, excluye expresamente todos los derechos no concedidos expresamente en virtud del Acuerdo, incluida la redistribución OEM y la utilización del Iron Software como SaaS sin adquirir cobertura adicional. Esta licencia puede integrarse en un solo proyecto hasta un máximo de 10.

    Precios: Desde 999 $ al año.

Licencia ilimitada

  • Desarrolladores ilimitados
  • Ubicaciones ilimitadas
  • Proyectos ilimitados
  • Licencia perpetua

    Esto le permite tener un número ilimitado de desarrolladores de software en una sola organización para utilizar Iron Software en un número ilimitado de ubicaciones. Iron Software puede utilizarse en tantas aplicaciones de intranet, aplicaciones de software de escritorio o sitios web como se desee. Las licencias son intransferibles y no pueden compartirse fuera de una organización o de una relación agencia/cliente. Este tipo de licencia, como todos los demás tipos de licencia, excluye expresamente todos los derechos no concedidos en virtud del Acuerdo, incluida la redistribución OEM y la utilización del Software Iron como SaaS sin adquirir cobertura adicional.

    **Precios: A partir de 2999 dólares al año.

    Redistribución libre de regalías: Esto le permite distribuir el Iron Software como parte de varios productos comerciales empaquetados de forma diferente(sin tener que pagar derechos de autor) en función del número de proyectos cubiertos por la licencia base. Esto permitirá el despliegue de Iron Software dentro de los servicios de software SaaS, que se basa en el número de proyectos cubiertos por la licencia base.

    **Precios: A partir de 1599 $ al año.

    Instalación de GrapeCity PDF

Modelos de licencia y precios de GrapeCity PDF

Documentos para PDF

  • Incluye 1 licencia de desarrollador
  • 1 Lugar de distribución

    Este paquete incluye una licencia de desarrollador y una única ubicación de distribución sin soporte ni mantenimiento.

    **Precios: A partir de 999 $ al año.

Documentos para PDF Unlimited

  • Incluye 1 licencia de desarrollador
  • Ubicaciones de distribución ilimitadas

    Este paquete incluye una licencia de desarrollador con ubicaciones de distribución ilimitadas. No incluye asistencia ni mantenimiento. GrapeCity no es compatible con SaaS y OEM.

    Precio: Desde 2799 $ al año.

Documentos para PDF Team Unlimited

  • Incluye 5 licencias de desarrollador
  • Ubicaciones de distribución ilimitadas

    Este paquete incluye cinco licencias de desarrollador con ubicaciones de distribución ilimitadas sin asistencia ni mantenimiento. GrapeCity no admite SaaS ni OEM.

    Precio: Desde 5799 $ al año.

    Comparación de los paquetes PDF de GrapeCity

    El paquete IronPDF Lite One-Developer viene con 1 año de soporte y cuesta alrededor de $749. Mientras que GrapeCity Documents para PDF, incluye un paquete para un desarrollador y cuesta 999 dólares sin ningún tipo de soporte. El paquete IronPDF Professional, que incluye el paquete para 10 desarrolladores y viene con un año de soporte, cuesta 999 dólares. Por otro lado, GrapeCity no dispone de un paquete para 10 desarrolladores, sino sólo de un paquete para 5 desarrolladores que cuesta 5799 dólares.

Los paquetes IronPDF Lite y Professional disponen de servicio SaaS u OEM, así como de una opción de soporte de 5 años. El paquete Lite para un desarrollador ofrece cinco años de soporte, SaaS y servicios OEM por 2897 USD. Mientras que GrapeCity no tiene un servicio SaaS, OEM, o una opción de soporte de 5 años. El paquete para desarrolladores Iron Professional 10 incluye 5 años de soporte, Saas y servicios OEM y cuesta 3397 USD. Mientras que GrapeCity no tiene ningún paquete de 10 desarrolladores.

Conclusión

GrapeCity Documents for PDF permite a los desarrolladores exportar/importar, crear AcroForms(Formularios PDF)y ejecutar PDF en numerosas aplicaciones de escritorio. Con GrapeCity Documents para PDF(GcPdf)está en el buen camino para ofrecer soluciones PDF completas a sus clientes.

Recomendamos encarecidamente IronPDF, ya que el producto ofrece una mayor precisión. Los competidores que realizan funciones similares, pueden encontrar problemas de imprecisión, como fallos en la conversión de algunas imágenes que resultan en caracteres desconocidos. Por otro lado, IronPDF proporciona resultados precisos.

Los paquetes IronPDF ofrecen licencias y asistencia competitivas sin costes permanentes. IronPDF comienza en $749 con paquetes que incluyen una mayor gama de funciones. El PDF de GrapeCity cuesta a partir de 1649 $ al año. IronPDF también es compatible con varias plataformas a un precio único!

Si aún no es cliente de IronPDF, puede acceder a la versión de prueba gratuita para comprobar todas las funciones disponibles. Si compra la Iron Suite completa, podrá obtener los cinco productos por el precio de dos. Para más información sobreLicencias IronPDFsi desea más información, visite la página web de Iron SoftwarePágina del producto Iron Suite para consultar la información completa del paquete.

< ANTERIOR
Comparación entre IronPDF y XFINIUM.PDF
SIGUIENTE >
Comparación entre IronPDF y Textcontrol

¿Listo para empezar? Versión: 2024.12 acaba de salir

Descarga gratuita de NuGet Descargas totales: 11,622,374 Ver licencias >