TPdfLifecycleActionPolicy = (lapDisabled, lapManual, lapAutomatic);
TPdfDocumentLifecycleAction = (dlaJavaScript, dlaOpen, dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint, dlaDidPrint);
TPdfPageLifecycleAction = (plaOpen, plaClose);
property LifecycleActionPolicy: TPdfLifecycleActionPolicy; // default lapAutomatic
lapDisabled는 자동 실행과 명시적 실행을 모두 막습니다
lapManual은 두 명시적 실행 메서드는 허용하면서 자동 액션은 억제합니다
lapAutomatic은 호환되는 자동 문서 JavaScript, 문서 열기·닫기, 페이지 열기·닫기 동작을 유지하면서 명시적 실행도 허용합니다
자동 모드는 저장이나 인쇄 연산을 감싸지 않습니다. 내부 스냅샷과 변환 저장이 뜻밖에 문서 스크립트를 실행하면 안 되기 때문입니다. 호스트가 통제하는 워크플로 경계에서 명시적 문서 메서드를 호출하세요
function ExecuteDocumentLifecycleAction(Action: TPdfDocumentLifecycleAction; out ErrorMessage: string): Boolean;
dlaJavaScript는 문서 수준 JavaScript 이름 트리 액션을 실행하고 dlaOpen은 카탈로그 open 액션을 실행합니다
dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint, dlaDidPrint는 해당하는 문서 추가 액션을 디스패치합니다
정책이 실행을 막거나 폼 작성 환경을 사용할 수 없거나 콜백이 예외를 일으키면 이 메서드는 비어 있지 않은 ErrorMessage와 함께 False를 반환합니다
function ExecutePageLifecycleAction(PageNumber: Integer; Action: TPdfPageLifecycleAction; out ErrorMessage: string): Boolean;
PageNumber는 1 기반이며 활성 문서의 페이지를 가리켜야 합니다
현재 페이지는 로드된 네이티브 핸들을 재사용하고, 다른 페이지는 임시로 열어 폼 환경에 등록하고, 디스패치하고, 등록을 해제하고, TPdf.PageNumber를 바꾸지 않은 채 닫습니다
로드, 등록, 액션, 정리, 닫기 실패는 반환값과 ErrorMessage로 격리됩니다
var
ErrorMessage: string;
begin
Pdf.LifecycleActionPolicy := lapManual;
if not Pdf.ExecuteDocumentLifecycleAction(dlaWillSave, ErrorMessage) then
raise Exception.Create(ErrorMessage);
try
Pdf.SaveAs(TargetFileName);
finally
Pdf.ExecuteDocumentLifecycleAction(dlaDidSave, ErrorMessage);
end;
end;
라이프사이클 액션은 문서 JavaScript, named action, URI 콜백, TPdf에 설정된 다른 호스트 서비스를 호출할 수 있습니다
액션을 절대 실행하면 안 되는 신뢰할 수 없는 문서에는 lapDisabled를, 애플리케이션이 명시적 승인 경계를 필요로 할 때는 lapManual을 사용하세요