PDFium Delphi Component Docs

Действия жизненного цикла

Компонент: 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 отсчитывается с единицы и должен указывать на страницу активного документа

Текущая страница повторно использует свой загруженный нативный дескриптор; другая страница временно открывается, регистрируется в среде форм, обрабатывается, снимается с регистрации и закрывается без изменения 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