SetStructElemIDA

Структурированный PDF, Доступность

Описание

Завершающая A обозначает точку входа DLL типа ANSI (char); интерфейс ActiveX/COM предоставляет только форму Unicode. Поведение идентично SetStructElemID, а строковые аргументы интерпретируются с использованием текущей кодовой страницы SetAnsiMode

Присваивает уникальную строку-идентификатор элементу структуры, открытому на стеке тегов. ID записывается в запись /ID словаря элемента структуры и индексируется в дереве имён /IDTree документа, чтобы другие элементы могли на него ссылаться (например, через атрибут /Headers ячеек таблицы). Вызывайте после BeginTag или BeginTagEx и до EndTag

Синтаксис

Delphi

Function DLSetStructElemIDA(InstanceID: Integer; ID: PAnsiChar): Integer;

DLL

int DLSetStructElemIDA(int InstanceID, const char * ID);

Параметры

IDНепустая строка, уникально идентифицирующая элемент структуры в документе. Выбирайте осмысленный и уникальный в масштабе всего документа ID, например TH-Col-1, TH-Row-2 или строку в духе GUID

Возвращаемое значение

Возвращает 1 в случае успеха; 0 — если документ не открыт, на стеке тегов нет открытого тега либо ID пуст

Примечания

Запись /ID определена в ISO 32000-1 §14.7.3.4. При сохранении документа все ID элементов собираются в плоское дерево имён /IDTree в корне дерева структуры; благодаря этому средства доступности и другие элементы могут находить элементы по ID. Записи /IDTree отсортированы по строке ID по алфавиту.

Типичный сценарий — тегировать ячейки заголовков таблицы (TH) идентификаторами, чтобы ячейки данных (TD) могли через SetStructElemHeaders связаться с правильными заголовками. Такая связь требуется для сложных таблиц по PDF/UA-1 (ISO 14289-1 §7.10) и WCAG 2.x Success Criterion 1.3.1.

Если один ID назначен нескольким элементам структуры, поведение не определено; строку ID должен получать только один элемент на уникальный ID

Пример

// Tag a column header cell with an ID for later /Headers reference
PDFlib.BeginTag('TH', 'Product Name', '', '');
PDFlib.SetStructElemID('TH-ProductName');
PDFlib.SetStructElemScope('Column');
PDFlib.DrawText('Product Name', 100, 700);
PDFlib.EndTag;

PDFlib.BeginTag('TH', 'Price', '', '');
PDFlib.SetStructElemID('TH-Price');
PDFlib.SetStructElemScope('Column');
PDFlib.DrawText('Price', 250, 700);
PDFlib.EndTag;

// Tag a data cell referencing both header cells
PDFlib.BeginTag('TD', '', '', '');
PDFlib.SetStructElemHeaders('TH-ProductName,TH-Price');
PDFlib.DrawText('Widget A', 100, 680);
PDFlib.EndTag;

См. также

SetStructElemHeaders, AddTagAttribute, BeginTag, EndTag, SetPDFUAMode