SetStructElemID
Структурований PDF, Доступність
Опис
Присвоює унікальний рядок ідентичності структурному елементу, відкритому на стеці тегів. ID записується як запис /ID у словнику структурного елемента та індексується в дереві імен /IDTree документа, щоб інші елементи могли на нього посилатися (наприклад, через атрибут /Headers комірок таблиць). Викликайте після BeginTag чи BeginTagEx і до EndTag
Синтаксис
Delphi
Function TPDFlib.SetStructElemID(Const ID: WideString): Integer;
ActiveX
Function PDFlib::SetStructElemID(ID As String) As Long
DLL
int DLSetStructElemID(int InstanceID, const wchar_t * ID);
Параметри
| ID | Непорожній рядок, який унікально ідентифікує цей структурний елемент у документі. Обирайте ID, що має сенс і є унікальним у межах усього документа — як TH-Col-1, TH-Row-2 чи рядок у стилі GUID |
|---|
Повернуте значення
Повертає 1 в разі успіху. Повертає 0, якщо жоден документ не відкрито, на стеці тегів немає відкритого тега або ID порожній
Примітки
Запис /ID визначено в ISO 32000-1 §14.7.3.4. Усі ідентифікатори елементів збираються в плоске дерево імен /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