TPdfLifecycleActionPolicy = (lapDisabled, lapManual, lapAutomatic);
TPdfDocumentLifecycleAction = (dlaJavaScript, dlaOpen, dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint, dlaDidPrint);
TPdfPageLifecycleAction = (plaOpen, plaClose);
property LifecycleActionPolicy: TPdfLifecycleActionPolicy; // default lapAutomatic
lapDisabled は、自動と明示的の両方のライフサイクルアクション実行を阻止します
lapManual は自動アクションを抑制しつつ、2 つの明示的実行メソッドを許可します
lapAutomatic は、互換性のある自動のドキュメント JavaScript、ドキュメントのオープンとクローズ、ページのオープンとクローズの動作を保持しつつ、明示的な実行も許可します
自動モードは保存や印刷の操作をラップしません。内部スナップショットや変換保存が予期せずドキュメントスクリプトを実行してはならないためです。ホストが管理するワークフロー境界で、明示的なドキュメントメソッドを呼び出してください
function ExecuteDocumentLifecycleAction(Action: TPdfDocumentLifecycleAction; out ErrorMessage: string): Boolean;
dlaJavaScript はドキュメントレベルの JavaScript 名前ツリーアクションを実行し、dlaOpen はカタログのオープンアクションを実行します
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、名前付きアクション、URI コールバック、および TPdf に設定されたその他のホストサービスを呼び出せます
アクションを決して実行してはならない信頼できないドキュメントには lapDisabled を、アプリケーションが明示的な承認境界を必要とする場合は lapManual を使用してください