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 waliduje 128-bajtowy nagłówek, zadeklarowany rozmiar pliku, podpis acsp, liczbę komponentów przestrzeni kolorów, ograniczoną liczbę tagów, zakres tablicy tagów i każdy zakres danych tagów, zanim ujawni metadane
Wynik obejmuje surowe czterobajtowe podpisy wersji i przestrzeni kolorów, wartości wyświetlane, liczniki komponentów i tagów, identyfikator profilu, MD5 całego pliku, SHA-256, klasę urządzenia, PCS i pierwszy poprawny opis profilu
Podpisy GRAY, RGB, CMYK oraz 2CLR do FCLR są rozpoznawane przez inspektor ogólny; walidatory właściwe dla formatów mogą narzucać węższą politykę kolorów procesowych
PdfIccProfileDescriptionMatches sprawdza wartość desc v2 albo każdy ograniczony rekord locale w v4 mluc profileDescriptionTag
| Limit | Default | Purpose |
|---|---|---|
MaxProfileBytes | 64 MiB | Przerywa parsowanie i skróty dla przewymiarowanych profili |
MaxTagCount | 4096 | Ogranicza przechodzenie tablicy tagów |
TPdfIccProfileInfo.IsValid ma wartość True tylko wtedy, gdy zbiór problemów jest pusty