TPdfLifecycleActionPolicy = (lapDisabled, lapManual, lapAutomatic);
TPdfDocumentLifecycleAction = (dlaJavaScript, dlaOpen, dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint, dlaDidPrint);
TPdfPageLifecycleAction = (plaOpen, plaClose);
property LifecycleActionPolicy: TPdfLifecycleActionPolicy; // default lapAutomatic
lapDisabled bloqueia a execução de ações de ciclo de vida, tanto automáticas como explícitas
lapManual suprime as ações automáticas mas permite os dois métodos de execução explícita
lapAutomatic mantém o comportamento automático compatível de JavaScript de documento, de abertura e fecho de documento e de abertura e fecho de página, continuando a permitir a execução explícita
O modo automático não envolve operações de gravação ou impressão porque as capturas internas e as gravações de conversão não devem executar scripts de documento de forma inesperada; chame o método explícito de documento nos limites do fluxo de trabalho controlados pelo anfitrião
function ExecuteDocumentLifecycleAction(Action: TPdfDocumentLifecycleAction; out ErrorMessage: string): Boolean;
dlaJavaScript executa as ações da árvore de nomes JavaScript ao nível do documento e dlaOpen executa a ação de abertura do catálogo
dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint e dlaDidPrint distribuem a ação adicional de documento correspondente
O método devolve False com um ErrorMessage não vazio quando a política bloqueia a execução, o ambiente de preenchimento de formulários não está disponível ou um callback gera uma exceção
function ExecutePageLifecycleAction(PageNumber: Integer; Action: TPdfPageLifecycleAction; out ErrorMessage: string): Boolean;
PageNumber usa numeração a partir de 1 e tem de identificar uma página do documento ativo
A página atual reutiliza o handle nativo já carregado; outra página é aberta temporariamente, registada no ambiente de formulários, alvo da distribuição da ação, retirada do registo e fechada sem alterar TPdf.PageNumber
As falhas de carregamento, registo, ação, limpeza e fecho são isoladas no valor de retorno e em 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;
As ações de ciclo de vida podem invocar JavaScript de documento, ações nomeadas, callbacks de URI e outros serviços do anfitrião configurados no TPdf
Use lapDisabled em documentos não fidedignos que nunca devem executar ações, ou lapManual quando a aplicação precisa de um limite de aprovação explícito