Инспекция графа действий и навигация 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, тогда как существующие триггеры действий мыши и фокуса сохраняют свои более ранние требования к версиям