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 la cabecera de 128 bytes, el tamaño de archivo declarado, la firma acsp, el número de componentes del espacio de color, el recuento acotado 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 en bruto de cuatro bytes de versión y espacio de color, los valores visibles, los recuentos de componentes y 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
Las firmas GRAY, RGB, CMYK y de 2CLR a FCLR son reconocidas por el inspector general; los validadores específicos de formato pueden imponer una política de colores de proceso más estrecha
PdfIccProfileDescriptionMatches comprueba el valor desc de v2 o cada registro de configuración regional acotado en un profileDescriptionTag mluc de v4
| Límite | Predeterminado | Propósito |
|---|---|---|
MaxProfileBytes | 64 MiB | Detiene el análisis y el cálculo de hash de perfiles demasiado grandes |
MaxTagCount | 4096 | Acota el recorrido de la tabla de etiquetas |
TPdfIccProfileInfo.IsValid es True solo cuando el conjunto de problemas está vacío