|
Menambahkan widget teks rich-text AcroForm PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L) ke halaman saat ini. Widget ini membawa fallback teks biasa standar /V + /DV yang dipakai oleh pembaca yang tidak mem-parse rich text, ditambah body XHTML rich-text /RV baru dan entri style bawaan /DS yang langsung dipakai Acrobat dan Foxit untuk merender teks bergaya. Bit RichText /Ff (26) di-OR secara otomatis
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());
Deskripsi
Widget ini dikeluarkan sebagai field formulir Tx dengan /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff dengan bit RichText disetel, InitialValue yang disediakan sebagai /V dan /DV, RichValue sebagai /RV, dan DefaultStyle sebagai /DS. InitialValue, RichValue, dan DefaultStyle mendeteksi konten multi-byte secara otomatis dan beralih ke encoding string hex UTF-16BE saat perlu (sesuai perilaku AddTextField yang sudah ada untuk field teks biasa internasional)
Rendering rich text terjadi di pembaca: viewer PDF Acrobat / Foxit / Edge / Chrome semuanya mem-parse /RV saat bit RichText aktif dan mengambil fallback font Unicode dari sistem, sehingga konten CJK, Cyrillic, Arabic, dan Latin beraksen tampil benar tanpa HotPDF menyematkan font CID ke resource /DR. Untuk jalur AutoFormAppearances milik HotPDF sendiri, cabang placeholder empty-AP untuk teks multi-byte tetap ada (tugas v2.56.0+); pembaca yang paham rich text mengabaikan AP itu dan merender langsung dari /RV
FieldName - nama parsial /T dari field formulir PDF (harus unik di dalam induknya). Spasi dan byte non-ASCII diterima; non-ASCII memicu encoding UTF-16BE pada string /T yang dikeluarkan
InitialValue - string teks biasa PDF yang ditulis ke /V dan /DV. Pembaca yang tidak mem-parse /RV akan memakai nilai ini untuk tampilan
RichValue - body XHTML bertag Annex L PDF 1.7 (bentuk paling portabel dimulai dengan <?xml version="1.0"?> dan root XHTML <body> yang membawa atribut namespace xfa:contentType="text/html"). Styling inline memakai <span style="..."> dengan properti CSS (font-family, font-size, font-weight, font-style, color, dll)
DefaultStyle - string style mirip CSS yang diterapkan ke karakter yang diketik pengguna saat pengisian ketika tidak ada style per karakter di /RV. Contoh: 'font: 12pt Helvetica; color: #000000'
Rectangle - /Rect widget dalam koordinat layar HotPDF (origin kiri atas); proyeksi Y terjadi otomatis saat rect dikonversi ke user space PDF
MaxLen - opsional; saat lebih besar dari nol, mengeluarkan entri /MaxLen yang membatasi jumlah karakter yang dimasukkan pengguna. Nilai bawaan 0 (tanpa batas)
Flags - opsional; flag field tambahan apa pun untuk di-OR ke /Ff di luar bit RichText yang ditambahkan otomatis. Flag tambahan yang umum: ffMultiline untuk body rich text multi-paragraf, ffReadOnly untuk teks terformat hanya tampil. Flag ffRichText selalu ditambahkan sehingga pemanggil tidak perlu menyertakannya
Contoh kode
// 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
|