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 は、メタデータを公開する前に、128 バイトのヘッダー、宣言されたファイルサイズ、acsp シグネチャ、色空間コンポーネント数、上限付きタグ数、タグテーブル範囲、すべてのタグデータ範囲を検証します
結果には、生の 4 バイトのバージョンと色空間シグネチャ、表示値、コンポーネント数とタグ数、プロファイル ID、ファイル全体の MD5、SHA-256、デバイスクラス、PCS、最初の有効なプロファイル説明が含まれます
汎用インスペクターは GRAY、RGB、CMYK、および 2CLR から FCLR までのシグネチャを認識します。形式固有のバリデーターは、より狭いプロセスカラーポリシーを課す場合があります
PdfIccProfileDescriptionMatches は、v2 の desc 値、または v4 の mluc profileDescriptionTag に含まれるすべての上限付きロケールレコードを検査します
| 上限 | 既定値 | 目的 |
|---|---|---|
MaxProfileBytes | 64 MiB | 過大なプロファイルの解析とハッシュ化を停止します |
MaxTagCount | 4096 | タグテーブル走査を制限します |
TPdfIccProfileInfo.IsValid は問題セットが空のときにのみ True です