Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
Con la mejora de la tecnología y el aumento del uso de Internet, la mayoría de los datos se envían y reciben en formato digital, principalmente en archivos PDF.
Trabajar con documentos PDF en C# ha sido difícil para los desarrolladores en el pasado reciente. Hay muchos escenarios en los que los desarrolladores necesitan incorporar capacidades de visualización y generación de PDF en sus aplicaciones. Teniendo esto en cuenta, se han desarrollado muchas bibliotecas para facilitar estas tareas y otras similares.
Este artículo va a comparar dos de las bibliotecas PDF más populares para desarrolladores .NET y .NET Core. Estas dos bibliotecas son:
La biblioteca PDFium.NET SDK
IronPDF y PDFium.NET pueden crear, manipular e imprimir archivos PDF en aplicaciones .NET. La cuestión que se plantea es: ¿qué biblioteca debe utilizarse? Este artículo le permitirá decidir por sí mismo.
En primer lugar, echemos un vistazo a lo que ofrecen las dos bibliotecas, y luego pasaremos a la comparación propiamente dicha.
PDFium.NET se utiliza para crear, modificar y visualizar archivos en formato PDF.(formatos de documentos portátiles). Proporciona una API C#/VB.NET de alto nivel para la creación dinámica de PDF en un servidor web y para implementar la función Guardar como PDF en aplicaciones web o de escritorio existentes.
Las características más destacadas de PDFium.NET son:
La biblioteca PDF IronPDF .NET está hecha a medida para desarrolladores, en particular para desarrolladores de C#. Con esta asombrosa biblioteca PDF, podrá incorporar fácilmente funciones de visualización de PDF en sus proyectos .NET.
IronPDF tiene un motor Chromium incorporado que puede convertir HTML a PDF muy fácilmente. Esto no requiere ninguna API complicada y de bajo nivel para manipular archivos PDF. Puede manejar archivos fuente HTML como documentos HTML, archivos JavaScript y páginas web ASPX.
IronPDF puede personalizar PDF con encabezados y pies de página personalizados, marcas de agua y mucho más. También hace que leer texto en PDF y extraer gráficos sea pan comido para los desarrolladores.
Entre las características más destacadas de IronPDF for .NET se incluyen:
Imprimir archivos PDF sin utilizar Adobe Acrobat Reader.
La biblioteca IronPDF está disponible para casi todos los sistemas operativos y marcos compatibles con C#, incluidos los siguientes:
Azure, AWS, Docker, Linux, Windows
El resto del artículo es el siguiente:
Instalación de la biblioteca IronPDF C#
Instalación del SDK PDFium.NET
Crear un documento PDF
Crear PDF a partir de varias imágenes
Firma digital PDF
Precios y licencias
Existen diferentes formas de descargar e instalar la biblioteca IronPDF. Los métodos más sencillos son los siguientes:
Uso de Visual Studio
Símbolo del sistema para desarrolladores
Descargue directamente el paquete NuGet
En su proyecto de Visual Studio, desde el menú "Herramientas" o haga clic con el botón derecho en su proyecto en el Explorador de soluciones y seleccione "Administrar paquetes NuGet". Ambas opciones se muestran a continuación en las capturas de pantalla.
Una vez abierto el gestor de paquetes NuGet, busque el paquete IronPDF e instálelo, como se muestra en la siguiente captura de pantalla.
IronPDF también puede descargarse a través del símbolo del sistema para desarrolladores. Siga los pasos que se indican a continuación:
Install-Package IronPdf
IronPDF también puede descargarse directamente visitando la página webPaquete NuGet IronPDF. Los pasos son:
También puededescargue el archivo IronPDF.DLL directamente de la página del paquete de IronPDF.
Haga referencia a la biblioteca IronPDF en su proyecto siguiendo estos pasos:
Haga clic en OK!
Todo hecho! Se descarga e instala IronPDF. Ahora trabajaremos en la instalación de la biblioteca PDFium.NET SDK.
Podemos instalar PDFium.NET utilizando el gestor de paquetes NuGet o descargando el instalador de PDFium para Windows.
Busque PDFium.NET.SDK. Haga clic en Instalar en su proyecto actual.
PM> Install-Package Pdfium.Net.SDK
IronPDF ofrece varios métodos para generar archivos PDF. Veamos dos importantes.
IronPDF hace que sea muy sencillo convertirHTML a PDF con el renderizado de URL de IronPDF uso de URL existentes.
Considere el siguiente código fuente.
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
IronPdf.ChromePdfRenderer Renderer = new IronPdf.ChromePdfRenderer();
using var Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/");
Pdf.SaveAs("url.pdf");
Dim Renderer As New IronPdf.ChromePdfRenderer()
Dim Pdf = Renderer.RenderUrlAsPdf("https://ironpdf.com/")
Pdf.SaveAs("url.pdf")
El siguiente fragmento de código muestra cómo puede utilizarse una cadena HTML para representar una página PDF. Puede utilizar HTML sencillo o combinarlo con CSS, imágenes y JavaScript.
var Renderer = new IronPDF.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");
// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", @"e:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
var Renderer = new IronPDF.ChromePdfRenderer();
using var PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>");
PDF.SaveAs("pixel-perfect.pdf");
// Load external html assets: images, css and javascript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
using var AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", @"e:\site\assets\");
AdvancedPDF.SaveAs("html-with-assets.pdf");
Dim Renderer = New IronPDF.ChromePdfRenderer()
Dim PDF = Renderer.RenderHtmlAsPdf("<h1>Html with CSS and Images</h1>")
PDF.SaveAs("pixel-perfect.pdf")
' Load external html assets: images, css and javascript.
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
Dim AdvancedPDF = Renderer.RenderHtmlAsPdf("<img src='logo_square.png'>", "e:\site\assets\")
AdvancedPDF.SaveAs("html-with-assets.pdf")
El resultado es el siguiente:
Puede generar PDF sobre la marcha utilizando imágenes y objetos de texto. Sin embargo, no puede convertir una URL o una cadena HTML en un archivo PDF.
El código para generar PDFs utilizando PDFium.NET es el siguiente:
public void CreatePDF()
{
// Step 1: Initialize PDF library and create empty document
// Return value: PdfDocument main class
PdfCommon.Initialize();
var doc = PdfDocument.CreateNew(); // Create a PDF document
// Step 2: Add new page
// Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
// The PDF unit of measure is point. There are 72 points in one inch.
var page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27f * 72, 11.69f * 72);
// Step 3: Add graphics and text contents to the page
// Insert image from file using standard System.Drawing.Bitmap class
using (PdfBitmap logo = PdfBitmap.FromFile(@"e:\site\assets\logo_square.png"))
{
PdfImageObject imageObject = PdfImageObject.Create(doc, logo, 0, 0);
//image resolution is 300 DPI and location is 1.69 x 10.0 inches.
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
page.PageObjects.Add(imageObject);
}
// Create fonts used for text objects
PdfFont calibryBold = PdfFont.CreateFont(doc, "CalibriBold");
// Insert text objects at 7.69"; 11.02" and font size is 25
PdfTextObject textObject = PdfTextObject.Create("Sample text", 7.69f * 72, 11.02f * 72, calibryBold, 25);
textObject.FillColor = FS_COLOR.Black;
page.PageObjects.Add(textObject);
// Step 5: Generate page content and save PDF file
// argument: PDF file name
page.GenerateContent();
doc.Save(@"e:\site\sample_document.pdf", SaveFlags.NoIncremental);
}
public void CreatePDF()
{
// Step 1: Initialize PDF library and create empty document
// Return value: PdfDocument main class
PdfCommon.Initialize();
var doc = PdfDocument.CreateNew(); // Create a PDF document
// Step 2: Add new page
// Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
// The PDF unit of measure is point. There are 72 points in one inch.
var page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27f * 72, 11.69f * 72);
// Step 3: Add graphics and text contents to the page
// Insert image from file using standard System.Drawing.Bitmap class
using (PdfBitmap logo = PdfBitmap.FromFile(@"e:\site\assets\logo_square.png"))
{
PdfImageObject imageObject = PdfImageObject.Create(doc, logo, 0, 0);
//image resolution is 300 DPI and location is 1.69 x 10.0 inches.
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
page.PageObjects.Add(imageObject);
}
// Create fonts used for text objects
PdfFont calibryBold = PdfFont.CreateFont(doc, "CalibriBold");
// Insert text objects at 7.69"; 11.02" and font size is 25
PdfTextObject textObject = PdfTextObject.Create("Sample text", 7.69f * 72, 11.02f * 72, calibryBold, 25);
textObject.FillColor = FS_COLOR.Black;
page.PageObjects.Add(textObject);
// Step 5: Generate page content and save PDF file
// argument: PDF file name
page.GenerateContent();
doc.Save(@"e:\site\sample_document.pdf", SaveFlags.NoIncremental);
}
Public Sub CreatePDF()
' Step 1: Initialize PDF library and create empty document
' Return value: PdfDocument main class
PdfCommon.Initialize()
Dim doc = PdfDocument.CreateNew() ' Create a PDF document
' Step 2: Add new page
' Arguments: page width: 8.27", page height: 11.69", Unit of measure: inches
' The PDF unit of measure is point. There are 72 points in one inch.
Dim page = doc.Pages.InsertPageAt(doc.Pages.Count, 8.27F * 72, 11.69F * 72)
' Step 3: Add graphics and text contents to the page
' Insert image from file using standard System.Drawing.Bitmap class
Using logo As PdfBitmap = PdfBitmap.FromFile("e:\site\assets\logo_square.png")
Dim imageObject As PdfImageObject = PdfImageObject.Create(doc, logo, 0, 0)
'image resolution is 300 DPI and location is 1.69 x 10.0 inches.
imageObject.Matrix = New FS_MATRIX(logo.Width * 72 \ 300, 0, 0, logo.Height * 72 \ 300, 1.69 * 72, 10.0 * 72)
page.PageObjects.Add(imageObject)
End Using
' Create fonts used for text objects
Dim calibryBold As PdfFont = PdfFont.CreateFont(doc, "CalibriBold")
' Insert text objects at 7.69"; 11.02" and font size is 25
Dim textObject As PdfTextObject = PdfTextObject.Create("Sample text", 7.69F * 72, 11.02F * 72, calibryBold, 25)
textObject.FillColor = FS_COLOR.Black
page.PageObjects.Add(textObject)
' Step 5: Generate page content and save PDF file
' argument: PDF file name
page.GenerateContent()
doc.Save("e:\site\sample_document.pdf", SaveFlags.NoIncremental)
End Sub
El resultado es el siguiente:
Si comparamos el resultado de los proyectos IronPDF y PDFium, podemos ver claramente que el resultado basado en la biblioteca de clases IronPDF ofrece un mejor resultado utilizando el renderizado HTML y sin ni siquiera escalar el tamaño de la imagen. Por otro lado, PDFium.NET da un resultado similar a IronPDF, pero sólo con el escalado de la imagen. Si omitimos esta línea del código
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
imageObject.Matrix = new FS_MATRIX(logo.Width * 72 / 300, 0, 0, logo.Height * 72 / 300, 1.69 * 72, 10.0 * 72);
imageObject.Matrix = New FS_MATRIX(logo.Width * 72 \ 300, 0, 0, logo.Height * 72 \ 300, 1.69 * 72, 10.0 * 72)
La salida será:
Fusionar dos o más PDF es fácil en IronPDF. Con el método Combinar, puede combinar dos o más archivos PDF en los que cada archivo esté separado por una coma. El código es el siguiente:
using IronPdf;
var html_a = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_A] 2nd Page</p>";
var html_b = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_B] 2nd Page</p>";
var Renderer = new IronPDF.ChromePdfRenderer();
var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
var merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
merged.SaveAs("Merged.PDF");
using IronPdf;
var html_a = @"<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_A] 2nd Page</p>";
var html_b = @"<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_B] 2nd Page</p>";
var Renderer = new IronPDF.ChromePdfRenderer();
var pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a);
var pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b);
var merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b);
merged.SaveAs("Merged.PDF");
Imports IronPdf
Private html_a = "<p> [PDF_A] </p>
<p> [PDF_A] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_A] 2nd Page</p>"
Private html_b = "<p> [PDF_B] </p>
<p> [PDF_B] 1st Page </p>
<div style = 'page-break-after: always;' ></div>
<p> [PDF_B] 2nd Page</p>"
Private Renderer = New IronPDF.ChromePdfRenderer()
Private pdfdoc_a = Renderer.RenderHtmlAsPdf(html_a)
Private pdfdoc_b = Renderer.RenderHtmlAsPdf(html_b)
Private merged = IronPDF.PdfDocument.Merge(pdfdoc_a, pdfdoc_b)
merged.SaveAs("Merged.PDF")
Con PDFium.NET, no sólo puede combinar varios archivos PDF en un único archivo, sino que también puede seleccionar determinadas páginas específicas de los archivos de origen y combinarlas en un documento PDF.
El siguiente código muestra cómo hacerlo utilizando el método ImportPages
.
public void MergePDF()
{
//Initialize the SDK library.
PdfCommon.Initialize();
//Open and load a PDF document in which other files will be merged
using (var mainDoc = PdfDocument.Load(@"c:\test001.pdf")) // C# Read source PDF File #1
{
//Open one PDF document.
using (var doc = PdfDocument.Load(@"c:\doc1.pdf")) //Read PDF File #2
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
//Open another PDF document.
using (var doc = PdfDocument.Load(@"c:\doc2.pdf"))
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
mainDoc.Save(@"c:\ResultDocument.pdf", SaveFlags.NoIncremental);
}
}
public void MergePDF()
{
//Initialize the SDK library.
PdfCommon.Initialize();
//Open and load a PDF document in which other files will be merged
using (var mainDoc = PdfDocument.Load(@"c:\test001.pdf")) // C# Read source PDF File #1
{
//Open one PDF document.
using (var doc = PdfDocument.Load(@"c:\doc1.pdf")) //Read PDF File #2
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
//Open another PDF document.
using (var doc = PdfDocument.Load(@"c:\doc2.pdf"))
{
//Import all pages from document
mainDoc.Pages.ImportPages(
doc,
string.Format("1-{0}", doc.Pages.Count),
mainDoc.Pages.Count
);
}
mainDoc.Save(@"c:\ResultDocument.pdf", SaveFlags.NoIncremental);
}
}
Public Sub MergePDF()
'Initialize the SDK library.
PdfCommon.Initialize()
'Open and load a PDF document in which other files will be merged
Using mainDoc = PdfDocument.Load("c:\test001.pdf") ' C# Read source PDF File #1
'Open one PDF document.
Using doc = PdfDocument.Load("c:\doc1.pdf") 'Read PDF File #2
'Import all pages from document
mainDoc.Pages.ImportPages(doc, String.Format("1-{0}", doc.Pages.Count), mainDoc.Pages.Count)
End Using
'Open another PDF document.
Using doc = PdfDocument.Load("c:\doc2.pdf")
'Import all pages from document
mainDoc.Pages.ImportPages(doc, String.Format("1-{0}", doc.Pages.Count), mainDoc.Pages.Count)
End Using
mainDoc.Save("c:\ResultDocument.pdf", SaveFlags.NoIncremental)
End Using
End Sub
Una de las funciones más importantes hoy en día es la firma digital de un documento PDF. IronPDF ofrece esta posibilidad. El código es el siguiente:
using IronPdf;
// Cryptographically sign an existing PDF in 1 line of code!
new IronPDF.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");
/***** Advanced example for more control *****/
// Step 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>");
// Step 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
var signature = new IronPDF.Signing.PdfSignature("Iron.pfx", "123456");
// Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");
//Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);
//Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
using IronPdf;
// Cryptographically sign an existing PDF in 1 line of code!
new IronPDF.Signing.PdfSignature("Iron.p12", "123456").SignPdfFile("any.pdf");
/***** Advanced example for more control *****/
// Step 1. Create a PDF
var Renderer = new IronPdf.ChromePdfRenderer();
var doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>");
// Step 2. Create a Signature.
// You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
var signature = new IronPDF.Signing.PdfSignature("Iron.pfx", "123456");
// Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png");
//Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature);
//Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf");
Imports IronPdf
' Cryptographically sign an existing PDF in 1 line of code!
Call (New IronPDF.Signing.PdfSignature("Iron.p12", "123456")).SignPdfFile("any.pdf")
'''*** Advanced example for more control ****
' Step 1. Create a PDF
Dim Renderer = New IronPdf.ChromePdfRenderer()
Dim doc = Renderer.RenderHtmlAsPDF("<h1>Testing 2048 bit digital security</h1>")
' Step 2. Create a Signature.
' You may create a .pfx or .p12 PDF signing certificate using Adobe Acrobat Reader.
Dim signature = New IronPDF.Signing.PdfSignature("Iron.pfx", "123456")
' Step 3. Handwritten signature graphic
signature.LoadSignatureImageFromFile("handwriting.png")
'Step 4. Sign the PDF with the PDFSignature. Multiple signing certificates may be used
doc.SignPdfWithDigitalSignature(signature)
'Step 4. The PDF is not signed until saved to file, stream or byte array.
doc.SaveAs("signed.pdf")
PDFium.NET carece de esta capacidad para firmar digitalmente documentos PDF.
IronPDF es de uso gratuito para el desarrollo de aplicaciones sencillas y puede adquirirse una licencia de uso comercial en cualquier momento. Ofrece licencias para un solo proyecto, para un solo desarrollador, para agencias y para organizaciones multinacionales. También ofrece licencias de redistribución SaaS y OEM y asistencia.
Todas las licencias de IronPDF están disponibles con una garantía de devolución del dinero de 30 días, además de un año de soporte y actualizaciones del software. Y lo que es más importante, es una licencia perpetua(compra única). El paquete Lite está disponible. Los productos IronPDF no conllevan ninguna cuota periódica. Encontrará información más detallada sobre las licencias disponibles en la páginaPágina de licencias de IronPDF.
PDFium.NET ofrece una licencia perpetua. Puede utilizar esta versión del SDK compatible con su clave de registro para siempre. Sin embargo, la clave sólo funciona con algunas versiones específicas del SDK que dependen de la fecha de compra o renovación de la licencia. Puede instalar cualquier nueva versión del producto gratis, siempre que haya sido lanzada antes o en el plazo de un año desde su compra. PDFium.NET también ofrece 3 paquetes de licencia diferentes:
La licencia de desarrollador individual está diseñada para desarrolladores individuales y autónomos que trabajan para varios clientes.
Puede visitar la páginaPágina de compra de PDFium.NET para conocer todos los precios.
La biblioteca IronPDF es una biblioteca fácil de usar para crear documentos PDF sin ninguna API complicada. El motor de cromo incorporado permite una conversión de HTML a PDF perfecta con tipos de documentos estándar abiertos como HTML, JS, CSS, JPG, PNG, GIF y SVG.
PDFium.NET SDK es una biblioteca de clases .NET diseñada para satisfacer las necesidades más comunes de un desarrollador por un precio más que asequible. Con PDFium.NET SDK, sus aplicaciones podrán mostrar y manipular documentos PDF a las mil maravillas. Su API especial de edición de objetos de página es lo que hace que esta biblioteca sea especialmente potente.
Las licencias de PDFium.NET vienen en tres ediciones, como se ha mencionado anteriormente. La licencia de proyecto único ofrece facilidades para un solo desarrollador y hasta tres desarrolladores a partir de 720 y 900 dólares respectivamente. Es algo más barato que IronPDF, que tiene una versión Lite a partir de un precio inferior.
IronPDF ofrece una licencia ilimitada a un precio competitivo. En cambio, PDFium.NET tiene una licencia organizativa para un número ilimitado de desarrolladores por un precio superior. Por el contrario, IronPDF ofrece una licencia profesional que puede ser utilizada por 10 desarrolladores, y cuesta aproximadamente la mitad de la licencia equivalente de PDFium.NET para 10 desarrolladores.
En los ejemplos anteriores, ha visto cómo IronPDF crea y modifica documentos PDF utilizando muchas menos líneas de código en comparación con PDFium.NET. Esto ayuda a aliviar la carga de trabajo del desarrollador y le permite ser más productivo. IronPDF proporciona múltiples métodos para convertir de casi cualquier formato a PDF. En cambio, PDFium.NET solo ofrece unos pocos métodos como imágenes y texto a PDF.
Ahora puedeadquiera todas las bibliotecas de productos de Iron Software por sólo el precio de dos de ellos. Además, hay unprueba gratuita para probar la funcionalidad.
9 productos API .NET para sus documentos de oficina