7 cosas que los desarrolladores de .NET querrán usar con una biblioteca PDF

Xceed PDF Library para .NET 2.0 incluye firma digital, marcadores, campos de formulario y soporte multiplataforma. Esta guía cubre lo que hace, cómo se compara, e incluye un proyecto de demostración funcional en .NET 10.

Todo desarrollador de .NET eventualmente se enfrenta al mismo momento: alguien te pide generar un PDF. Quizás sea una factura. Quizás un informe. Quizás un contrato firmado. Y de repente te encuentras mirando una docena de paquetes de NuGet, la mitad de ellos abandonados, preguntándote cuál no te hará perder la tarde.

En Librería PDF .NET El ecosistema está saturado, pero la mayoría de las opciones caen en dos trampas. O intentan hacerlo todo (y cuestan una fortuna) o cubren lo básico mientras fallan silenciosamente en cualquier cosa que vaya más allá de “Hola Mundo”. Encontrar algo intermedio —ligero, genuinamente capaz y a un precio razonable— siempre ha sido la parte difícil.

Xceed lanzó Biblioteca PDF para .NET 2.0 en marzo de 2026. Crea, edita, firma y extrae documentos PDF a partir de código C# puro. Sin dependencia de Adobe Acrobat, sin trucos de interoperabilidad, sin generar procesos externos. Solo un paquete NuGet que es compatible con .NET 5 hasta .NET 10 y funciona en Windows, macOS y Linux.

Esto es lo que realmente hace, con código que puedes copiar y ejecutar hoy mismo.

Primeros pasos: un paquete NuGet, cero dependencias

Instale el Biblioteca PDF C# desde NuGet:

dotnet add package Xceed.PdfLibrary.NET

Esto incluye la versión 2.0.26166.7850. El paquete no tiene dependencias externas en .NET 5+ (solo System.Security.Cryptography.Pkcs para la firma digital, que viene con el tiempo de ejecución). El archivo de tu proyecto se mantiene limpio:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Xceed.PdfLibrary.NET" Version="2.0.26166.7850" />
  </ItemGroup>
</Project>

Antes de crear o cargar cualquier PDF, configura tu clave de licencia. Puedes obtén una prueba gratuita de 45 días de la página del producto:

using Xceed.PdfLibrary.NET;

Licenser.LicenseKey = "YOUR-LICENSE-KEY-HERE";

Eso es todo. Sin instalador, sin registro COM, sin prerrequisitos de tiempo de ejecución más allá del propio .NET.

1. Crear un PDF desde cero en C#

Esta es la característica a la que la mayoría de los desarrolladores recurren primero. Aquí te mostramos cómo Crear PDF C# documentos con Xceed:

using var doc = PdfDocument.Create("output/hello.pdf");

var page = doc.Pages[0];
var helvetica = doc.Fonts.GetStandardFont(StandardFontType.Helvetica);
var titleStyle = TextStyle.WithFont(helvetica, 24)
                          .SetBrush(new SolidColorBrush(Color.DarkBlue));
var bodyStyle = TextStyle.WithFont(helvetica, 12);

// Title positioned explicitly, then body text below
page.AddText("Xceed PDF Library for .NET 2.0",
             new Rectangle(50, 50, 500, 40),
             titleStyle);

page.AddText(
    "This document was generated entirely in C# using Xceed PdfLibrary " +
    "for .NET. No Adobe Acrobat, no Interop, no external processes — " +
    "just a NuGet package and a few lines of code.",
    new Rectangle(50, 110, 500, 80),
    bodyStyle);

// Add a second page
var page2 = doc.Pages.Add();
page2.AddText("Second Page",
              new Rectangle(50, 50, 500, 40),
              titleStyle);

doc.Save();

PdfDocument.Create te da un documento con una página en blanco. AddText coloca contenido en coordenadas exactas usando un Rectangle (x, y, ancho, alto), por lo que controlas la disposición con precisión. La API utiliza objetos de estilo inmutables: creas un TextStyle una vez y lo reutilizas en todo tu documento. En consecuencia, tu código se mantiene legible incluso al generar informes complejos de varias páginas.

