Preflight 플러그인 및 XML MRR
pfXML는 내장 검사, 경고, 힌트, 안정적인 규칙 ID, 사양 참조, 객체, 페이지 또는 바이트 위치를 버전 지정된 urn:hotpdf:preflight:mrr:1 어휘로 직렬화합니다
CreatePreflightMRR는 특징 추출 및 사용자 지정 검증 규칙을 위한 신뢰된 in-process 플러그인을 추가하고, ValidatePDFWithPluginBundle는 해당 규칙을 기존 THPDFValidationPolicy와 결합합니다
제한된 플러그인 등록
function EvaluateVendorRules(
const Context: THPDFPreflightPluginContext;
out PluginResult: THPDFPreflightPluginResult;
out ErrorMessage: AnsiString): Boolean;
begin
SetLength(PluginResult.Findings, 1);
PluginResult.Findings[0] := THPDFPreflightPluginFinding.Create(
'vendor.metadata.required', 'Vendor metadata is present', True, ppsError);
PluginResult.Findings[0].Scope := 'metadata';
PluginResult.Findings[0].Path := '/Vendor';
ErrorMessage := '';
Result := True;
end;
Limits := THPDFPreflightPluginLimits.Default;
SetLength(Plugins, 1);
Plugins[0] := THPDFPreflightPluginDescriptor.Create(
'vendor-policy', '1.0', [ppcValidationRules], EvaluateVendorRules);
XML := PDF.CreatePreflightMRR('Input.pdf', '', Plugins, Limits);
결정론과 신뢰 경계
HotPDF는 고유한 ASCII 플러그인 ID와 ABI 버전 1을 검증하고, 안정적인 ID 순서로 플러그인을 실행하며, 반환된 특징과 발견 항목을 정렬하고, 보고서에서 타이밍 지터를 생략하고, XML 값을 이스케이프하며, 선언되지 않은 기능이나 잘못된 규칙 ID를 거부합니다
제한은 플러그인 개수, 특징 개수, 발견 항목 개수, 총 문자열 바이트, XML 출력 바이트, 플러그인별 경과 시간, 총 경과 시간을 한정합니다. 거부된 플러그인은 결정적 실행 발견 항목에 기여하며 공유 특징, 발견 항목 또는 문자열 예산을 소비하지 않습니다
플러그인은 호출자 프로세스 내부에서 실행되며 소스 경로, 암호, 기본 텍스트 보고서, 정책 이름, 제한, 취소 토큰을 수신하므로 신뢰된 플러그인 코드만 등록해야 합니다
경과 제한은 평가자가 반환된 후에 검사됩니다. in-process 콜백을 안전하게 선점할 수 없기 때문입니다. 오래 실행되는 평가자는 Context.CancellationToken을 폴링하고 신속히 반환해야 합니다
THotPDF.CreatePreflightMRR, THotPDF.ValidatePDFWithPluginBundle, THPDFPreflightPluginDescriptor 및 THPDFPreflightPluginLimits를 참조하십시오