Інспекція графа дій та навігація GoToE

THPDFActionBuilder створює дії GoToE формату PDF 1.6 для цілей усередині вбудованих або споріднених PDF-документів, тоді як API завантажених дій читає всі 18 стандартних підтипів дій PDF без їх виконання

Побудовники GoToE

class function GoToEmbeddedNamedDestination(
  const RootFileName, DestinationName: AnsiString;
  const TargetPath: array of THPDFEmbeddedTarget;
  NewWindow: boolean = false): THPDFActionBuilder;

class function GoToEmbeddedPage(
  const RootFileName: AnsiString;
  TargetPageIndex: Integer;
  const TargetPath: array of THPDFEmbeddedTarget;
  FitMode: THPDFDestinationFitMode = dfmFit;
  Left: Single = 0; Top: Single = 0;
  Right: Single = 0; Bottom: Single = 0;
  Zoom: Single = 0; NewWindow: boolean = false): THPDFActionBuilder;

Створюйте кожен елемент цільового шляху через HPDFEmbeddedParentTarget, HPDFEmbeddedFileTarget або перевантаження HPDFEmbeddedAnnotationTarget

Дочірній елемент, обраний через дерево імен EmbeddedFiles, записує /R /C плюс /N, тоді як дочірній елемент анотації-вкладення записує /R /C плюс потрібну пару /P та /A

Батьківські елементи записують лише /R /P, вкладені елементи стають рекурсивними словниками /T, а порожнє ім'я файлу RootFileName вимагає непорожній цільовий шлях

Приклад на Delphi

var
  Action: THPDFActionBuilder;
  Targets: THPDFEmbeddedTargetArray;
begin
  SetLength(Targets, 2);
  Targets[0] := HPDFEmbeddedFileTarget('chapter.pdf');
  Targets[1] := HPDFEmbeddedParentTarget;
  Action := THPDFActionBuilder.GoToEmbeddedNamedDestination(
    'containers\root.pdf', 'EmbeddedStart', Targets, True);
  try
    HotPDF.CurrentPage.SetAnnotationAction(Annot, Action);
  finally
    Action.Free;
  end;
end;

Завантажений граф дій

function GetLoadedActionChain(ActionObject: THPDFObject): THPDFLoadedActionInfoArray;
function GetLoadedOpenActionChain: THPDFLoadedActionInfoArray;
function GetLoadedDocumentActionChain(ActionType: THPDFActionScriptType): THPDFLoadedActionInfoArray;
function GetLoadedPageActionChain(PageIndex: Integer; Trigger: THPDFPageActionTrigger): THPDFLoadedActionInfoArray;
function GetLoadedAnnotationPrimaryActionChain(PageIndex, AnnotationIndex: Integer): THPDFLoadedActionInfoArray;
function GetLoadedAnnotationActionChain(PageIndex, AnnotationIndex: Integer; Trigger: THPDFAnnotationActionTrigger): THPDFLoadedActionInfoArray;
function GetLoadedFormFieldActionChain(FieldIndex: Integer; Trigger: THPDFFormFieldActionTrigger): THPDFLoadedActionInfoArray;
function GetLoadedOutlineActionChain(OutlineIndex: Integer): THPDFLoadedActionInfoArray;

Повернутий масив дотримується порядку виконання: батьківська дія йде першою, за нею слідують елементи словника або масиву /Next у впорядкованій послідовності в глибину

THPDFLoadedActionInfo.Kind ідентифікує GoTo, GoToR, GoToE, Launch, Thread, URI, Sound, Movie, Hide, Named, SubmitForm, ResetForm, ImportData, JavaScript, SetOCGState, Rendition, Trans або GoTo3DView

Базові операнди декодуються у поля призначення, файлу, URI, JavaScript, цілі, операції, прапорця, тому, необов'язкового логічного значення та пов'язаного об'єкта

NewWindow використовує obAbsent, obFalse або obTrue, тому відсутнє значення залишається відмінним від явного значення false

Програма читання ніколи не виконує дію і ніколи не слідує необмеженому графу

Некоректні елементи, цикли, повторювані спільні вузли, глибина понад 64, кількість вузлів понад 4096 та завеликі масиви /Next повертають діагностичні записи через Malformed та Issue

Тригери видимості анотацій

THPDFAnnotationActionTrigger та THPDFAnnotationJavaScriptTrigger включають елементи відкриття сторінки /PO, закриття сторінки /PC, видимості сторінки /PV та невидимості сторінки /PI

Ці чотири тригери узгоджують PDF 1.5, тоді як наявні тригери дій миші та фокусу зберігають свої раніші вимоги до версій

Див. також