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

IDNeprá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