Historial de Revisiones PDF para Auditoría Fiscal: VeriFactu, TicketBAI y LOPDGDD con IronPDF en C
IronPDF permite a los desarrolladores de C# realizar un seguimiento y gestionar los cambios de documentos PDF a lo largo del tiempo mediante el historial de revisiones. Guarda iteraciones de documentos con SaveAsRevision y recupera versiones anteriores con GetRevision para flujos de trabajo de aprobación y auditoría.
En España, el historial de revisiones de PDF tiene relevancia directa en tres marcos normativos:
- VeriFactu: el encadenamiento de registros de facturación mediante
huella encadenada(hash tamper-evident) exige una trazabilidad que el historial de revisiones PDF complementa en los flujos de auditoría de la AEAT. - TicketBAI: en el País Vasco, los registros de facturación firmados con XAdES por Bizkaia, Gipuzkoa y Araba crean una cadena de integridad que el guardado incremental de IronPDF respalda como mecanismo de no repudio.
- LOPDGDD: el derecho de rectificación y el derecho al olvido exigen que las enmiendas a documentos con datos personales queden debidamente registradas, con posibilidad de auditar qué versión del documento estaba en vigor en cada momento.
Inicio rápido: Guardar revisiones de PDF con IronPDF
Gestione y guarde revisiones de PDF en sus aplicaciones C#. Esta guía demuestra cómo guardar versiones de documentos con SaveAsRevision para rastrear y gestionar cambios en PDFs.
-
Instala IronPDF con el Administrador de Paquetes NuGet
PM > Install-Package IronPdf -
Copie y ejecute este fragmento de código.
var pdf = IronPdf.PdfDocument.FromFile("example.pdf"); pdf.SaveAsRevision("revision1.pdf"); -
Despliegue para probar en su entorno real
Comienza a usar IronPDF en tu proyecto hoy mismo con una prueba gratuita
as-heading:3(Flujo de trabajo mínimo (6 pasos))
- Descarga la biblioteca C# para guardar y editar el historial de revisiones de PDF con IronPDF
- Usa el método
SaveAsRevisionpara guardar versiones de PDF. - Recupera versiones de PDF usando el método
GetRevision. - Accede a la propiedad
RevisionCountpara el conteo de revisiones. - Llama al método
TrackChanges: ChangeTrackingModes.EnableChangeTrackingpara gestionar los metadatos de revisiones intermedias. - Guarda el PDF final usando
SaveAs.
El guardado incremental como mecanismo de evidencia para AEAT
El guardado incremental de PDF es el mecanismo técnico que hace que cada firma se aplique a un estado específico del documento, sin modificar las iteraciones anteriores. Este comportamiento es análogo a la huella encadenada de VeriFactu: cada iteración del documento referencia el estado anterior, creando una cadena de integridad verificable.
Para los ISVs que desarrollan software de facturación certificado bajo VeriFactu, este mecanismo proporciona evidencia adicional de que las facturas no fueron alteradas retroactivamente. IronPDF no es por sí mismo un sistema de facturación certificado VeriFactu: es un componente que se usa DENTRO de software de facturación certificado para generar los PDFs necesarios.
¿Cómo guardar y firmar una revisión en PDF?
En el siguiente ejemplo, abrimos un PDF, realizamos varias ediciones y lo firmamos antes de guardarlo. En cuanto a los permisos de firma, solo permitimos rellenar formularios como futuras ediciones; de lo contrario, la firma quedará invalidada.
Llamamos a SaveAsRevision para guardar la revisión en el historial y guardar el nuevo documento en el disco.
TrackChanges en falso. Esta opción debe establecerse como verdadera para utilizar la función de guardado incremental.:path=/static-assets/pdf/content-code-examples/how-to/signing-revision.cs
using IronPdf;
using IronPdf.Rendering;
// Import PDF and enable TrackChanges
PdfDocument pdf = PdfDocument.FromFile("annual_census.pdf", TrackChanges: ChangeTrackingModes.EnableChangeTracking);
// ... various edits ...
pdf.SignWithFile("/assets/IronSignature.p12", "password", null, IronPdf.Signing.SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed);
PdfDocument pdfWithRevision = pdf.SaveAsRevision();
pdfWithRevision.SaveAs("annual_census_2.pdf");
Imports IronPdf
Imports IronPdf.Rendering
' Import PDF and enable TrackChanges
Private pdf As PdfDocument = PdfDocument.FromFile("annual_census.pdf", TrackChanges:= ChangeTrackingModes.EnableChangeTracking)
' ... various edits ...
pdf.SignWithFile("/assets/IronSignature.p12", "password", Nothing, IronPdf.Signing.SignaturePermissions.AdditionalSignaturesAndFormFillingAllowed)
Dim pdfWithRevision As PdfDocument = pdf.SaveAsRevision()
pdfWithRevision.SaveAs("annual_census_2.pdf")
El parámetro ChangeTrackingModes.EnableChangeTracking es esencial para mantener un registro completo de auditoría. Cuando está activado, IronPDF conserva todas las modificaciones del documento como capas separadas, permitiendo navegar por el historial del documento. Esta función se integra con Seguridad y permisos de PDF para garantizar que solo los usuarios autorizados puedan acceder a revisiones específicas.
El guardado incremental y su relación con las firmas digitales
Mientras que algunos visores como Chrome solo muestran una versión, los archivos PDF pueden almacenar versiones anteriores del documento, similar al historial de commits de Git. Esto puede verse en visores avanzados como Adobe Acrobat. Entender este mecanismo es crucial al trabajar con PDFs firmados porque cada firma se aplica a un estado específico del documento.
El PDF puede tener firmas de iteraciones anteriores o versiones sin firmar. Un ejemplo del ciclo de vida de un documento con múltiples firmantes:
| Iteración del documento PDF | Certificado A | Certificado B | Certificado C | Certificado D |
|---|---|---|---|---|
| 0 (primer guardado) | ||||
| 1 | ||||
| 2 | ||||
| 3 | (sólo edición de campos de formulario) |
(sólo edición de campos de formulario) |
||
| 4 (sólo campos de formulario editados) | ||||
| 5 | (no se permiten más ediciones) |
(no se permiten más ediciones) |
(no se permiten más ediciones) |
En el ejemplo anterior, el documento pasa por los departamentos de una empresa hasta ser finalizado en la iteración 3. Las personas A y B firmaron con permiso 'Solo Edición de Campos de Formulario', permitiendo rellenar el formulario sin invalidar las firmas.
Este enfoque de guardado incremental es valioso para satisfacer los auditores de la AEAT y las inspecciones de haciendas forales (Bizkaia, Gipuzkoa, Araba) que necesitan verificar que los documentos no fueron modificados después de la firma.
¿Cómo volver a una revisión anterior?
Para retroceder a una revisión anterior de un PDF, use el método GetRevision. Esta funcionalidad es útil para recuperar el estado de un documento en un momento específico, por ejemplo para demostrar conformidad ante la AEPD en el marco de la LOPDGDD.
:path=/static-assets/pdf/content-code-examples/how-to/signing-revert-revision.cs
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("report.pdf");
int versions = pdf.RevisionCount; // total revisions
PdfDocument rolledBackPdf = pdf.GetRevision(2);
rolledBackPdf.SaveAs("report-draft.pdf");
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("report.pdf")
Private versions As Integer = pdf.RevisionCount ' total revisions
Private rolledBackPdf As PdfDocument = pdf.GetRevision(2)
rolledBackPdf.SaveAs("report-draft.pdf")
El método GetRevision crea una nueva instancia de documento PDF que contiene solo el contenido hasta el número de revisión especificado. Útil cuando:
- Es necesario comparar diferentes versiones de un documento
- Se ha invalidado una firma por cambios no autorizados
- Desea desviarse de una versión anterior para un flujo de trabajo de aprobación diferente
- Es necesario demostrar la conformidad mostrando el estado del documento en un momento específico ante inspectores de la AEAT o la AEPD
El retroceso no afecta al fichero PDF original, sino que crea una nueva instancia del documento.
Prácticas recomendadas para auditoría fiscal y LOPDGDD
-
Habilitar siempre el seguimiento de cambios: establezca
EnableChangeTrackingal abrir PDFs que requieren historial de revisiones para auditoría fiscal. -
Documentar su estrategia de revisión: mantenga documentación clara sobre cuándo y por qué se guardan las revisiones, especialmente en entornos multiusuario con acceso a datos de facturación.
-
Implementar controles de acceso: combine el historial de revisiones con Permisos y contraseñas de PDF para garantizar que solo usuarios autorizados puedan crear o acceder a revisiones específicas, cumpliendo el principio de minimización de acceso de la LOPDGDD.
-
Exportaciones periódicas: exporte periódicamente revisiones importantes a ficheros independientes para el archivo de larga duración exigido por la normativa fiscal (4 años para IVA, 6 años para el Impuesto de Sociedades).
- Probar la compatibilidad de firmas: verifique cómo interactúan los distintos permisos de firma con su flujo de revisión para evitar invalidaciones inesperadas en documentos destinados a la AEAT o las haciendas forales.
Para más información sobre la implementación de estas funciones, consulte la documentación completa de IronPDF o explore las opciones de licencia para sus necesidades empresariales.
Preguntas Frecuentes
¿Cómo ayuda el historial de revisiones de PDF a cumplir los requisitos de auditoría de la AEAT para VeriFactu?
El guardado incremental de IronPDF es análogo a la huella encadenada de VeriFactu: cada iteración del documento referencia el estado anterior mediante SaveAsRevision, creando una cadena de integridad verificable. Para ISVs que desarrollan software de facturación certificado bajo VeriFactu, este mecanismo proporciona evidencia adicional de que las facturas no fueron alteradas retroactivamente. IronPDF no es en sí mismo un sistema certificado VeriFactu: es un componente que se usa DENTRO del software de facturación certificado.
¿Cómo gestiona IronPDF el historial de revisiones para TicketBAI en el País Vasco?
Los registros TicketBAI firmados con XAdES en Bizkaia, Gipuzkoa y Araba crean una cadena de integridad de facturas. El guardado incremental de IronPDF complementa esta cadena: al usar SaveAsRevision con EnableChangeTracking, cada versión del PDF se preserva como capa separada, respaldando el mecanismo de no repudio que exigen las haciendas forales vascas.
¿Qué períodos de retención exige la normativa fiscal española para documentos PDF?
La normativa fiscal española establece 4 años de retención para facturas sujetas al IVA y 6 años para documentos del Impuesto de Sociedades. La LOPDGDD puede exigir períodos adicionales para documentos con datos personales. IronPDF permite exportar revisiones importantes a ficheros independientes para el archivo de larga duración con el método SaveAsRevision combinado con un almacenamiento sistemático.
¿Cómo demuestre ante la AEPD el estado de un documento en un momento específico bajo LOPDGDD?
Use el método GetRevision de IronPDF para recuperar el estado exacto del documento en la revisión correspondiente al período de relevancia. Esto permite demostrar ante inspectores de la AEAT o la AEPD qué versión del documento estaba en vigor en una fecha concreta, cumpliendo los requisitos de trazabilidad del derecho de rectificación de la LOPDGDD.
¿Cómo firmo un PDF con historial de revisiones para sistemas de facturación?
Abra el PDF, aplique las ediciones, llame a SaveAsRevision para preservar el estado previo a la firma, luego firme con los permisos adecuados (solo relleno de formularios para facturas en revisión, sin ediciones adicionales para la versión final). Cada firma se aplica al estado específico de la revisión, garantizando la integridad verificable por inspectores de hacienda.

