TPdfLifecycleActionPolicy = (lapDisabled, lapManual, lapAutomatic);
TPdfDocumentLifecycleAction = (dlaJavaScript, dlaOpen, dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint, dlaDidPrint);
TPdfPageLifecycleAction = (plaOpen, plaClose);
property LifecycleActionPolicy: TPdfLifecycleActionPolicy; // default lapAutomatic
lapDisabled blocca l'esecuzione delle azioni del ciclo di vita sia automatica sia esplicita
lapManual inibisce le azioni automatiche consentendo però i due metodi di esecuzione espliciti
lapAutomatic conserva il comportamento automatico compatibile del JavaScript del documento, dell'apertura e chiusura del documento e dell'apertura e chiusura delle pagine, consentendo comunque l'esecuzione esplicita
La modalità automatica non avvolge le operazioni di salvataggio o stampa perché gli snapshot interni e i salvataggi di conversione non devono eseguire inaspettatamente script del documento; chiamare il metodo esplicito del documento nei confini del flusso di lavoro controllati dall'host
function ExecuteDocumentLifecycleAction(Action: TPdfDocumentLifecycleAction; out ErrorMessage: string): Boolean;
dlaJavaScript esegue le azioni dell'albero dei nomi JavaScript a livello di documento e dlaOpen esegue l'azione di apertura del catalog
dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint e dlaDidPrint inviano la corrispondente azione aggiuntiva del documento
Il metodo restituisce False con un ErrorMessage non vuoto quando i criteri bloccano l'esecuzione, l'ambiente di compilazione dei moduli non è disponibile o una callback solleva un'eccezione
function ExecutePageLifecycleAction(PageNumber: Integer; Action: TPdfPageLifecycleAction; out ErrorMessage: string): Boolean;
PageNumber è in base uno e deve identificare una pagina del documento attivo
La pagina corrente riutilizza il proprio handle nativo caricato; un'altra pagina viene aperta temporaneamente, registrata nell'ambiente dei moduli, inviata, deregistrata e chiusa senza modificare TPdf.PageNumber
I fallimenti di caricamento, registrazione, azione, pulizia e chiusura vengono isolati nel valore restituito e in 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;
Le azioni del ciclo di vita possono invocare JavaScript del documento, azioni nominate, callback URI e altri servizi host configurati su TPdf
Usare lapDisabled per i documenti non attendibili che non devono mai eseguire azioni, oppure lapManual quando l'applicazione necessita di un confine di approvazione esplicito