THPDFPage.AddRichTextField Method

 

THPDFPage.AddRichTextField

THPDFPage

 

Đầu trang

Thêm một widget văn bản rich-text AcroForm PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L) vào trang hiện tại. Widget này mang fallback văn bản thuần chuẩn /V + /DV dành cho các trình đọc không phân tích rich text, cùng body XHTML rich-text /RV mới và các mục style mặc định /DS mà Acrobat và Foxit đọc trực tiếp để hiển thị chữ được tạo kiểu. Bit RichText của /Ff (26) được OR tự động

 

Delphi syntax:

procedure AddRichTextField(const FieldName, InitialValue: AnsiString; const RichValue, DefaultStyle: AnsiString; Rectangle: TRect; MaxLen: Integer = 0; Flags: THPDFFormFieldFlags = []);

 

C++ syntax:

void AddRichTextField(const AnsiString& FieldName, const AnsiString& InitialValue, const AnsiString& RichValue, const AnsiString& DefaultStyle, const TRect& Rectangle, int MaxLen = 0, THPDFFormFieldFlags Flags = THPDFFormFieldFlags());

 

Mô tả

Widget được phát ra như một trường form Tx với /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff có bit RichText bật, InitialValue được cung cấp làm cả /V lẫn /DV, RichValue làm /RV và DefaultStyle làm /DS. InitialValue, RichValue và DefaultStyle tự phát hiện nội dung nhiều byte và chuyển sang mã hóa chuỗi hex UTF-16BE khi cần (khớp với hành vi hiện có của AddTextField cho các trường văn bản thuần quốc tế)

Việc kết xuất rich-text diễn ra ở phía trình đọc: trình xem PDF của Acrobat / Foxit / Edge / Chrome đều phân tích /RV khi bit RichText bật và lấy các fallback phông Unicode từ hệ thống, nên nội dung CJK, Cyrillic, Arabic và Latin có dấu hiển thị đúng mà HotPDF không cần nhúng phông CID vào tài nguyên /DR. Với đường AutoFormAppearances của chính HotPDF, nhánh placeholder empty-AP cho văn bản nhiều byte vẫn còn nguyên (nhiệm vụ từ v2.56.0+); các trình đọc hiểu rich text sẽ bỏ qua AP đó và render trực tiếp từ /RV

 

FieldName - tên riêng phần /T của trường form PDF (phải duy nhất trong parent của nó). Chấp nhận dấu cách và byte không phải ASCII; ký tự không phải ASCII sẽ kích hoạt mã hóa UTF-16BE cho chuỗi /T được phát ra

InitialValue - chuỗi văn bản PDF thuần được ghi vào /V và /DV. Các trình đọc không phân tích /RV sẽ dùng giá trị này để hiển thị

RichValue - body XHTML có gắn thẻ của PDF 1.7 Annex L (dạng tương thích nhất bắt đầu bằng <?xml version="1.0"?> và một gốc XHTML <body> mang thuộc tính namespace xfa:contentType="text/html"). Kiểu dáng nội dòng dùng <span style="..."> với các thuộc tính CSS (font-family, font-size, font-weight, font-style, color, v.v.)

DefaultStyle - chuỗi kiểu dáng giống CSS được áp dụng cho các ký tự người dùng nhập khi điền form mà không có style theo từng ký tự trong /RV. Ví dụ: 'font: 12pt Helvetica; color: #000000'

Rectangle - /Rect của widget trong tọa độ màn hình của HotPDF (gốc trên trái); việc YProjection diễn ra tự động khi rect được đổi sang user space của PDF

MaxLen - tùy chọn; khi lớn hơn 0, phát ra mục /MaxLen để giới hạn số ký tự người dùng nhập. Mặc định là 0 (không giới hạn)

Flags - tùy chọn; các cờ bổ sung để OR vào /Ff ngoài bit RichText được thêm tự động. Các cờ bổ sung thường dùng: ffMultiline cho body rich-text nhiều đoạn, ffReadOnly cho văn bản định dạng chỉ hiển thị. Cờ ffRichText luôn được thêm nên người gọi không cần tự đưa vào

 

Ví dụ mã

// Rich-text Tx widget with bold + italic markup
var
  Rich, DS: AnsiString;
  R: TRect;
begin
  HPDF.BeginDoc;

  Rich :=
    '<?xml version="1.0"?>' +
    '<body xmlns="http://www.w3.org/1999/xhtml" ' +
    'xmlns:xfa="http://www.xfa.org/schema/xfa-data/1.0/" ' +
    'xfa:contentType="text/html">' +
    '<p style="font-family:Helvetica;font-size:12pt">' +
    '<span style="font-weight:bold">Bold</span> and ' +
    '<span style="font-style:italic">italic</span> text.' +
    '</p></body>';
  DS := 'font: 12pt Helvetica; color: #000000';
  R.Left := 60; R.Top := 60; R.Right := 280; R.Bottom := 100;

  HPDF.CurrentPage.AddRichTextField(
    'Biography', 'Plain biography text', Rich, DS, R);

  HPDF.EndDoc;
end;

 

See Also

AddTextField, AutoFormAppearances, Version, AcroForm Support