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