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 validerar det 128 bytes stora huvudet, den deklarerade filstorleken, acsp-signaturen, komponentantalet för färgrymden, det avgränsade taggantalet, taggtabellens utsträckning och vart och ett av taggdataintervallen innan metadata exponeras
Resultatet innehåller råa fyra-bytes-version- och färgrymdssignaturer, visningsvärden, komponent- och taggantal, profil-ID, MD5 av hela filen, SHA-256, device class, PCS och den första giltiga profilbeskrivningen
Signaturerna GRAY, RGB, CMYK och 2CLR till FCLR känns igen av den allmänna inspektorn; formatspecifika validerare kan tillämpa en snävare policy för processfärger
PdfIccProfileDescriptionMatches kontrollerar v2 desc-värdet eller varenda avgränsad locale-post i en v4 mluc profileDescriptionTag
| Limit | Default | Purpose |
|---|---|---|
MaxProfileBytes | 64 MiB | Stoppar tolkning och hashning av överdimensionerade profiler |
MaxTagCount | 4096 | Begränsar genomlöpet av taggtabellen |
TPdfIccProfileInfo.IsValid är True endast när problemuppsättningen är tom