Cómo crear un PDF desde cero con la biblioteca Xceed PDF para .NET — Código de C#

2. Añadir campos de formulario interactivos

¿Necesitas PDFs con campos rellenables? La biblioteca admite cuadros de texto, casillas de verificación, cuadros combinados, cuadros de lista, botones de opción, campos de fecha, campos numéricos y campos de firma. Aquí te mostramos cómo crear un formulario de admisión sencillo:

using var doc = PdfDocument.Create("output/form.pdf");

var page = doc.Pages[0];
var helvetica = doc.Fonts.GetStandardFont(StandardFontType.Helvetica);
var labelStyle = TextStyle.WithFont(helvetica, 11);

page.AddText("Full Name:", new Point(50, 50), labelStyle);
var nameField = new TextBoxFormField("",
                                    new Rectangle(150, 45, 250, 22),
                                    labelStyle);
nameField.Name = "FullName";
page.FormFields.Add(nameField);

page.AddText("Subscribe to newsletter:", new Point(50, 90), labelStyle);
var checkBox = new CheckBoxFormField(false, new Rectangle(230, 87, 16, 16));
checkBox.Name = "Newsletter";
page.FormFields.Add(checkBox);

page.AddText("Country:", new Point(50, 130), labelStyle);
var countries = new List<ListItem>
{
    new ListItem("United States", "US"),
    new ListItem("Canada", "CA"),
    new ListItem("United Kingdom", "UK"),
    new ListItem("France", "FR"),
    new ListItem("Germany", "DE")
};
var combo = new ComboBoxFormField(countries, new Rectangle(150, 125, 180, 22));
combo.Name = "Country";
page.FormFields.Add(combo);

doc.Save();

Cada campo de formulario toma un Rectangle para posicionamiento y un TextStyle para apariencia. Como resultado, controlas el diseño exacto. Si posteriormente cargas este PDF, puedes leer los valores de los campos — lo que lo hace útil para flujos de trabajo de ida y vuelta donde los usuarios completan formularios y tu backend procesa las respuestas.

3. Crea marcadores y marcas de agua jerárquicos

La versión 2.0 rediseñó el sistema de marcadores con una clase dedicada BookmarkCollection. Ahora puedes crear jerarquías de marcadores padre-hijo, darles estilo con texto en negrita e itálica, e incluso establecer colores de título. Mientras tanto, las marcas de agua se aplican en todo el documento con una sola llamada:

using var doc = PdfDocument.Create("output/bookmarks.pdf");

var helvetica = doc.Fonts.GetStandardFont(StandardFontType.Helvetica);
var titleStyle = TextStyle.WithFont(helvetica, 20);

var page1 = doc.Pages[0];
page1.AddParagraph("Chapter 1: Introduction",
                   titleStyle,
                   new ParagraphStyle(ParagraphHorizontalAlignment.Left));

var page2 = doc.Pages.Add();
page2.AddParagraph("Chapter 2: Getting Started",
                   titleStyle,
                   new ParagraphStyle(ParagraphHorizontalAlignment.Left));

var page3 = doc.Pages.Add();
page3.AddParagraph("Chapter 3: Advanced Topics",
                   titleStyle,
                   new ParagraphStyle(ParagraphHorizontalAlignment.Left));

// Hierarchical bookmarks (TargetPage is a zero-based page index)
var bk1 = new Bookmark("Introduction") { TargetPage = 0, IsBold = true };
var bk2 = new Bookmark("Getting Started") { TargetPage = 1, IsBold = true };
var bk3 = new Bookmark("Advanced Topics") { TargetPage = 2, IsBold = true };

// Nest a child bookmark
var bk3Child = new Bookmark("Digital Signatures") { TargetPage = 2 };
bk3.Children.Add(bk3Child);

