property SignatureCount: Integer; // read only
SignatureCount возвращает число словарей подписи, присутствующих в документе сейчас. PDFium перечисляет поля подписей AcroForm (раздел 12.8 спецификации PDF 1.7) — каждая запись соответствует полю /Sig, чьё значение /V является словарём подписи (/Type /Sig) с hex-строкой /Contents и покрытием /ByteRange
Значение равно 0, когда Active равно False, когда PDF несёт лишь пустые заглушки подписей, которые ещё не заполнялись, или когда файл просто не подписан. Учтите, это count на весь документ: поля подписей визуально могут лежать на любой странице, но сам count глобальный
Через Signature[Index] достаётся одна запись TPdfSignature с сырыми байтами Content PKCS#7, строкой Encoding (adbe.pkcs7.detached, ETSI.CAdES.detached и т.д.), заданными подписантом строками Reason / Time и уровнем Permission. PDFium Delphi Component отдаёт только данные для инспекции; проверка подписи требует сторонней криптографической библиотеки, валидирующей blob PKCS#7 против диапазона байт документа
n валидирует состояние на момент подписания, не обязательно текущееSaveToFile, пока не добавляется новое поле; подписание внешними средствами с сохранением через FPDF_SaveAsCopy сохраняет существующие подписи байт в байтFormFieldCount, чтобы понять, есть ли в документе дополнительные интерактивные поля, не являющиеся подписями
var I: Integer;
var Sig: TPdfSignature;
for I := 0 to Pdf1.SignatureCount - 1 do
begin
Sig := Pdf1.Signature[I];
Memo1.Lines.Add(Format('Signer reason: %s, time: %s',
[Sig.Reason, Sig.Time]));
end;