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 quanto explícitas
lapManual suprime as ações automáticas enquanto permite os dois métodos de execução explícitos
lapAutomatic mantém o comportamento compatível de JavaScript automático de documento, de abertura e fechamento de documento e de abertura e fechamento de página, ao mesmo tempo em que continua permitindo a execução explícita
O modo automático não envolve operações de salvamento ou de impressão porque snapshots internos e salvamentos de conversão não devem executar scripts de documento inesperadamente; chame o método explícito de documento nos limites do fluxo de trabalho controlados pelo host
function ExecuteDocumentLifecycleAction(Action: TPdfDocumentLifecycleAction; out ErrorMessage: string): Boolean;
dlaJavaScript executa ações de name-tree de JavaScript de nível de documento e dlaOpen executa a ação de abertura do catálogo
dlaWillClose, dlaWillSave, dlaDidSave, dlaWillPrint e dlaDidPrint despacham a ação adicional de documento correspondente
O método retorna 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 dispara uma exceção
function ExecutePageLifecycleAction(PageNumber: Integer; Action: TPdfPageLifecycleAction; out ErrorMessage: string): Boolean;
PageNumber é baseado em um e deve identificar uma página no documento ativo
A página atual reutiliza seu handle nativo carregado; outra página é aberta temporariamente, registrada no ambiente de formulários, despachada, desregistrada e fechada sem alterar TPdf.PageNumber
Falhas de carregamento, registro, ação, limpeza e fechamento são isoladas no valor de retorno e no 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;
Ações de ciclo de vida podem invocar JavaScript de documento, ações nomeadas, callbacks de URI e outros serviços de host configurados em TPdf
Use lapDisabled para documentos não confiáveis que nunca devem executar ações, ou lapManual quando o aplicativo precisa de um limite explícito de aprovação