doc.Bookmarks.Add(bk1);
doc.Bookmarks.Add(bk2);
doc.Bookmarks.Add(bk3);

// Watermark applied to all pages
var watermarkStyle = TextStyle.WithFont(helvetica, 48)
                              .SetBrush(new SolidColorBrush(new Color(200, 200, 200)))
                              .SetRotationAngle(45);
doc.Watermarks.Add(new Watermark("DRAFT", watermarkStyle));

doc.Save();

Los marcadores y las marcas de agua son importantes para cualquier documento de más de un par de páginas. Específicamente, los marcadores brindan a los lectores un panel de navegación en su visor de PDF, mientras que las marcas de agua comunican el estado del documento sin editar el contenido real.

4. Extraer texto y metadatos de PDF existentes

Cargar y leer archivos PDF es igual de sencillo. Puedes extraer texto de cada página, leer los valores de los campos del formulario, acceder a los árboles de marcadores y recuperar metadatos del documento:

using var doc = PdfDocument.Load("output/hello.pdf");

for (int i = 0; i < doc.Pages.Count; i++)
{
    string? text = doc.Pages[i].Text;
    Console.WriteLine($"--- Page {i + 1} ---");
    Console.WriteLine(text?.Trim() ?? "(empty)");
}

Console.WriteLine($"Total pages: {doc.Pages.Count}");

Para una extracción más específica, usa GetTextFromArea con un objeto Rectangle para extraer texto de una región particular de la página. Adicionalmente, la colección Words te proporciona objetos de palabras individuales con sus cuadros delimitadores, lo cual es útil para crear índices de búsqueda o analizar diseños de documentos.

5. Dividir y fusionar documentos

La versión 2.0 agregó opciones flexibles de división. Puedes extraer una página individual, un rango específico, o dividir cada página en su propio archivo:

using var doc = PdfDocument.Load("output/bookmarks.pdf");

// Extract page 2 (index 1) to its own file
doc.Split(SplitByPageOptions.ToPath(1, "output/chapter2-only.pdf"));

La fusión funciona en la otra dirección: combina múltiples instancias de PdfDocument en una usando MergeOptions. También puedes dividir por marcadores con SplitByBookmarkOptions, de modo que un documento organizado en capítulos se pueda separar automáticamente en cada límite de capítulo. Por lo tanto, los flujos de trabajo de procesamiento por lotes se vuelven más sencillos de construir.

6. Firmas digitales y certificación

Esta es la función destacada de la versión 2.0. Ahora puedes firmar documentos PDF con certificados PFX, validar firmas existentes y certificar documentos para prevenir modificaciones posteriores. La librería soporta algoritmos de digestión SHA-256, SHA-384 y SHA-512.

Firmar bloquea el documento en ese momento — cualquier modificación posterior invalida la firma, exactamente como lo requiere la especificación de PDF. Para flujos de trabajo dirigidos por el cumplimiento (contratos, presentaciones legales, registros médicos), esta característica por sí sola justifica la actualización desde la versión 1.0.

7. Imágenes, hipervínculos y dibujos

Más allá de texto y formularios, puedes insertar imágenes desde rutas de archivo o flujos, añadir hipervínculos cliqueables a regiones específicas y dibujar formas en el lienzo Graphics de una página. El objeto Canvas soporta líneas, rectángulos y colocación de imágenes con control preciso de coordenadas. Dado que el sistema de coordenadas utiliza puntos (1/72 pulgada), obtienes un posicionamiento preciso para impresión.

Comparación con otras bibliotecas de PDF de C#

El panorama de PDF en .NET tiene muchas opciones. Aquí hay una comparación honesta:

Característica Xceed PDF Library iText 7 QuestPDF PDFsharp IronPDF
Crear PDFs a partir de código Sí (a través de HTML)
Cargar y editar PDFs existentes No Limitado
Campos de formulario (lectura/escritura) No No Limitado
Firmas digitales Sí (v2.0) No No
Extracción de texto No No
Dividir y fusionar No
Multiplataforma Parcial
Licencia Comercial ($850) AGPL o $15K+/año MIT (<$1M) MIT $749+
Tamaño del paquete NuGet ~940 KB ~30 MB+ ~2 MB ~4 MB ~50 MB+

