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 o header de 128 bytes, o tamanho de arquivo declarado, a assinatura acsp, a contagem de componentes do espaço de cor, a contagem limitada de tags, a extensão da tabela de tags e cada intervalo de dados de tag antes de expor os metadados
O resultado inclui as assinaturas brutas de quatro bytes de versão e de espaço de cor, valores de exibição, contagens de componentes e de tags, ID do perfil, MD5 do arquivo completo, SHA-256, classe de dispositivo, PCS e a primeira descrição de perfil válida
As assinaturas GRAY, RGB, CMYK e de 2CLR a FCLR são reconhecidas pelo inspetor geral; validadores específicos de formato podem impor uma política mais estreita de cores de processo
PdfIccProfileDescriptionMatches verifica o valor desc da v2 ou cada registro de locale limitado em um profileDescriptionTag mluc da v4
| Limit | Default | Purpose |
|---|---|---|
MaxProfileBytes | 64 MiB | Interrompe a análise e o hashing de perfis oversized |
MaxTagCount | 4096 | Limita o percurso da tabela de tags |
TPdfIccProfileInfo.IsValid é True somente quando o conjunto de questões está vazio