Інспекція графа дій та навігація 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, тоді як наявні тригери дій миші та фокусу зберігають свої раніші вимоги до версій