iText 7 es la opción con más funciones, pero su licencia AGPL implica que debes hacer que tu aplicación sea de código abierto —o pagar más de $15,000 al año por una licencia comercial—. Para muchos equipos, eso es inaceptable.

QuestPDF Se destaca por crear documentos hermosos gracias a su API intuitiva, y es gratuito si los ingresos no superan $1M. Sin embargo, solo puede generar archivos PDF nuevos. No puede cargar documentos existentes, leer campos de formulario, extraer texto ni agregar firmas.

PDFsharp es gratuito y de código abierto, pero carece de soporte para campos de formulario, firmas digitales y comportamiento confiable entre plataformas. De manera similar, sus capacidades de extracción de texto son mínimas.

IronPDF adopta un enfoque HTML a PDF con un motor Chromium, que produce una salida pixel-perfect pero incluye un paquete de ~50 MB. En contraste, el paquete de Xceed es inferior a 1 MB porque trabaja directamente con la especificación PDF en lugar de empaquetar un motor de navegador.

Xceed's Librería PDF .NET se sitúa en un punto medio muy práctico: gestiona todo el ciclo de vida (creación, edición, firma y extracción) por un costo único de $849.95. Sin suscripciones recurrentes, sin complicaciones de la AGPL. Para empresas con ingresos inferiores a $1M, una licencia para pequeñas empresas reduce ese costo a $659.95.

Cuándo NO usar Xceed PDF Library

La honestidad es importante. Aquí hay casos en los que una herramienta diferente podría servirte mejor:

  • Renderizado de HTML a PDFSi tus PDF son básicamente páginas web con estilo, un motor basado en HTML como IronPDF o Puppeteer será más rápido para desarrollar. Xceed funciona a nivel de primitivas de PDF (texto, rectángulos, coordenadas), no a nivel de CSS.
  • Diseño de documentos de alta fidelidadLa API de diseño fluido de QuestPDF se adapta mejor a las plantillas de facturas o informes con diseño exacto (pixel-perfect) en las que se desea un diseño declarativo y basado en componentes.
  • Requisito de código abierto y gratuito: Si tu proyecto exige una licencia MIT/Apache, PDFsharp o QuestPDF son tus mejores opciones. Xceed es un producto comercial.

Elige la herramienta que se ajuste a tus necesidades reales, no la que tenga más funciones sobre el papel.

Ejecutando el proyecto de demostración en .NET 10

Cada fragmento de código en este artículo proviene de un proyecto de demostración funcional. Puedes encontrarlo en Carpeta XceedPdfDemo junto a este artículo. El proyecto apunta a .NET 10 y compila sin errores.

Para ejecutarlo tú mismo:

  • Clona el proyecto y ábrelo en Visual Studio 2022 o Rider
  • Inserta tu clave de licencia en Program.cs (obtén una prueba gratuita de 45 días)
  • Corre con dotnet run
  • Revisa la carpeta output/ para los PDFs generados

La demostración cubre los siete escenarios: creación de documentos, campos de formulario, marcadores con marcas de agua, extracción de texto y división de documentos.

Prueba Xceed PDF Library para .NET

Crea, edita, firma y extrae archivos PDF desde C# puro, ya sea en Windows, macOS o Linux. Un solo paquete NuGet, sin dependencias externas.

Descargar prueba gratuita Ver en NuGet

¿Qué hay de nuevo en la versión 2.0?

El lanzamiento de marzo de 2026 trajo cambios significativos a la biblioteca. Porque la versión 2.0 eliminó la dependencia de Xceed.Drawing.NET.dll, los colores ahora provienen directamente del espacio de nombres Xceed.PdfLibrary. Además, las propiedades de PageSettings se volvieron inmutables; en lugar de asignación directa, se utilizan métodos de asignación como SetHeight y SetWidth.

