¿Por qué Majorsilence.Pdf?
No faltan librerías PDF para .NET. Aquí tienes una mirada clara sobre dónde encaja Majorsilence.Pdf, en qué se destaca y cuándo deberías elegir otra opción en su lugar.
Comparación de librerías
La siguiente tabla cubre las librerías PDF para .NET más utilizadas. Toda la información se basa en documentación disponible públicamente a mediados de 2026.
| Librería | Licencia | Dependencias | Tamaño del paquete | Modelo de API | Compatibilidad con .NET |
|---|---|---|---|---|---|
| Majorsilence.Pdf | MIT / Apache / BSD | Cero | ~75 KB | Canvas / fluida | NS2.0, .NET 8 & 10 |
| iText 7 | AGPL o comercial | Varias referencias NuGet | ~6 MB | Árbol de documento/elementos | .NET Standard 2.0+ |
| QuestPDF | Comunidad / comercial | SkiaSharp (nativa) | ~10 MB (incl. nativo) | Motor de diseño fluido | .NET 6+ |
| PdfSharp | MIT | Ninguna (núcleo) | ~400 KB | Dibujo estilo GDI | .NET 6+ (v0.1.x NS2.0) |
| Syncfusion PDF | Comercial / comunidad | Suite Syncfusion | ~4 MB | Árbol de documento/elementos | .NET Standard 2.0+ |
| Puppeteer / wkhtmltopdf | MIT (Puppeteer) | Requiere binario nativo | 50–150 MB (navegador) | Renderizado HTML → PDF | Cualquiera (vía CLI/puente) |
El nivel "Community" de QuestPDF es gratuito para organizaciones con ingresos anuales inferiores a $1 M USD; por encima de esa cifra se requiere una licencia paga. iText 7 requiere una licencia comercial para software de código cerrado. Syncfusion ofrece una licencia comunitaria gratuita para desarrolladores individuales y equipos pequeños.
Cuándo elegir Majorsilence.Pdf
- Cero dependencias en tiempo de ejecución es un requisito estricto: contenedores, AWS Lambda, compilación AOT o auditorías de seguridad rigurosas
- Necesitas licenciamiento MIT, Apache-2.0 o BSD-3-Clause sin complicaciones de AGPL
- Quieres una base de código pequeña y auditable, sin binarios nativos que gestionar
- Tu modelo mental es el dibujo por coordenadas de canvas: colocar texto en (x, y), dibujar líneas, incrustar imágenes
- Estás construyendo facturas, informes, certificados, recibos o exportaciones de datos donde tú controlas el diseño
- La compatibilidad con trimming o la compilación AOT importa (arranques en frío sin servidor, .NET embebido)
- Quieres distribuir a Windows, Linux y macOS sin preocuparte por librerías nativas de renderizado de fuentes
- Necesitas leer, editar o combinar PDFs complejos existentes con anotaciones, AcroForms o XFA
- Un organismo regulatorio exige certificación de conformidad PDF/A o PDF/UA
- Prefieres un modelo de diseño de flujo (párrafos que se ajustan automáticamente, tablas que se paginan) en lugar de coordenadas explícitas
- Necesitas conformación de escritura árabe de nivel de producción o renderizado de texto BiDi complejo
- Tu contenido ya vive en plantillas HTML/CSS y el renderizado de navegador con precisión de píxel es esencial
- Necesitas firmas digitales avanzadas con sello de tiempo (PKCS#12 con TSA) o validación a largo plazo (PAdES LTV)
Cuándo elegir otra opción
Estas son recomendaciones honestas. Elige la herramienta adecuada para tus restricciones.
Filosofía de diseño
La mayoría de las librerías PDF surgieron cuando .NET significaba Windows, NuGet era joven y "cero dependencias" no era un objetivo de diseño. Con el tiempo acumularon funciones, código nativo y complejidad de licencias.
Majorsilence.Pdf parte de restricciones diferentes:
Haz simple lo aburrido.
Generar un PDF (una factura, un certificado, una exportación de datos) debería tomar un puñado de líneas, no una página de código repetitivo. La superficie de la librería es intencionalmente pequeña: un documento, páginas, un lienzo. Colocas cosas. Guardas. Listo.
Cero debe significar cero.
No "cero en tiempo de ejecución si instalas el paquete de la plataforma" ni "cero a menos que uses fuentes". Un solo dotnet add package y nada más. Sin árbol transitivo que auditar, sin binarios nativos que incluir en tu imagen de contenedor, sin riesgo de AGPL que revisar con el equipo legal.
Código administrado puro.
Toda la librería es IL. Se recorta (trim) limpiamente, compila con antelación (AOT), y funciona igual en Windows, Linux, macOS, ARM y x64, sin selección condicional de activos nativos ni detección de funciones en tiempo de ejecución.