THPDFPage.AddRichTextField Method

 

THPDFPage.AddRichTextField

THPDFPage

 

Горе

Добавя PDF 1.5+ AcroForm rich-text text widget (ISO 32000-1 12.7.4.3 + Annex L) към текущата страница. Widget-ът носи стандартния /V + /DV plain-text fallback, използван от reader-и, които не парсват rich text, плюс новите /RV rich-text XHTML body и /DS default style записи, които Acrobat и Foxit консумират директно за визуализиране на стилен текст. Bit-ът /Ff RichText (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 бит, подадения InitialValue като /V и /DV, RichValue като /RV и DefaultStyle като /DS. InitialValue, RichValue и DefaultStyle автоматично разпознават многобайтово съдържание и при нужда преминават към UTF-16BE hex-string кодиране, съвпадайки със съществуващото поведение на AddTextField за международни plain-text полета

Rich-text рендирането се случва в reader-а: Acrobat / Foxit / Edge / Chrome PDF viewer всички парсват /RV, когато RichText bit-ът е включен, и взимат Unicode font fallbacks от системата, така че CJK, Cyrillic, Arabic и accented Latin съдържание се показва правилно, без HotPDF да вгражда CID font в /DR Resources. За собствения AutoFormAppearances path на HotPDF branch-ът placeholder empty-AP за multi-byte текст остава наличен (задачата v2.56.0+); rich-text-aware reader-ите игнорират този AP и рендират директно от /RV

 

FieldName - /T partial name на PDF form field-а (трябва да е уникално в рамките на неговия parent). Разрешени са интервали и non-ASCII байтове; non-ASCII задейства UTF-16BE кодиране на излъчвания /T низ

InitialValue - plain-text PDF text string, записван в /V и /DV. Reader-и, които не парсват /RV, използват тази стойност за показване

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, прилаган върху знаците, които потребителят въвежда при попълване, когато в /RV няма стил за отделен знак. Пример: 'font: 12pt Helvetica; color: #000000'

Rectangle - /Rect на widget-а в HotPDF screen coordinates (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 - незадължително; допълнителни field flags за OR в /Ff над автоматично добавения RichText bit. Типични допълнителни флагове: ffMultiline за multi-paragraph rich-text тела, ffReadOnly за форматиран текст само за показване. Флагът ffRichText винаги се добавя, така че извикващият да не трябва да го включва ръчно

 

Примерен код

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