THotPDF.RepairPDFA4 Method
결정론적 PDF/A-4 정규화를 적용하고 결과를 검증한 뒤, 완전한 안전 복구 집합을 커밋하거나 원래 문서 상태를 복원하는 제한된 객체 그래프 트랜잭션을 실행합니다
선언
function RepairPDFA4(
const Options: THPDFPDFA4RepairOptions;
out Report: THPDFPDFA4RepairReport;
out Issues: THPDFPDFA4ValidationIssues): boolean; overload;
function RepairPDFA4(
const Options: THPDFPDFA4RepairOptions;
out Report: THPDFPDFA4RepairReport;
out Issues: THPDFPDFA4ValidationIssues;
out Findings: THPDFComplianceFindings): boolean; overload;
커밋 계약
True는 트랜잭션이 수락되었음을 뜻합니다. 이미 규격에 맞는 문서의 변경 없음 케이스도 포함입니다False는 한도 초과, 검증 regression, 예외, 또는RequireFullConformance정책 미충족 후 트랜잭션이 롤백되었음을 뜻합니다Report.ValidationSucceeded는 커밋된 복구 이후의 권위 있는 full-conformance 결과입니다- 기본 옵션에서는 안전한 복구가 커밋되는 동안 관련 없는 안전하지 않은 검증 finding이
Issues와Findings에 그대로 명시적으로 남습니다
안전 복구 경계
이 메서드는 PDF 2.0 헤더 정규화, 없는 trailer ID 생성, 메타데이터 stream과 사전의 생성·복구, 네임스페이스 URI를 기준으로 한 PDF/A 식별 정규화(합법적인 RDF 접두어는 보존), 금지된 Catalog 항목 제거, 대체 프레젠테이션 구조 제거를 할 수 있습니다
UTF-8 XMP 복구는 금지된 packet-header 바이트와 인코딩 속성을 제거하고, 정규 PDF/A 식별 네임스페이스를 사용하고, part=4와 rev=2020을 기록하며, 올바른 base, engineering, associated-file 규격 속성을 선택합니다
복구 파이프라인은 페이지·주석 콘텐츠 stream, 폰트, 색 공간, 투명도, 이미지, 그래픽 연산자, 추출된 텍스트를 절대 다시 쓰지 않습니다
롤백과 감사 가능성
그래프 스냅샷은 사전 변경과 메타데이터 stream 바이트를 커버하므로, 롤백하면 원래 헤더, trailer 상태, 객체 그래프, XMP 페이로드, 페이지 콘텐츠가 복원됩니다
shared finding overload는 복구 작업, applied/unresolved/failed/rolled-back 상태, 복구 개수, 안정적인 규칙 식별자, 조항, 객체 경로, 객체 번호, 페이지 위치를 함께 돌려줍니다
객체, 변경, 보존된 이슈, 디코드 바이트, 콘텐츠 토큰 budget이 악성 파일이 복구나 검증 gate를 무한 작업으로 만들지 못하게 막습니다
예제
var
Options: THPDFPDFA4RepairOptions;
Report: THPDFPDFA4RepairReport;
Issues: THPDFPDFA4ValidationIssues;
begin
Options := THPDFPDFA4RepairOptions.Default;
Options.Profile := p4pAutomatic;
if not PDF.RepairPDFA4(Options, Report, Issues) then
raise Exception.Create('PDF/A-4 repair rolled back');
if not Report.ValidationSucceeded then
LogRemainingPDFA4Issues(Issues);
end;