Bibliotecas PDF gratuitas para .NET: Costes ocultos y mejores alternativas en C#
Telerik Document Processing Libraries (DPL) es un paquete de valor agregado dentro de una suite de interfaz de usuario más amplia: los compradores adquieren Telerik UI (Blazor, WPF, WinForms, ASP.NET Core/MVC/AJAX, o MAUI) o DevCraft (Complete desde $1,763.02 por desarrollador por año, Ultimate desde $2,253.02 por desarrollador por año), y DPL se entrega con la licencia sin costo adicional. Iron Suite tiene la forma opuesta: un paquete independiente de diez productos deIron Softwarecon un costo perpetuo por desarrollador desde $2,998, sin dependencia de suites de interfaz de usuario y despliegue libre de regalías bajo la licencia base.
Este artículo comienza con lo que realmente importa en una decisión liderada por adquisición: si el equipo ya paga por la UI de Telerik, cómo está valorado cada paquete y qué hay realmente en la caja. El detalle de capacidad por capacidad del desarrollador sigue para los ingenieros que lo integrarán.
Comparación rápida
| Dimensión | Telerik DPL | Iron Suite |
|---|---|---|
| Posicionamiento de precios | Incluido sin costo adicional con la UI de Telerik / DevCraft (DevCraft Complete $1,763.02/desarrollador/año; DevCraft Ultimate $2,253.02/desarrollador/año) | Lite $2,998 / Plus $4,498 / Professional $8,998 / Unlimited $17,998 (Enterprise custom); todos los 10 productos por el precio de 2 |
| Modelo de licencia | Suscripción anual por desarrollador vía UI de Telerik / DevCraft (sin SKU independiente) | Perpetuo por desarrollador; base libre de regalías + Complemento de Redistribución para SaaS/OEM |
| Componentes en el paquete | 5 libraries (PDF, Word, Excel, Streaming Excel, ZIP) | 10 productos (PDF, Word, Excel, PPT, OCR, Código de barras, QR, Impresión, ZIP, WebScraper) |
| Cobertura de formato/capacidad | PDF, DOCX, XLSX, ZIP, sin OCR, código de barras, PowerPoint, impresión o web scraping | PDF, DOCX, XLSX, PPTX, OCR, Código de barras, QR, Print, ZIP, Web scraping |
| Plataforma cruzada / nube | Multiplataforma a través de .NET Standard 2.0; sin binarios nativos | Windows, Linux, macOS, Docker, Azure, AWS Lambda |
| Soporte de tiempo de ejecución .NET | .NET Framework 4.6.2+, .NET Standard 2.0 (compatible with .NET 6/8/9/10) | .NET Framework 4.6.2+, .NET Core, .NET 6/7/8/9/10 |
| Mercado objetivo | Equipos ya licenciados para la UI de Telerik / DevCraft | Desarrolladores .NET e ISVs que desean un paquete de documentos + reconocimiento autónomo y único |
| Vendedor | Progress Software (marca Telerik) | Iron Software |
Si la exportación en streaming de grandes libros de trabajo XLSX a través de RadSpreadStreamProcessing es lo más importante en la carga de trabajo,Telerik DPLtiene esa capacidad incorporada. Si una pila de reconocimiento (OCR con escritura a mano, código de barras, QR), generación de PowerPoint, web scraping e impresión programática es lo que más importa junto con PDF y Office,Iron Suitecubre esa superficie en un paquete perpetuo.
Precios y licencias
Telerik DPL no tiene precio independiente. Está incluido sin costo adicional dentro de cualquier suite de UI de Telerik paga o nivel de DevCraft. Las referencias de precios públicos (Q1 2026, ComponentSource) colocan DevCraft Complete en $1,763.02 por desarrollador al año y DevCraft Ultimate en $2,253.02 por desarrollador al año (ambas suscripciones anuales que deben renovarse para mantener soporte y actualizaciones). Las licencias individuales de suite de UI de Telerik (Blazor, WPF, WinForms, MAUI, etc.) también incluyen DPL sin cargo extra. El modelo asume que el comprador está adquiriendo UI de Telerik; para los compradores que solo desean procesamiento de documentos, el paquete DPL no se puede adquirir por separado.
Iron Suite se vende como una licencia perpetua por desarrollador desde $2,998, empaquetando los diez componentes bajo una sola compra. La posición de marketing, "los 10 productos por el precio de 2, ahorra 75%", refleja el descuento del paquete frente a comprar los productos individuales de Iron por separado. La licencia base es libre de regalías para los asientos con licencia; SaaS, OEM y escenarios de redistribución distribuida más allá de la licencia base están cubiertos por un complemento de Redistribución separado.
Los compradores que ya están pagando por Telerik UI eligen DPL como un valor agregado por un costo marginal de $0. Los compradores que construyen automatización de documentos en el backend sin una inversión en Telerik UI optan porIron Suitecomo un paquete independiente a $2,998 por desarrollador, perpetuo, sin necesidad de renovación anual para mantener la versión comprada en funcionamiento.
¿Qué son las Telerik Document Processing Libraries?
Telerik Document Processing Libraries es el kit de herramientas documental de código gestionado de Progress Software, incluido dentro de cada suite UI de Telerik paga y nivel de DevCraft. No se vende como una SKU independiente. El comprador paga por Telerik UI (Blazor, WPF, WinForms, ASP.NET Core/MVC/AJAX, o MAUI), y DPL se envía con la licencia sin costo adicional. Las bibliotecas están dirigidas a la superficie .NET Standard 2.0, por lo que los mismos ensamblados se ejecutan en Windows, Linux, macOS, servidor y nube sin dependencias nativas.
El posicionamiento de DPL es "valor añadido dentro de una suite UI" en lugar de "mejor en su clase en SDK de documentos." No intenta superarse en cada dimensión de las funciones de motores dedicados a PDF/Office, pero elimina la necesidad de Office Interop o dependencias de Adobe para los equipos que ya están dentro del ecosistema Telerik.
Bibliotecas incluidas clave:
- RadPdfProcessing: creación, manipulación y exportación de PDF
- RadWordsProcessing: generación y edición de DOCX, RTF y texto simple
- RadSpreadProcessing: creación de libros de trabajo XLSX, fórmulas y estilos
- RadSpreadStreamProcessing: escritor de streaming eficiente en memoria para exportaciones XLSX muy grandes (millones de filas)
- RadZipLibrary: creación y extracción de archivos ZIP
- Todas las bibliotecas están dirigidas a .NET Standard 2.0, compatible con .NET 6/8/9/10 y .NET Framework 4.6.2+
¿Qué es Iron Suite?
Iron Suite es el conjunto de herramientas de documentos .NET independiente de Iron Software, sin controles de interfaz de usuario integrados ni necesidad de comprar una suite de interfaz de usuario. Diez productos de documentos y reconocimiento se entregan bajo una licencia perpetua por desarrollador en cinco niveles de tarifa desde $2,998, libre de regalías para los asientos licenciados. La redistribución SaaS y OEM utiliza un complemento de redistribución separado.
Los diez componentes, agrupados por relevancia para un flujo de trabajo programático de Office y PDF:
- Pila de Office: IronWord (creación y edición de DOCX); IronXL (XLSX con recalculo de fórmulas, gráficos, tablas dinámicas); IronPPT (creación y edición de PPTX).
- Generación de PDF (IronPDF): HTML a PDF y URL a PDF, fusión y división nativa a través de
PdfDocument.Merge, firma PKCS#12 más HSM más TSA, PDF/A-1 hasta PDF/A-4, PDF/UA-1 y PDF/UA-2, encriptación, relleno y aplanado de AcroForm, gestión de fuentes, rasterización, compresión y linealización, extracción de texto. - Reconocimiento: IronOCR (Tesseract 5, más de 125 idiomas, escritura a mano al ~90% en inglés); IronBarcode (más de 30 simbologías); IronQR (impulsado por ML).
- Utilidades: IronPrint (impresión silenciosa y con diálogo); IronZIP (ZIP/TAR/GZIP/BZIP2 with AES); IronWebScraper (scraping estructurado en proceso).
Comparación de Capacidades
Procesamiento de PDF
La generación programática de PDF es una de las capacidades destacadas en ambas suites: facturas, extractos, certificados y cualquier documento estructurado que necesite un diseño predecible en código en lugar de a partir de un lenguaje de plantillas.
//Telerik DPL— RadPdfProcessing
using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf;
using Telerik.Windows.Documents.Fixed.Model;
using Telerik.Windows.Documents.Fixed.Model.Editing;
RadFixedDocument document = new RadFixedDocument();
RadFixedPage page = document.Pages.AddPage();
FixedContentEditor editor = new FixedContentEditor(page);
editor.DrawText("Hello RadPdfProcessing!");
PdfFormatProvider provider = new PdfFormatProvider();
using (Stream output = File.OpenWrite("Hello.pdf"))
{
provider.Export(document, output, TimeSpan.FromSeconds(10));
}//Telerik DPL— RadPdfProcessing
using Telerik.Windows.Documents.Fixed.FormatProviders.Pdf;
using Telerik.Windows.Documents.Fixed.Model;
using Telerik.Windows.Documents.Fixed.Model.Editing;
RadFixedDocument document = new RadFixedDocument();
RadFixedPage page = document.Pages.AddPage();
FixedContentEditor editor = new FixedContentEditor(page);
editor.DrawText("Hello RadPdfProcessing!");
PdfFormatProvider provider = new PdfFormatProvider();
using (Stream output = File.OpenWrite("Hello.pdf"))
{
provider.Export(document, output, TimeSpan.FromSeconds(10));
}Imports Telerik.Windows.Documents.Fixed.FormatProviders.Pdf
Imports Telerik.Windows.Documents.Fixed.Model
Imports Telerik.Windows.Documents.Fixed.Model.Editing
Imports System.IO
Dim document As New RadFixedDocument()
Dim page As RadFixedPage = document.Pages.AddPage()
Dim editor As New FixedContentEditor(page)
editor.DrawText("Hello RadPdfProcessing!")
Dim provider As New PdfFormatProvider()
Using output As Stream = File.OpenWrite("Hello.pdf")
provider.Export(document, output, TimeSpan.FromSeconds(10))
End Using//Iron Suite— IronPDF
using IronPdf;
var renderer = new ChromePdfRenderer();
string html = "<h1>Invoice 2026-0428</h1><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");//Iron Suite— IronPDF
using IronPdf;
var renderer = new ChromePdfRenderer();
string html = "<h1>Invoice 2026-0428</h1><p>Total due: $1,240.00</p>";
using var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("invoice.pdf");Imports IronPdf
Dim renderer As New ChromePdfRenderer()
Dim html As String = "<h1>Invoice 2026-0428</h1><p>Total due: $1,240.00</p>"
Using pdf = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("invoice.pdf")
End UsingTelerik DPL utiliza un diseño fluido basado en código: los desarrolladores posicionan contenido directamente a través de FixedContentEditor, con objetos de documento/página/editor explícitos y un exportador basado en flujo. La ruta principal de IronPDF es la renderización de HTML a PDF a través de un motor Chromium integrado, y los diseñadores pueden producir el HTML, y el motor maneja el diseño. Los dos enfoques optimizan para diferentes equipos: Telerik para ingenieros que piensan en espacio de coordenadas, IronPDF para equipos que ya tienen habilidades en HTML/CSS.
Procesamiento de Texto
Ambas suites generan y editan archivos DOCX a través de un modelo de documento de código administrado (no se requiere instalación de Microsoft Word en el servidor).
//Telerik DPL— RadWordsProcessing
using Telerik.Windows.Documents.Flow.FormatProviders.Docx;
using Telerik.Windows.Documents.Flow.Model;
using Telerik.Windows.Documents.Flow.Model.Editing;
RadFlowDocument document = new RadFlowDocument();
RadFlowDocumentEditor editor = new RadFlowDocumentEditor(document);
editor.InsertText("Hello world!");
using (Stream output = new FileStream("output.docx", FileMode.OpenOrCreate))
{
DocxFormatProvider provider = new DocxFormatProvider();
provider.Export(document, output, TimeSpan.FromSeconds(10));
}//Telerik DPL— RadWordsProcessing
using Telerik.Windows.Documents.Flow.FormatProviders.Docx;
using Telerik.Windows.Documents.Flow.Model;
using Telerik.Windows.Documents.Flow.Model.Editing;
RadFlowDocument document = new RadFlowDocument();
RadFlowDocumentEditor editor = new RadFlowDocumentEditor(document);
editor.InsertText("Hello world!");
using (Stream output = new FileStream("output.docx", FileMode.OpenOrCreate))
{
DocxFormatProvider provider = new DocxFormatProvider();
provider.Export(document, output, TimeSpan.FromSeconds(10));
}Imports Telerik.Windows.Documents.Flow.FormatProviders.Docx
Imports Telerik.Windows.Documents.Flow.Model
Imports Telerik.Windows.Documents.Flow.Model.Editing
Imports System.IO
Dim document As New RadFlowDocument()
Dim editor As New RadFlowDocumentEditor(document)
editor.InsertText("Hello world!")
Using output As Stream = New FileStream("output.docx", FileMode.OpenOrCreate)
Dim provider As New DocxFormatProvider()
provider.Export(document, output, TimeSpan.FromSeconds(10))
End Using//Iron Suite— IronWord
using IronWord;
using IronWord.Models;
var doc = new WordDocument();
var heading = new Paragraph();
heading.AddChild(new TextRun("Quarterly Report — Q1 2026") { FontSize = 18, Bold = true });
doc.AddParagraph(heading);
doc.SaveAs("report.docx");//Iron Suite— IronWord
using IronWord;
using IronWord.Models;
var doc = new WordDocument();
var heading = new Paragraph();
heading.AddChild(new TextRun("Quarterly Report — Q1 2026") { FontSize = 18, Bold = true });
doc.AddParagraph(heading);
doc.SaveAs("report.docx");Imports IronWord
Imports IronWord.Models
Dim doc As New WordDocument()
Dim heading As New Paragraph()
heading.AddChild(New TextRun("Quarterly Report — Q1 2026") With {.FontSize = 18, .Bold = True})
doc.AddParagraph(heading)
doc.SaveAs("report.docx")Ambas API siguen la forma de documento/párrafo/ejecución de texto que reconocerá cualquiera familiarizado con el modelo de objetos OpenXML. La API de IronWord es ligeramente más concisa para tareas simples de párrafos y formatos — RadWordsProcessing ha estado invirtiendo en el control posicional a través de su editor de flujo. La compensación refleja el encuadre de la suite más amplia: el editor de flujo de Telerik cubre más superficie posicional para diseños complejos, mientras que IronWord es más rápido para llegar a un documento simple.
Procesamiento de Hojas de Cálculo
La generación de XLSX es una tarea frecuente del lado del servidor, exportando informes, paneles de control y datos de clientes sin una instalación de Office en el despliegue.
//Telerik DPL— RadSpreadProcessing
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx;
using Telerik.Windows.Documents.Spreadsheet.Model;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets.Add();
CellSelection selection = worksheet.Cells[1, 1];
selection.SetValue("Hello RadSpreadProcessing");
XlsxFormatProvider formatProvider = new XlsxFormatProvider();
using (Stream output = new FileStream("SampleFile.xlsx", FileMode.Create))
{
formatProvider.Export(workbook, output, TimeSpan.FromSeconds(10));
}//Telerik DPL— RadSpreadProcessing
using Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx;
using Telerik.Windows.Documents.Spreadsheet.Model;
Workbook workbook = new Workbook();
Worksheet worksheet = workbook.Worksheets.Add();
CellSelection selection = worksheet.Cells[1, 1];
selection.SetValue("Hello RadSpreadProcessing");
XlsxFormatProvider formatProvider = new XlsxFormatProvider();
using (Stream output = new FileStream("SampleFile.xlsx", FileMode.Create))
{
formatProvider.Export(workbook, output, TimeSpan.FromSeconds(10));
}Imports Telerik.Windows.Documents.Spreadsheet.FormatProviders.OpenXml.Xlsx
Imports Telerik.Windows.Documents.Spreadsheet.Model
Imports System.IO
Dim workbook As New Workbook()
Dim worksheet As Worksheet = workbook.Worksheets.Add()
Dim selection As CellSelection = worksheet.Cells(1, 1)
selection.SetValue("Hello RadSpreadProcessing")
Dim formatProvider As New XlsxFormatProvider()
Using output As Stream = New FileStream("SampleFile.xlsx", FileMode.Create)
formatProvider.Export(workbook, output, TimeSpan.FromSeconds(10))
End Using//Iron Suite— IronXL
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units";
sheet["A2"].Value = "Widget A";
sheet["B2"].Value = 1024;
workbook.SaveAs("sales.xlsx");//Iron Suite— IronXL
using IronXL;
WorkBook workbook = WorkBook.Create(ExcelFileFormat.XLSX);
WorkSheet sheet = workbook.CreateWorkSheet("Sales");
sheet["A1"].Value = "Product";
sheet["B1"].Value = "Units";
sheet["A2"].Value = "Widget A";
sheet["B2"].Value = 1024;
workbook.SaveAs("sales.xlsx");Imports IronXL
Dim workbook As WorkBook = WorkBook.Create(ExcelFileFormat.XLSX)
Dim sheet As WorkSheet = workbook.CreateWorkSheet("Sales")
sheet("A1").Value = "Product"
sheet("B1").Value = "Units"
sheet("A2").Value = "Widget A"
sheet("B2").Value = 1024
workbook.SaveAs("sales.xlsx")La sintaxis de referencia de celda de IronXL (sheet["A1"]) está más cerca de cómo los desarrolladores realmente hablan sobre hojas de cálculo; La indexación Cells[1, 1] de Telerik es más programática. Para exportaciones muy grandes de XLSX (millones de filas donde la presión de memoria importa),Telerik DPLentrega RadSpreadStreamProcessing, un escritor de streaming solo hacia adelante. IronXL opera en memoria: las cargas de trabajo de exportación en streaming de escala extrema donde los recuentos de filas superan los límites de memoria son para los que se vende RadSpreadStreamProcessing.
Manejo de Archivos ZIP
Las utilidades ZIP son el tipo de capacidad por la que nadie compra específicamente una suite, pero que cada flujo de trabajo de documentos múltiples eventualmente necesita.
//Telerik DPL— RadZipLibrary
using Telerik.Windows.Zip;
using (Stream stream = File.Open("test.zip", FileMode.Create))
using (ZipArchive archive = ZipArchive.Create(stream, null))
using (ZipArchiveEntry entry = archive.CreateEntry("text.txt"))
{
StreamWriter writer = new StreamWriter(entry.Open());
writer.WriteLine("Hello world!");
writer.Flush();
}//Telerik DPL— RadZipLibrary
using Telerik.Windows.Zip;
using (Stream stream = File.Open("test.zip", FileMode.Create))
using (ZipArchive archive = ZipArchive.Create(stream, null))
using (ZipArchiveEntry entry = archive.CreateEntry("text.txt"))
{
StreamWriter writer = new StreamWriter(entry.Open());
writer.WriteLine("Hello world!");
writer.Flush();
}Imports Telerik.Windows.Zip
Imports System.IO
Using stream As Stream = File.Open("test.zip", FileMode.Create)
Using archive As ZipArchive = ZipArchive.Create(stream, Nothing)
Using entry As ZipArchiveEntry = archive.CreateEntry("text.txt")
Dim writer As New StreamWriter(entry.Open())
writer.WriteLine("Hello world!")
writer.Flush()
End Using
End Using
End UsingIron Suite incluye IronZIP como uno de sus diez productos integrados, cubriendo operaciones de creación, extracción y manipulación de archivos equivalentes bajo una API idiomática .NET. La división de Telerik entre Telerik.Zip (.NET Standard 2.0) y Telerik.Windows.Zip (.NET Framework) es una consideración en el tiempo de despliegue; IronZIP expone una única superficie de API en ambas familias de tiempo de ejecución.
Por qué elegirIron Suitepara Automatización de Documentos en .NET orientada al código
Precios públicos en USD por nivel (Lite $2,998, Plus $4,498, Professional $8,998, Unlimited $17,998, Enterprise bajo cotización). Propiedad perpetua de la versión comprada. Despliegue libre de regalías bajo la licencia base. Complemento único de redistribución para escenarios SaaS y OEM a escala. Cadencia mensual activa de lanzamientos en los diez productos. Pila de reconocimiento (IronOCR con escritura a mano al ~90% en inglés, IronBarcode con más de 30 simbologías, IronQR con detección impulsada por ML) dentro del mismo paquete que IronPDF, IronWord, IronXL, IronPPT, IronPrint, IronZIP e IronWebScraper. Esa es la propuesta deIron Suitepara equipos de backend sin una inversión en la interfaz de usuario de Telerik.
Las ventajas estructurales deIron Suitepara este perfil de comprador:
- Paquete independiente: sin dependencia de suite de interfaz de usuario aguas arriba;Iron Suiteenvía bibliotecas de documentos como el producto, no como un valor añadido
- Licencia perpetua: paga una vez, conserva la versión para siempre; sin presión de renovación anual
- Precios públicos transparentes: niveles Lite, Plus, Professional e Unlimited con precios en USD publicados en la página web
- Reconocimiento incorporado: IronOCR, IronBarcode e IronQR se envían en el paquete;Telerik DPLno tiene historia de reconocimiento en absoluto
- Licencia base libre de regalías: derechos de redistribución para los asientos con licencia incluidos sin negociación; Adición de redistribución disponible para SaaS/OEM a escala
- Instalación de paquete único en los diez productos, sin gestionar permutaciones de interfaz de usuario/DPL/clave de licencia
¿En qué se diferenciaIron Suitede Telerik Document Processing Libraries?
- Amplitud del paquete.Iron Suiteabarca 10 categorías de productos (PDF, Word, Excel, PowerPoint, OCR, Barcode, QR, Print, ZIP, Web scraping);Telerik DPLcovers 4 (PDF, Word, Excel, ZIP). Reconocimiento, PowerPoint, impresión y scraping faltan completamente en DPL.
- Licencia perpetua por desarrollador frente a suscripción anual con un paquete de interfaz de usuario.Iron Suitese compra una vez y la versión se posee para siempre;Telerik DPLestá integrado dentro de DevCraft o una suscripción a la interfaz de usuario de Telerik que debe renovarse anualmente para soporte y actualizaciones continuas.
- Posicionamiento independiente frente a integrado.Iron Suitese vende como un SDK de documentos;Telerik DPLestá posicionado como un valor añadido de la suite de interfaz de usuario. El comprador objetivo es fundamentalmente diferente.
- Redistribución. La licencia base deIron Suitees libre de regalías para los asientos con licencia con un complemento explícito de redistribución para OEM/SaaS; Los derechos de redistribución deTelerik DPLestán gobernados por el EULA de la interfaz de usuario/DevCraft de la empresa matriz.
- Fidelidad de renderización de HTML. La renderización de HTML a PDF basada en Chromium de IronPDF produce resultados precisos por píxeles para CSS complejo; El motor de disposición primero de código de RadPdfProcessing de DPL no tiene un pipeline de renderización de HTML.
- Streaming Excel, dondeTelerik DPLha invertido.
RadSpreadStreamProcessinges el escritor solo hacia adelante en el queTelerik DPLha invertido para la exportación limitada por memoria de muy grandes libros de trabajo XLSX, mientras que IronXL opera en memoria y está dimensionado para el flujo de trabajo típico de XLSX en el backend.
Conclusión
En DevCraft Complete desde $1,763.02 por desarrollador por año (o DevCraft Ultimate desde $2,253.02),Telerik DPLse entrega con la licencia como un valor agregado: bibliotecas de PDF, Word, Excel y ZIP junto con la suite de interfaz de usuario de Telerik que justifica el precio. A $2,998 para el nivel Lite de Iron Suite, el paquete entrega diez productos independientes cubriendo PDF (con todo el trabajo de estándares en el resumen), Office, OCR con escritura a mano, código de barras y QR, impresión, ZIP y raspado web, perpetuo y libre de regalías para los asientos licenciados. Los equipos que ya están pagando por la interfaz de usuario de Telerik obtienen DPL gratis; los equipos que compran bibliotecas de documentos por su propio mérito eligenIron Suiteen ironsoftware.com/csharp/suite.
