PDFium Delphi Component 文件

生命週期動作

元件: TPdf  ·  單元: PDFium
控制 PDF 文件與頁面生命週期動作的執行時機,包括明確的儲存與列印邊界

Types

TPdfLifecycleActionPolicy = (lapDisabled, lapManual, lapAutomatic);

TPdfDocumentLifecycleAction = (dlaJavaScript, dlaOpen, dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint, dlaDidPrint);

TPdfPageLifecycleAction = (plaOpen, plaClose);

Execution policy

property LifecycleActionPolicy: TPdfLifecycleActionPolicy; // default lapAutomatic

lapDisabled 同時阻擋自動與明確的生命週期動作執行

lapManual 抑制自動動作,但允許兩個明確的執行方法

lapAutomatic 保留相容的自動文件 JavaScript、文件開啟與關閉、頁面開啟與關閉行為,同時仍允許明確執行

自動模式不會包裝儲存或列印作業,因為內部快照與轉換儲存不應意外執行文件指令碼;請在主機控制的工作流程邊界呼叫明確的文件方法

Document actions

function ExecuteDocumentLifecycleAction(Action: TPdfDocumentLifecycleAction; out ErrorMessage: string): Boolean;

dlaJavaScript 執行文件層級的 JavaScript 名稱樹動作,dlaOpen 執行目錄的開啟動作

dlaWillClose、dlaWillSave、dlaDidSave、dlaWillPrint 與 dlaDidPrint 會分派對應的文件附加動作

當政策阻擋執行、表單填寫環境無法使用,或回呼擲出例外時,方法會傳回 False 並附上非空的 ErrorMessage

Page actions

function ExecutePageLifecycleAction(PageNumber: Integer; Action: TPdfPageLifecycleAction; out ErrorMessage: string): Boolean;

PageNumber 以 1 為基底,必須識別作用中文件內的某一頁

目前頁面會重用其已載入的原生控制代碼;其他頁面則會被暫時開啟、向表單環境註冊、分派、取消註冊並關閉,且不會改變 TPdf.PageNumber

載入、註冊、動作、清理與關閉的失敗都會隔離到傳回值與 ErrorMessage 中

Save workflow example

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;

Security

生命週期動作可以叫用文件 JavaScript、具名動作、URI 回呼,以及設定在 TPdf 上的其他主機服務

對絕不可執行動作的不受信任文件使用 lapDisabled;當應用程式需要明確的核准邊界時使用 lapManual

See Also

表單主機回呼, JavaScriptActions, PerformNamedAction