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 執行目錄的開啟動作
dlaWillClose、dlaWillSave、dlaDidSave、dlaWillPrint 與 dlaDidPrint 會分派對應的文件附加動作
當政策阻擋執行、表單填寫環境無法使用,或回呼擲出例外時,方法會傳回 False 並附上非空的 ErrorMessage
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、具名動作、URI 回呼,以及設定在 TPdf 上的其他主機服務
對絕不可執行動作的不受信任文件使用 lapDisabled;當應用程式需要明確的核准邊界時使用 lapManual