THPDFPage.AddRichTextField Method

 

THPDFPage.AddRichTextField

THPDFPage

 

Topo

Adiciona à página atual um widget de texto rico AcroForm PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L). O widget carrega o fallback padrão de texto simples /V + /DV usado por leitores que não analisam rich text, além do novo corpo XHTML de rich text /RV e das entradas de estilo padrão /DS que Acrobat e Foxit consomem diretamente para renderizar texto formatado. O bit /Ff RichText (26) é aplicado automaticamente com 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());

 

Descrição

O widget é emitido como campo de formulário Tx com /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff com o bit RichText definido, InitialValue fornecido como /V e /DV, RichValue como /RV e DefaultStyle como /DS. InitialValue, RichValue e DefaultStyle detectam automaticamente conteúdo multibyte e alternam para codificação de string hexadecimal UTF-16BE quando necessário (correspondendo ao comportamento existente de AddTextField para campos internacionais de texto simples)

A renderização de rich text acontece no leitor: Acrobat / Foxit / Edge / visualizador PDF do Chrome analisam /RV quando o bit RichText está ativo e buscam fallbacks de fonte Unicode no sistema, de modo que conteúdo CJK, cirílico, árabe e latino acentuado é exibido corretamente sem que o HotPDF incorpore uma fonte CID em /DR Resources. Para o caminho AutoFormAppearances do próprio HotPDF, o branch placeholder empty-AP para texto multibyte permanece em vigor (tarefa v2.56.0+); leitores compatíveis com rich text ignoram esse AP e renderizam diretamente de /RV

 

FieldName - o nome parcial /T do campo de formulário PDF (deve ser exclusivo dentro do pai). Espaços e bytes não ASCII são aceitos; conteúdo não ASCII aciona codificação UTF-16BE na string /T emitida

InitialValue - string de texto PDF simples gravada em /V e /DV. Leitores que não analisam /RV recorrem a esse valor para exibição

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 - o /Rect do widget em coordenadas de tela do HotPDF (origem no canto superior esquerdo); YProjection acontece automaticamente quando o retângulo é convertido para espaço do usuário PDF

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

Flags - opcional; quaisquer flags extras de campo a combinar com OR em /Ff além do bit RichText adicionado automaticamente. Flags extras típicas: ffMultiline para corpos rich-text com vários parágrafos, ffReadOnly para texto formatado somente leitura. A flag ffRichText sempre é adicionada, portanto o chamador não precisa incluí-la

 

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;

 

Consulte também

AddTextField, AutoFormAppearances, Version, AcroForm Support