THPDFPage.AddRichTextField Method

 

THPDFPage.AddRichTextField

THPDFPage

 

Κορυφή

Προσθέτει PDF 1.5+ AcroForm rich-text text widget (ISO 32000-1 12.7.4.3 + Annex L) στην τρέχουσα σελίδα. Το widget φέρει το standard /V + /DV plain-text fallback που χρησιμοποιούν readers που δεν αναλύουν rich text, μαζί με τα νέα /RV rich-text XHTML body και /DS default style entries που το Acrobat και το Foxit καταναλώνουν απευθείας για rendering styled text. Το /Ff RichText bit (26) γίνεται OR αυτόματα

 

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

 

Περιγραφή

Το widget εκπέμπεται ως Tx form field με /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff με ενεργό το RichText bit, το παρεχόμενο InitialValue ως /V και /DV, το RichValue ως /RV και το DefaultStyle ως /DS. Τα InitialValue, RichValue και DefaultStyle ανιχνεύουν αυτόματα multi-byte content και αλλάζουν σε UTF-16BE hex-string encoding όταν χρειάζεται (ταιριάζοντας με την υπάρχουσα συμπεριφορά AddTextField για international plain-text fields)

Το rich-text rendering γίνεται στον reader: Acrobat / Foxit / Edge / Chrome PDF viewer αναλύουν όλα το /RV όταν το RichText bit είναι on και λαμβάνουν Unicode font fallbacks από το σύστημα, οπότε CJK, Cyrillic, Arabic και accented Latin content εμφανίζεται σωστά χωρίς το HotPDF να ενσωματώνει CID font στο /DR Resources. Για τη δική του AutoFormAppearances path του HotPDF, το placeholder empty-AP branch για multi-byte text παραμένει στη θέση του (το v2.56.0+ task)· rich-text-aware readers αγνοούν αυτό το AP και κάνουν render απευθείας από το /RV

 

FieldName - το /T partial name του PDF form field (πρέπει να είναι unique μέσα στο parent του). Spaces και non-ASCII bytes γίνονται δεκτά· non-ASCII ενεργοποιεί UTF-16BE encoding στο emitted /T string

InitialValue - plain-text PDF text string που γράφεται σε /V και /DV. Readers που δεν αναλύουν /RV κάνουν fallback σε αυτή την value για display

RichValue - PDF 1.7 Annex L tagged XHTML body (the most portable form starts with <?xml version="1.0"?> and an XHTML <body> root carrying the xfa:contentType="text/html" namespace attribute). Inline styling uses <span style="..."> with CSS properties (font-family, font-size, font-weight, font-style, color, etc.).

DefaultStyle - CSS-like style string applied to characters the user types at fill time when no per-character style is present in /RV. Example: 'font: 12pt Helvetica; color: #000000'.

Rectangle - το /Rect του widget σε HotPDF screen coordinates (top-left origin)· το YProjection γίνεται αυτόματα όταν το rect μετατρέπεται σε PDF user space

MaxLen - optional; when greater than zero, emits a /MaxLen entry capping the user-entered character count. Defaults to 0 (no limit).

Flags - προαιρετικό· οποιαδήποτε extra field flags για OR μέσα στο /Ff πέρα από το auto-added RichText bit. Τυπικά extra flags: ffMultiline για multi-paragraph rich-text bodies, ffReadOnly για display-only formatted text. Το ffRichText flag προστίθεται πάντα, ώστε ο καλών να μην χρειάζεται να το συμπεριλάβει

 

Code Example

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