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
-
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.
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 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 se guardan las revisiones de PDF en C#?
Puede guardar revisiones de PDF en C# utilizando el método SaveAsRevision de IronPDF. Simplemente cargue su documento PDF y llame a pdf.SaveAsRevision('revision1.pdf') para crear una versión guardada que rastrea todas las modificaciones hechas al documento.
¿Para qué sirve el seguimiento del historial de revisiones de PDF?
La función de historial de revisiones de IronPDF permite a los desarrolladores realizar un seguimiento de los cambios en los documentos a lo largo del tiempo, lo que permite flujos de trabajo de colaboración en los que se puede volver a versiones anteriores mediante el método GetRevision. Esto es esencial para mantener registros de auditoría en las aplicaciones empresariales.
¿Cómo habilito el seguimiento de cambios para las grabaciones incrementales?
Para activar el seguimiento de cambios en IronPDF, establezca la opción TrackChanges en true y utilice el parámetro ChangeTrackingModes.EnableChangeTracking. Esto preserva todas las modificaciones del documento como capas separadas, permitiendo la navegación a través del historial completo del documento.
¿Puedo firmar un PDF y mantener su historial de revisiones?
Sí, IronPDF permite firmar documentos PDF manteniendo el historial de revisiones. Al firmar un documento, la firma se aplica a la iteración actual. Puede establecer permisos específicos, como sólo rellenar formularios, para evitar que la firma quede invalidada por futuras ediciones.
¿Cómo puedo recuperar versiones anteriores de PDF?
IronPDF proporciona el método GetRevision para recuperar versiones anteriores de un documento PDF. También puede utilizar la propiedad RevisionCount para determinar cuántas revisiones existen en el historial del documento.
¿Qué ocurre con las firmas cuando guardo una nueva revisión?
Cuando se utiliza el método SaveAsRevision de IronPDF después de firmar un documento, la firma sigue siendo válida para esa revisión específica. Sin embargo, cualquier edición que supere los permisos permitidos (como el rellenado de formularios) invalidará la firma, garantizando la integridad del documento.
¿Es visible el historial de revisiones en todos los visores de PDF?
Aunque IronPDF guarda un historial de revisiones completo similar al de los commits de Git, no todos los visores de PDF muestran esta información. Los visores básicos como Chrome solo muestran la versión actual, mientras que los visores avanzados como Adobe Acrobat pueden mostrar el historial de revisiones completo.
¿Cómo mejora el guardado incremental el rendimiento de los PDF?
La función de guardado incremental de IronPDF mejora el rendimiento de la exportación al guardar sólo los cambios en lugar de reescribir todo el documento. Puede optimizar el rendimiento estableciendo TrackChanges en false cuando no se necesite el seguimiento de revisiones, aunque esto debe activarse para los guardados incrementales.

