COMPARACIóN DE PRODUCTOS

Comparación entre IronPDF y GrapeCity PDF Viewer

Chipego
Chipego Kalinda
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 construcción para crear, leer y manipular documentos PDF con solo 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. Obtén más información sobre IronPDF visitando su sitio oficial sobre las características de IronPDF.

Instalación de IronPDF

Desarrollar una solución requiere la instalación del Paquete NuGet para IronPDF. Haga clic en "Proyecto" directamente desde la barra de menús. Aparecerá una lista desplegable. Seleccione "Administrar Paquetes NuGet" del 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

Agrega el espacio de nombres IronPdf en la parte superior del archivo.

using IronPdf;
using IronPdf;
Imports IronPdf
$vbLabelText   $csharpLabel

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

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 solo dos líneas de código para lograrlo!

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

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

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 de origen en formato zip 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 compilará las fuentes de ejemplo. Inicia el servicio SupportApi y abre la URL http://localhost:3003 en tu 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

El tema a continuación discute el procedimiento de instalación de la WinForms Edition. Los pasos siguientes proporcionan las instrucciones para instalar la edición WinForms:

  • Descarga el C1ControlPanel de [ComponentOne de GrapeCity](https://www.grapecity.com/componentone" target="_blank" rel="nofollow noopener noreferrer) para instalar la última edición de WinForms.
  • Abra el ControlPanel usando ComponentOneC1ControlPanel.exe. Debe cerrar todas las instancias en ejecución de Visual Studio.
  • 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 de la Edición WinForms, selecciona Instalar. La instalación de todas las ediciones se puede lograr seleccionando la casilla de verificación junto a 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, se mostrará 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 el aviso de 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
$vbLabelText   $csharpLabel

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

La garantía de devolución de dinero de 30 días: Una vez que se haya adquirido la licencia, recibirá una garantía de devolución de 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.

Integración fácil: La integración de IronPDF junto a un proyecto en funcionamiento y su entorno es un proceso sin fisuras que se completa con 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 compra solo una vez sin requisitos de renovación.

Soporte gratuito y actualizaciones del producto: Cada licencia incluirá soporte directo del equipo detrás del producto y también un año de actualizaciones gratuitas del producto. Es factible comprar extensiones en cualquier momento. Las extensiones pueden verse antes de la compra.

Licencias Inmediatas: Tan pronto como 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: comienza desde $749 por 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 por 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 por año.

    Redistribución libre de regalías: Esto le permite distribuir el software de Iron Software como parte de varios productos comerciales empaquetados de manera diferente (sin tener que pagar regalías) 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.

    Precio: Desde $1599 por 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 por 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.

    Precios: A partir de $2799 por 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.

    Precios: Comienza desde $5799 por año.

    Comparación de los paquetes PDF de GrapeCity

    El paquete IronPDF Lite One-Developer viene con soporte de 1 año 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 Professional de IronPDF, que incluye el paquete para 10 desarrolladores y viene con un año de soporte, cuesta $999. Por otro lado, GrapeCity no tiene un paquete para 10 desarrolladores, solo un paquete para 5 desarrolladores que cuesta $5799.

Los paquetes Lite y Professional de IronPDF tienen servicio SaaS o OEM, y también 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 PDFs en numerosas aplicaciones de escritorio. Con GrapeCity Documents for PDF (GcPdf), estás en camino de ofrecer soluciones completas de PDF a tus 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 gama más amplia de características. El PDF de GrapeCity cuesta a partir de 1649 $ al año. ¡IronPDF también admite múltiples plataformas a un solo precio!

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 detalles sobre la licencia de IronPDF, por favor visite la página de producto de Iron Suite de Iron Software para revisar la información completa del paquete.

Chipego
Ingeniero de software
Chipego tiene una habilidad natural para escuchar que le ayuda a comprender los problemas de los clientes y a ofrecer soluciones inteligentes. Se unió al equipo de Iron Software en 2023, después de estudiar una licenciatura en Tecnología de la Información. IronPDF e IronOCR son los dos productos en los que Chipego se ha centrado, pero su conocimiento de todos los productos crece día a día, a medida que encuentra nuevas formas de ayudar a los clientes. Disfruta de lo colaborativa que es la vida en Iron Software, con miembros del equipo de toda la empresa que aportan su variada experiencia para contribuir a soluciones eficaces e innovadoras. Cuando Chipego está lejos de su escritorio, a menudo se le puede encontrar disfrutando de un buen libro o jugando al fútbol.
< ANTERIOR
Comparación entre IronPDF y XFINIUM.PDF
SIGUIENTE >
Comparación entre IronPDF y Textcontrol