SetStructElemActualText
PDF gắn thẻ và khả năng truy cập
Mô tả
Đặt mục /ActualText trên structure element đang được dựng trên tag stack. ActualText cung cấp đúng văn bản Unicode mà phần tử đại diện, ghi đè lên mọi văn bản trích từ PDF content stream của phần mềm đọc
Dùng hàm này khi các glyph hiển thị trong luồng nội dung không ánh xạ trực tiếp tới các ký tự theo thứ tự đọc mong muốn – ví dụ glyph ligature (ff, fi, fl) đáng lẽ phải đọc thành chuỗi hai ký tự ff, fi hoặc fl. Không có ActualText, các công cụ trích xuất văn bản và trình đọc màn hình có thể cho kết quả sai với những glyph như vậy.
Cú pháp
Delphi
Function TPDFlib.SetStructElemActualText(Const ActualText: WideString): Integer;
ActiveX
Function PDFlib::SetStructElemActualText(ActualText As String) As Long
DLL
int DLSetStructElemActualText(int InstanceID, const wchar_t * ActualText);
Tham số
| ActualText | Chuỗi văn bản Unicode gắn với structure element hiện tại. Truyền chuỗi rỗng để xóa giá trị đã đặt trước đó |
|---|
Giá trị trả về
Trả về 1 khi thành công, 0 nếu không có phần tử cấu trúc nào đang mở hoặc chưa chọn tài liệu.
Ghi chú
Gọi hàm này ngay sau BeginTag hoặc BeginTagEx khi phần tử đích đang ở đỉnh tag stack
ActualText và AltText phục vụ mục đích khác nhau. AltText (đặt qua tham số AltText của BeginTag) là phần biểu diễn thay thế cho toàn bộ phần tử, dành cho công nghệ hỗ trợ khi nội dung hiển thị không thể render. ActualText bổ sung cho việc trích xuất văn bản từ content stream: nó thay chuỗi ký tự trích xuất của phần tử nhưng không chặn render. Screen reader hỗ trợ cả hai sẽ ưu tiên dùng ActualText cho đầu ra đọc to khi có mặt
ISO 32000-1 §14.9.4 định nghĩa ActualText là một mục chuỗi văn bản PDF trên từ điển phần tử cấu trúc. PDF/UA-1 (ISO 14289-1 §7.1) yêu cầu nội dung văn bản phải trích xuất được và đúng; ActualText là cơ chế chuẩn để đáp ứng yêu cầu này với các dãy glyph mà việc trích xuất trực tiếp sẽ mơ hồ hoặc sai.
Ví dụ
// Tag a ligature glyph so that text extraction yields "fi"
PDFlib.BeginTag('Span', '', '');
PDFlib.SetStructElemActualText('fi');
PDFlib.TextOut(x, y, #$FB01); // U+FB01 LATIN SMALL LIGATURE FI
PDFlib.EndTag;Xem thêm
BeginTag, BeginTagEx, SetStructElemID, AddTagAttribute, GetPDFUADiagnostics