Cuarentena de object streams

Un contenedor /Type /ObjStm corrupto ya no desaparece en silencio: la pasada type-2 lo pone en cuarentena con un motivo, una línea de diagnóstico y los números de objetos miembros que dejó sin resolver, mientras que cada contenedor independiente sigue cargándose y la carga del documento en sí se completa igualmente

Motivos de cuarentena

THPDFObjStmQuarantineReason distingue osqrNotAStream, osqrBadDictionary, osqrBadHeader (/N o /First inválidos), osqrBadStreamSize, osqrDecryptFailed, osqrDecompressFailed, osqrFirstOutOfRange, osqrHeaderUnparsable, osqrContainerException y el motivo a nivel de miembro osqrMemberUnparsable para cuerpos que no se dejan parsear de un contenedor decodificado con éxito, sin afectar a sus hermanos

Diagnóstico

GetLoadedQuarantinedObjStmCount y GetLoadedQuarantinedObjStmInfo devuelven cada registro con el número del objeto contenedor, el motivo, el texto de diagnóstico y los números de miembros sin resolver; los registros se acumulan a lo largo de los reintentos de recuperación de una misma carga (deduplicados por contenedor) y solo se limpian en la entrada de la siguiente carga