SetStructElemID

PDF có gắn thẻ, Khả năng tiếp cận

Mô tả

Gán một chuỗi định danh duy nhất cho structure element đang mở trên tag stack. ID được ghi thành mục /ID trong dictionary của structure element và được đánh chỉ số trong name tree /IDTree của tài liệu để các phần tử khác tham chiếu được (ví dụ qua attribute /Headers của ô bảng). Gọi sau BeginTag hoặc BeginTagEx và trước EndTag

Cú pháp

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);

Tham số

IDChuỗi khác rỗng nhận dạng duy nhất structure element này trong tài liệu. Hãy chọn một ID có ý nghĩa và duy nhất trên toàn tài liệu, ví dụ TH-Col-1, TH-Row-2 hoặc một chuỗi dạng GUID

Giá trị trả về

Trả về 1 khi thành công. Trả về 0 nếu không có tài liệu nào đang mở, tag stack hiện không còn tag nào đang mở, hoặc ID rỗng

Ghi chú

Mục /ID được định nghĩa trong ISO 32000-1 §14.7.3.4. Khi lưu tài liệu, mọi ID phần tử được gom vào một name tree phẳng /IDTree tại gốc cây cấu trúc; nhờ đó công cụ trợ năng và các phần tử khác tra được phần tử theo ID. Các mục /IDTree được sắp theo alphabet theo chuỗi ID.

Một use case phổ biến là gắn thẻ các ô đầu bảng (TH) với ID để các ô dữ liệu (TD) có thể tự liên kết với đầu đề đúng qua SetStructElemHeaders. Liên kết này bắt buộc với các bảng phức tạp theo PDF/UA-1 (ISO 14289-1 §7.10) và WCAG 2.x Success Criterion 1.3.1.

Nếu cùng một ID được gán cho nhiều structure element, hành vi không xác định; mỗi ID string chỉ nên gán cho đúng một phần tử duy nhất

Ví dụ

// 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;

Xem thêm

SetStructElemHeaders, AddTagAttribute, BeginTag, EndTag, SetPDFUAMode