SetStructElemID
Tagged PDF, Přístupnost
Popis
Přiřadí právě otevřenému prvku na zásobníku tagů jednoznačný identifikační řetězec. ID se zapíše jako položka /ID ve slovníku strukturálního prvku a indexuje se ve stromu názvů /IDTree dokumentu, aby se na něj mohly odkazovat další prvky (například přes atribut /Headers buněk tabulky). Zavolejte po BeginTag nebo BeginTagEx a před EndTag
Syntaxe
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);
Parametry
| ID | Neprázdný řetězec, který jednoznačně identifikuje tento strukturální prvek v dokumentu. Zvolte ID smysluplné a unikátní v rámci celého dokumentu, například TH-Col-1, TH-Row-2 nebo řetězec podobný GUID |
|---|
Návratová hodnota
Vrací 1 při úspěchu. Vrací 0, není-li otevřen žádný dokument, není-li na zásobníku tagů právě otevřený žádný tag, nebo je-li ID prázdné
Poznámky
The /ID entry is defined in ISO 32000-1 §14.7.3.4. All element IDs are gathered into a flat /IDTree name tree on the structure tree root when the document is saved; this allows accessibility tools and other elements to look up elements by ID. The /IDTree entries are sorted alphabetically by ID string.
A common use case is tagging table header cells (TH) with IDs so that data cells (TD) can associate themselves with the correct headers via SetStructElemHeaders. This association is required for complex tables under PDF/UA-1 (ISO 14289-1 §7.10) and WCAG 2.x Success Criterion 1.3.1.
Je-li stejné ID přiřazeno více strukturálním prvkům, chování není definováno; každý unikátní ID řetězec by měl dostat jen jeden prvek
Příklad
// 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;Viz také
SetStructElemHeaders, AddTagAttribute, BeginTag, EndTag, SetPDFUAMode