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, üst veriyi açığa çıkarmadan önce 128 baytlık başlığı, bildirilen dosya boyutunu, acsp imzasını, renk uzayı bileşen sayısını, sınırlı tag sayısını, tag tablosu kapsamını ve her tag veri aralığını doğrular
Sonuç; ham dört baytlık sürüm ve renk uzayı imzalarını, görüntüleme değerlerini, bileşen ve tag sayılarını, profil ID'sini, dosyanın tamamının MD5'ini, SHA-256'yı, aygıt sınıfını, PCS'yi ve ilk geçerli profil açıklamasını içerir
GRAY, RGB, CMYK ve 2CLR ile FCLR arasındaki imzaları genel inceleyici tanır; biçime özgü doğrulayıcılar daha dar bir proses rengi ilkesi uygulayabilir
PdfIccProfileDescriptionMatches, v2 desc değerini ya da bir v4 mluc profileDescriptionTag içindeki her sınırlı yerel ayar kaydını denetler
| Limit | Default | Purpose |
|---|---|---|
MaxProfileBytes | 64 MiB | Aşırı büyük profillerin ayrıştırılmasını ve hash'lenmesini durdurur |
MaxTagCount | 4096 | Tag tablosu geçişini sınırlar |
TPdfIccProfileInfo.IsValid, yalnızca sorun kümesi boşken True olur