Firmar PDFs con C# para eIDAS QES y FNMT-RCM — Guía rápida
Esta guía cubre la firma electrónica de PDFs en C# desde la perspectiva práctica del desarrollador ibérico — cómo aplicar firma PAdES con certificado cualificado de la FNMT-RCM (o equivalente: AC Camerfirma, IZENPE), cómo añadir representación visual sobre la firma criptográfica, cómo controlar permisos del documento tras la firma, y cómo integrar campos de firma interactivos en flujos donde el firmante actúa desde un visor PDF. Para la profundidad regulatoria completa (niveles eIDAS, jerarquía PAdES-B/T/LT/LTV, HSM y QSCD, flujos FACe / Crea y Crece / TicketBAI) consulte el tutorial extenso Firma electrónica de PDF en C# para eIDAS QES, FNMT-RCM y flujos españoles.
"Firmar" puede significar cosas distintas según el flujo. Para los flujos regulados españoles — Crea y Crece B2B, FACe B2G, expedientes administrativos bajo Esquema Nacional de Interoperabilidad, factura cualificada bajo SII — firmar significa aplicar firma electrónica cualificada (QES eIDAS) con certificado cualificado en formato PAdES sobre el PDF visualizable. Para flujos menos regulados o internos, una firma electrónica avanzada (AES) con certificado X.509 puede ser suficiente. Para flujos de marketing o consentimiento informal, una imagen de firma sobre el PDF sin respaldo criptográfico es admisible pero no constituye firma electrónica en sentido jurídico eIDAS.
Cómo aplicar firma PAdES con certificado FNMT-RCM al PDF
El flujo más directo: cargar un PDF, crear una PdfSignature desde un certificado FNMT-RCM en formato .pfx o .p12, aplicar la firma, guardar:
:path=/static-assets/pdf/content-code-examples/how-to/signing/sign-pdf-with-certificate.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
En producción ibérica, la contraseña del certificado debe leerse de un almacén seguro (Azure Key Vault, AWS Secrets Manager, HashiCorp Vault, o solución homologada de la organización bajo ENS). Nunca incluya la contraseña en el control de versiones — la AEPD trata las claves privadas de firma como datos especialmente sensibles bajo LOPDGDD.
Cuando el certificado es cualificado (emitido por QTSP inscrito en la lista nacional: FNMT-RCM, AC Camerfirma, IZENPE, Firma Profesional, AC Abogacía) y la clave privada está protegida en QSCD (HSM cualificado Common Criteria EAL4+ o tarjeta criptográfica), la firma resultante es QES eIDAS — legalmente equivalente a firma manuscrita en toda la UE. Para integración con HSM corporativo vía PKCS#11, consulte la guía Firma con HSM.
Cómo añadir representación visual a la firma digital
Una firma electrónica criptográfica (PAdES) puede ser invisible — vive en la estructura interna del PDF sin marca visual — o visible, donde se renderiza adicionalmente una imagen (firma manuscrita escaneada, sello corporativo, bloque estilizado) en una posición específica de la página. La firma criptográfica subyacente es la misma; la representación visual es una capa adicional para la audiencia humana del documento.
:path=/static-assets/pdf/content-code-examples/how-to/signing/visual-signature.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
El sistema de coordenadas usa puntos (1/72 de pulgada) medidos desde la esquina inferior izquierda de la página. Para una página A4 ibérica (595 × 842 puntos), una firma de 200 × 80 colocada en la esquina inferior derecha con margen de 50 puntos requiere x = 595 − 200 − 50 = 345, y = 50.
Para Modelos AEAT y formularios FACe presentados telemáticamente, la representación visual habitualmente se omite — la AEAT y FACe procesan la firma criptográfica del PDF sin necesidad de marca visual humana. Para contratos B2B firmados por el cliente, sí conviene la marca visual para satisfacer la expectativa del firmante de "ver" su firma en el documento entregado.
Cómo controlar permisos del documento tras la firma
Tras la firma, el documento puede mantenerse total o parcialmente editable según el flujo. La enumeración SignaturePermissions de IronPDF controla qué cambios se admiten:
:path=/static-assets/pdf/content-code-examples/how-to/signing/signature-permissions.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
| Permiso | Cambios permitidos tras la firma |
|---|---|
NoChangesAllowed |
Documento bloqueado completamente. Cualquier modificación invalida la firma. |
FormFillingAllowed |
Sólo se pueden rellenar campos de formulario. No hay cambios de contenido. |
AdditionalSignaturesAndFormFillingAllowed |
Se permite rellenar formularios y añadir firmas adicionales. Patrón habitual en flujos multi-firma de expedientes administrativos. |
FormFillingAndAnnotationsAllowed |
Se permite rellenar formularios y añadir anotaciones. |
Para Modelos AEAT cumplimentados y firmados antes de presentación telemática, NoChangesAllowed es la elección típica — fija el contenido para que la AEAT reciba exactamente lo que el contribuyente firmó. Para expedientes administrativos del sector público con flujo multi-firma (técnico instructor → jefe de servicio → órgano superior), AdditionalSignaturesAndFormFillingAllowed permite que cada firmante añada la suya sin invalidar las anteriores.
El Iron Suite juega un papel crucial en nuestras operaciones. Estas son herramientas que aumentan la eficiencia en toda la empresa, incluyendo la creación de planos y la mejora en la gestión de inventario.
Cómo estampar una firma manuscrita sobre un PDF
Si su flujo sólo requiere una imagen de firma manuscrita (sin respaldo criptográfico — consentimiento informal, formulario interno no regulado), IronPDF permite estampar la imagen directamente sin generar firma electrónica:
:path=/static-assets/pdf/content-code-examples/how-to/signing/stamp-signature-image.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
⚠️ Importante en contexto ibérico: una imagen de firma manuscrita estampada sobre el PDF no constituye firma electrónica en sentido eIDAS — es meramente una representación gráfica. No aporta autenticidad criptográfica, no garantiza integridad, no permite detección de manipulación. Para flujos donde la firma del PDF debe tener valor jurídico vinculante en España (B2B regulado bajo Crea y Crece, B2G a FACe, expedientes administrativos), es obligatoria la firma PAdES con certificado X.509 — la imagen estampada puede coexistir como capa decorativa, pero la legalidad la aporta la firma criptográfica subyacente.
Cómo añadir un campo de firma interactivo
Para flujos donde el firmante actúa desde un visor PDF (Adobe Acrobat Reader, AutoFirma, FNMT-Ceres) — habitual cuando el firmante es un ciudadano usando su certificado FNMT-RCM o DNIe instalado localmente, no un sistema backend — el patrón es crear un campo de firma vacío en el PDF y dejar que el visor lo rellene con la firma del usuario:
:path=/static-assets/pdf/content-code-examples/how-to/signing/add-signature-field.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
Este patrón es el que usan los expedientes administrativos del sector público que se entregan al ciudadano para firma con su certificado cualificado — el organismo genera el documento con campo de firma vacío, el ciudadano lo descarga, lo abre con AutoFirma o equivalente, firma con su certificado, y lo presenta de vuelta a la sede electrónica.
Cómo recuperar el nombre del firmante de firmas verificadas
Para verificar y auditar las firmas existentes en un PDF — habitual antes de archivar un documento firmado o antes de añadir una nueva firma a un flujo multi-firma:
:path=/static-assets/pdf/content-code-examples/how-to/signing/get-signer-info.cs
// ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
' ¡ESTE FRAGMENTO DE CÓDIGO NO ESTÁ DISPONIBLE!
El campo Subject del certificado del firmante contiene la identidad legal: en certificados FNMT-RCM de persona física el formato típico es CN=NOMBRE APELLIDO1 APELLIDO2 - NIF, en certificados de Representante de Persona Jurídica es CN=NOMBRE APELLIDO1 APELLIDO2 - NIF, OID.2.5.4.97=VATES-CIFENTIDAD, O=RAZÓN SOCIAL, y en certificados de Sello Electrónico de Entidad es CN=RAZÓN SOCIAL, OID.2.5.4.97=VATES-CIFENTIDAD. Extraer estos componentes permite poblar el rastro de auditoría del expediente con los datos legales del firmante (NIF, razón social) más allá del simple nombre.
Próximos pasos
Esta guía cubre los seis patrones de firma PDF más frecuentes en flujos ibéricos. Para la profundidad regulatoria completa (tres niveles eIDAS, jerarquía PAdES-B/T/LT/LTV, integración HSM/QSCD, flujos FACe/Crea y Crece/TicketBAI, lista nacional de QTSPs, validación contra la EU LOTL) consulte el tutorial extenso Firma electrónica de PDF en C# para eIDAS QES, FNMT-RCM y flujos españoles.
Para casos con clave privada protegida en HSM corporativo (Thales Luna, Entrust nShield, Utimaco SecurityServer) o en servicio gestionado de prestador cualificado (FNMT-RCM ofrece firma centralizada con HSM gestionado), consulte la guía Firma con HSM vía PKCS#11. Para el archivado de los documentos firmados bajo plazos LGT (4-10 años efectivos) o bajo Esquema Nacional de Interoperabilidad (plazos indefinidos), consulte Archivado electrónico de facturas y documentos en C# con PDF/A para España — combina la firma PAdES-LTV con conversión a PDF/A para preservación de larga vida.
Descargue IronPDF para empezar con una versión de prueba gratuita de 30 días. La biblioteca incluye una licencia de desarrollo gratuita que permite evaluar la firma PAdES con certificado FNMT-RCM, los flujos multi-firma de expedientes administrativos, y la verificación de firmas antes de comprometerse con una licencia de producción.
Preguntas Frecuentes
¿Cómo firmo digitalmente un PDF utilizando un certificado en C#?
Con IronPDF, puede firmar digitalmente un PDF en una sola línea de código utilizando la clase PdfSignature. Basta con crear un nuevo objeto PdfSignature con el archivo de certificado (.pfx o .p12) y la contraseña y, a continuación, llamar al método SignPdfFile(). Por ejemplo: new IronPdf.Signing.PdfSignature("certificado.pfx", "contraseña").SignPdfFile("entrada.pdf"). Esto aplica una firma digital a prueba de manipulaciones utilizando su X509Certificate2 para garantizar la autenticidad del documento.
¿Qué tipos de firmas PDF son compatibles?
IronPDF admite tres tipos principales de firmas PDF: 1) Firmas digitales que utilizan certificados X509Certificate2 para la autenticación y a prueba de manipulaciones, 2) Sellos de firma visuales que añaden imágenes de firmas gráficas o manuscritas a los documentos, y 3) Campos de formulario de firma interactivos que permiten a los usuarios firmar electrónicamente los PDF. Cada tipo sirve para fines distintos en cuanto a la seguridad de los documentos y los requisitos del flujo de trabajo.
¿Qué formatos de certificado pueden utilizarse para la firma digital?
IronPDF admite los formatos de certificado digital más comunes, incluidos los archivos .pfx (Personal Information Exchange) y .p12. Estos archivos de certificado contienen tanto la clave pública como la clave privada necesarias para la firma digital. La clase PdfSignature de IronPDF puede trabajar con cualquier objeto X509Certificate2, lo que proporciona flexibilidad a la hora de cargar y gestionar los certificados de firma.
¿Puedo añadir una representación visual a mi firma digital?
Sí, IronPDF le permite añadir elementos visuales a sus firmas digitales. Puede incluir una representación gráfica, como una imagen de firma manuscrita, el logotipo de la empresa o un sello personalizado, junto a la firma criptográfica. Esto combina la seguridad de los certificados digitales con la confirmación visual, haciendo que los documentos firmados sean tanto seguros como profesionalmente presentables.
¿Cómo puedo crear un campo de firma interactivo para que los usuarios firmen electrónicamente?
IronPDF permite añadir campos de formulario de firma interactivos a documentos PDF. Estos campos permiten a los usuarios firmar documentos electrónicamente haciendo clic y dibujando su firma o cargando una imagen de firma. Esta función es perfecta para crear documentos que requieran recogida de firmas, como contratos o formularios que deban ser firmados por varias partes.
¿La firma de un PDF garantiza la integridad del documento?
Sí, cuando se firma digitalmente un PDF utilizando IronPDF con un X509Certificate2, se crea un sello a prueba de manipulaciones que garantiza la integridad del documento. La firma digital garantiza que el documento no ha sido alterado desde que se firmó. Cualquier modificación del PDF después de la firma invalidará la firma, alertando a los destinatarios de que el documento puede haber sido comprometido.

