Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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 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.
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:
Seleccione la pestaña "Examinar" y aparecerá una ventana como ésta:
Escriba 'IronPdf' en el cuadro de búsqueda y pulse "Intro" Debería aparecer la ventana resultante:
Seleccione IronPDF:
Seleccione el botón "Instalar". La ventana resultante aparecerá tras una instalación correcta:
Una vez que pulses el botón "OK", estarás listo para empezar.
Añada el espacio de nombres IronPdf
al principio del archivo.
using IronPdf;
using IronPdf;
Imports IronPdf
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
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.
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
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
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 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.
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.
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.
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.
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.
Hay dos métodos para instalar GrapeCity.
Seleccione el botón descargar archivos fuente comprimidos para descargar las fuentes de muestra actuales.
Extraiga los archivos directamente del zip descargado en un directorio de su ordenador.
Navegue hasta ese directorio.
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.
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:
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.
El instalador instala los controles y muestra su progreso mientras lo hace. No podrá cancelar el proceso de instalación mientras aparezca esta pantalla.
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
GrapeCityPDF no es una biblioteca avanzada para PDF: tiene un número limitado de funciones en comparación con 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.
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 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 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.
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.
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.
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.
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.
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.
9 productos API .NET para sus documentos de oficina