Aspose.PDF FOSS for .NET es una biblioteca .NET gratuita, con licencia MIT, para leer, crear y manipular documentos PDF. Lanzada bajo una licencia de código abierto permisiva, elimina la barrera tradicional a las capacidades PDF de nivel empresarial — cada característica de la biblioteca está disponible sin necesidad de comprar una licencia comercial.
¿Qué es Aspose.PDF FOSS para .NET?
La biblioteca está dirigida a .NET 8 y versiones posteriores. Se publica en NuGet bajo el ID de paquete Aspose.Pdf.Foss y se puede agregar a cualquier proyecto .NET 8+ con un solo comando:
dotnet add package Aspose.Pdf.Foss --version 0.1.0-alpha
El espacio de nombres principal es Aspose.Pdf, con espacios de nombres relacionados que incluyen Aspose.Pdf.Text, Aspose.Pdf.Forms y Aspose.Pdf.Facades. La biblioteca expone 805 clases públicas de API respaldadas por 7,488 reclamos documentados y 100 fragmentos de código extraídos directamente del conjunto de pruebas.
Capacidades principales
La API cubre todo el ciclo de vida de un documento PDF:
- Creación y carga de documentos —
Document.Create()produce un documento en blanco;Document.Open(data)carga un PDF existente desde un arreglo de bytes o flujo. - Acceso a páginas y contenido — la colección
Pagesproporciona acceso indexado basado en 1 a páginas individuales, cada una de las cuales expone anotaciones, operadores y flujos de contenido. - Extracción de texto —
TextFragmentAbsorbervisita una página y recopila cada fragmento de texto, con filtrado opcional de frases de búsqueda y soporte de expresiones regulares. - Acciones interactivas —
PdfAction.CreateUri,PdfAction.CreateGoTo,PdfAction.CreateJavaScriptyPdfAction.CreateLaunchcubren los tipos de acción estándar de PDF. - Anotaciones —
AnnotationCollection.AddLinkAnnotationadjunta una anotación de enlace con una acción asociada a cualquier región rectangular en una página. - Formularios — el espacio de nombres
Aspose.Pdf.FormsyAspose.Pdf.Facadesproporcionan acceso a campos AcroForm, formato de apariencia y extensiones JavaScript a nivel de campo.
Abrir un documento y agregar un enlace
El siguiente ejemplo demuestra el patrón de ida y vuelta: crear un nuevo documento PDF, agregar una anotación de enlace de acción URI a la primera página, guardar en un flujo y volver a cargar para verificar que la anotación persista.
using var doc = Document.Create();
doc.Pages.Add();
var page = doc.Pages[1];
var action = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(new Rectangle(50, 700, 200, 720), action);
using var ms = new MemoryStream();
doc.Save(ms);
ms.Position = 0;
using var doc2 = Document.Open(ms.ToArray());
var annot = (LinkAnnotation)doc2.Pages[1].Annotations[1];
Console.WriteLine(annot.Uri); // https://aspose.com
El método estático Document.Open acepta un byte[] o un stream. doc.Pages[1] accede a la primera página mediante un índice basado en 1 — la misma convención de índices utilizada en toda la biblioteca. Después de guardar en un MemoryStream, el documento puede recargarse y todas las anotaciones se conservan.
Buscar texto en una página
TextFragmentAbsorber proporciona búsqueda por palabras clave en el flujo de contenido de cualquier página. Pase una frase de búsqueda al constructor para restringir los resultados, o use la sobrecarga sin argumentos para recopilar todos los fragmentos:
using var doc = Document.Open("path/to/document.pdf");
var absorber = new TextFragmentAbsorber("Hello");
absorber.Visit(doc.Pages[1]);
foreach (var fragment in absorber.TextFragments)
{
Console.WriteLine($"Found: {fragment.Text}");
}
Cada TextFragment en la colección resultante expone propiedades que incluyen Text, FontSize y datos posicionales, lo que facilita la creación de flujos de trabajo de búsqueda, resaltado o redacción sobre los fragmentos extraídos.
Licencia MIT y Desarrollo Abierto
Todo el código fuente se publica en GitHub y se distribuye bajo la Licencia MIT. No hay marca de agua de evaluación, no hay límite de uso y no hay un archivo de licencia separado que gestionar. La propiedad Document.IsLicensed siempre devuelve true en la compilación FOSS.
El paquete está actualmente en la versión 0.1.0-alpha, lo que refleja un desarrollo activo. La superficie del API ya es sustancial — 805 clases, 7,488 reclamaciones — y la designación alfa indica que las firmas del API pueden evolucionar antes del lanzamiento 1.0.