|
Adaugă pe pagina curentă un widget AcroForm de text bogat PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L). Widgetul poartă fallback-ul standard de text simplu /V + /DV folosit de cititoarele care nu interpretează rich text, plus noul corp XHTML rich-text /RV și intrările de stil implicit /DS pe care Acrobat și Foxit le consumă direct pentru a reda textul stilizat. Bitul RichText din /Ff (26) este OR-uit automat
Sintaxă Delphi:
procedure AddRichTextField(const FieldName, InitialValue: AnsiString; const RichValue, DefaultStyle: AnsiString; Rectangle: TRect; MaxLen: Integer = 0; Flags: THPDFFormFieldFlags = []);
Sintaxă C++:
void AddRichTextField(const AnsiString& FieldName, const AnsiString& InitialValue, const AnsiString& RichValue, const AnsiString& DefaultStyle, const TRect& Rectangle, int MaxLen = 0, THPDFFormFieldFlags Flags = THPDFFormFieldFlags());
Descriere
Widgetul este emis ca un câmp de formular Tx cu /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff cu bitul RichText setat, InitialValue furnizat ca atât /V cât și /DV, RichValue ca /RV și DefaultStyle ca /DS. InitialValue, RichValue și DefaultStyle detectează automat conținutul pe mai mulți octeți și trec la codarea UTF-16BE hex-string când este nevoie, în același fel ca comportamentul existent al AddTextField pentru câmpurile internaționale de text simplu
Redarea rich-text are loc în cititor: Acrobat / Foxit / Edge / Chrome PDF viewer interpretează toate /RV atunci când bitul RichText este activ și preiau fallback-urile de font Unicode din sistem, astfel încât conținutul CJK, chirilic, arab și latin accentuat se afișează corect fără ca HotPDF să încorporeze un font CID în resursele /DR. Pentru propria rută AutoFormAppearances a HotPDF, ramura de rezervă empty-AP pentru text pe mai mulți octeți rămâne în vigoare (sarcina v2.56.0+); cititoarele care știu rich text ignoră acel AP și redau direct din /RV
FieldName - numele parțial /T al câmpului de formular PDF (trebuie să fie unic în cadrul părintelui său). Spațiile și octeții non-ASCII sunt acceptați; non-ASCII declanșează codarea UTF-16BE pentru șirul /T emis
InitialValue - șir PDF de text simplu scris în /V și /DV. Cititoarele care nu interpretează /RV revin la această valoare pentru afișare
RichValue - corp XHTML etichetat din PDF 1.7 Annex L (forma cea mai portabilă începe cu <?xml version="1.0"?> și un rădăcină XHTML <body> care poartă atributul de spațiu de nume xfa:contentType="text/html"). Stilizarea inline folosește <span style="..."> cu proprietăți CSS (font-family, font-size, font-weight, font-style, color etc.)
DefaultStyle - șir de stil asemănător CSS aplicat caracterelor pe care utilizatorul le tastează la completare când în /RV nu există stil per caracter. Exemplu: 'font: 12pt Helvetica; color: #000000'
Rectangle - /Rect al widgetului în coordonate de ecran HotPDF (origine în colțul stânga-sus); proiecția pe axa Y se face automat când dreptunghiul este convertit în spațiul utilizator PDF
MaxLen - opțional; când este mai mare decât zero, emite o intrare /MaxLen care limitează numărul de caractere introduse de utilizator. Valoarea implicită este 0 (fără limită)
Flags - opțional; orice steaguri suplimentare de câmp care se OR-ează în /Ff dincolo de bitul RichText adăugat automat. Steaguri suplimentare tipice: ffMultiline pentru corpuri rich-text cu mai multe paragrafe, ffReadOnly pentru text formatat doar pentru afișare. Steagul ffRichText este adăugat întotdeauna, astfel încât apelantul nu trebuie să-l includă
Exemplu de cod
// 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
|