TPdfIccProfileLimits = record
MaxProfileBytes: Int64;
MaxTagCount: Integer;
class function Default: TPdfIccProfileLimits; static;
end;
TPdfIccProfileIssue = (ipiTooLarge, ipiHeaderTruncated, ipiSizeMismatch, ipiSignatureInvalid, ipiUnsupportedColorSpace, ipiTagCountExceeded, ipiTagTableTruncated, ipiTagDataOutOfBounds);
TPdfIccProfileIssues = set of TPdfIccProfileIssue;
TPdfIccProfileInfo = record
Issues: TPdfIccProfileIssues;
ByteSize: Int64;
DeclaredSize: Int64;
Version: string;
VersionBytes: AnsiString;
DeviceClass: string;
DataColorSpace: string;
DataColorSpaceSignature: AnsiString;
Pcs: string;
ComponentCount: Integer;
TagCount: Integer;
Md5: string;
Sha256: string;
ProfileId: string;
ProfileDescription: string;
function IsValid: Boolean;
end;
function InspectPdfIccProfile(const Data: TBytes): TPdfIccProfileInfo;
function InspectPdfIccProfile(const Data: TBytes;
const Limits: TPdfIccProfileLimits): TPdfIccProfileInfo;
function PdfIccProfileDescriptionMatches(const Data: TBytes;
const Expected: string): Boolean;
InspectPdfIccProfile valida el encabezado de 128 bytes, el tamaño de archivo declarado, la firma acsp, la cantidad de componentes del espacio de color, la cantidad acotada de etiquetas, la extensión de la tabla de etiquetas y cada rango de datos de etiqueta antes de exponer los metadatos
El resultado incluye las firmas sin procesar de cuatro bytes de versión y de espacio de color, los valores para mostrar, los conteos de componentes y de etiquetas, el ID del perfil, el MD5 del archivo completo, el SHA-256, la clase de dispositivo, el PCS y la primera descripción de perfil válida
El inspector general reconoce las firmas GRAY, RGB, CMYK y de 2CLR a FCLR; los validadores específicos de formato pueden imponer una política de colores de proceso más estricta
PdfIccProfileDescriptionMatches comprueba el valor desc de v2 o cada registro de configuración regional acotado en un profileDescriptionTag mluc de v4
| Límite | Valor predeterminado | Propósito |
|---|---|---|
MaxProfileBytes | 64 MiB | Detiene el análisis y el cálculo de hash de perfiles de tamaño excesivo |
MaxTagCount | 4096 | Acota el recorrido de la tabla de etiquetas |
TPdfIccProfileInfo.IsValid es True solo cuando el conjunto de problemas está vacío