Novedades clave en la 2.0:

  • Firmas digitales y certificación — firmar con PFX, validar firmas existentes, certificar documentos
  • Inserción de imagen — agregar imágenes desde transmisiones o rutas de archivos a través de la API de Canvas
  • Marcadores jerárquicos Relaciones padre-hijo con estilo (negrita, cursiva, color)
  • Manipulación de página — insertar en índices específicos, reordenar con mover, eliminar páginas
  • División de documentos — dividir por rangos de páginas o por estructura de marcadores
  • Soporte para texto RTL — dirección de texto de derecha a izquierda para árabe y hebreo
  • Modos de incrustación de fuentes — Simple para idiomas occidentales (archivos más pequeños), Completo para soporte CJK

Estos son cambios que rompen la compatibilidad desde la versión 1.0. Si estás actualizando, revisa los notas de la versión cuidadosamente: los nombres de las propiedades como ColorDeTrazo (ahora Color) y AnchoDeTrazo (ahora Grosor) en los objetos Pen han cambiado.

Preguntas más frecuentes

¿El paquete .NET de la biblioteca Xceed PDF funciona en Linux y macOS?

Sí. El Librería PDF .NET El paquete tiene como objetivo .NET 5+ sin dependencias específicas de Windows. Se ejecuta en cualquier plataforma que admita .NET: Windows, macOS y Linux. Puedes usarlo en aplicaciones web ASP.NET Core, Azure Functions, contenedores Docker y cualquier otro host .NET.

¿Puedo crear archivos PDF en C# sin tener instalado Adobe Acrobat?

Claro que sí. Puedes Crear PDF C# archivos escribiendo la especificación PDF directamente, sin Adobe Acrobat, sin Office Interop, sin procesos externos. Solo necesitas el paquete NuGet y un runtime de .NET. Esto lo hace ideal para la generación del lado del servidor donde la instalación de software de escritorio no es una opción.

¿Cómo maneja esta biblioteca PDF C# las firmas digitales?

La versión 2.0 agregó soporte completo para firmas digitales. Puedes firmar documentos usando certificados PFX con algoritmos SHA-256, SHA-384 o SHA-512. La biblioteca también valida firmas existentes y soporta la certificación de documentos, lo cual previene modificaciones posteriores a la firma. Para flujos de trabajo de cumplimiento, puedes controlar qué campos del formulario permanecen editables después de una firma.

¿Cuál es la diferencia entre Xceed PDF Library y Xceed Words for .NET?

Words for .NET crea y edita documentos de Microsoft Word (.docx). Biblioteca PDF para .NET crea y edita documentos PDF. Ofrecen diferentes formatos, pero puedes adquirir ambos por $100 durante el oferta promocional actual. Si tu flujo de trabajo implica generar documentos de Word y luego convertirlos a PDF, es posible que desees ambos.

¿Hay una versión de prueba gratuita de la biblioteca PDF Xceed C#?

Sí. Xceed ofrece una prueba gratuita de 45 días con funcionalidad completa. La biblioteca compila sin clave de licencia, pero necesitas una para Crear PDF C# documentos en tiempo de ejecución. Tras el período de prueba, una licencia estándar cuesta $849.95 (pago único, sin suscripción). Las pequeñas empresas con ingresos inferiores a $1M tienen derecho a una licencia por $659.95.

¿Puedo extraer datos de texto y campos de formulario de PDFs existentes?

Sí. Cargue cualquier PDF con PdfDocument.Load, luego acceda a la propiedad Text de cada página para obtener el contenido de texto completo o GetTextFromArea para la extracción basada en regiones. Los valores de los campos de formulario están disponibles a través de la colección FormFields; puede leer TextBoxFormField.Text, CheckBoxFormField.IsChecked y otras propiedades con tipo. Además, la colección Words proporciona objetos de palabras individuales con datos posicionales.

Echa un vistazo a la biblioteca de palabras y PDF de Xceed paquete