THPDFPage.AddRichTextField Method

 

THPDFPage.AddRichTextField

THPDFPage

 

Góra

Dodaje do bieżącej strony widżet tekstowy AcroForm rich-text PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L). Widżet przenosi standardowy fallback zwykłego tekstu /V + /DV używany przez czytniki, które nie parsują rich text, oraz nowe wpisy /RV z treścią XHTML rich-text i /DS ze stylem domyślnym, które Acrobat i Foxit konsumują bezpośrednio do renderowania stylowanego tekstu. Bit /Ff RichText (26) jest automatycznie OR'd.

 

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

 

Opis

Widget jest zapisywany jako pole formularza Tx z /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff z ustawionym bitem RichText, przekazanym InitialValue jako /V i /DV, RichValue jako /RV oraz DefaultStyle jako /DS. InitialValue, RichValue i DefaultStyle automatycznie wykrywają zawartość wielobajtową i w razie potrzeby przełączają się na kodowanie hex-string UTF-16BE (tak samo jak istniejące zachowanie AddTextField dla międzynarodowych pól z czystym tekstem)

Renderowanie rich-text odbywa się w czytniku: Acrobat / Foxit / Edge / Chrome PDF viewer parsują /RV, gdy bit RichText jest włączony, i pobierają fallbacki fontów Unicode z systemu, więc treść CJK, Cyrillic, Arabic i Latin z akcentami wyświetla się poprawnie bez osadzania przez HotPDF fontu CID w /DR Resources. Dla własnej ścieżki AutoFormAppearances HotPDF pozostaje gałąź pustego AP placeholder dla tekstu wielobajtowego (zadanie v2.56.0+); czytniki świadome rich text ignorują ten AP i renderują bezpośrednio z /RV.

 

FieldName - częściowa nazwa /T pola formularza PDF (musi być unikalna w rodzicu). Spacje i bajty nie-ASCII są akceptowane; nie-ASCII wyzwala kodowanie UTF-16BE w emitowanym ciągu /T.

InitialValue - zwykły tekstowy ciąg PDF zapisany do /V i /DV. Czytniki, które nie parsują /RV, używają tej wartości jako fallbacku wyświetlania.

RichValue - treść XHTML z tagami wg PDF 1.7 Annex L (najbardziej przenośna forma zaczyna się od <?xml version="1.0"?> i elementu głównego XHTML <body> z atrybutem przestrzeni nazw xfa:contentType="text/html"). Style inline używają <span style="..."> z właściwościami CSS (font-family, font-size, font-weight, font-style, color itd.)

DefaultStyle - string w stylu CSS stosowany do znaków wpisywanych przez użytkownika podczas wypełniania, gdy w /RV nie ma stylu dla poszczególnych znaków. Przykład: 'font: 12pt Helvetica; color: #000000'

Rectangle - /Rect widżetu we współrzędnych ekranowych HotPDF (początek w lewym górnym rogu); następuje automatycznie przy konwersji rect do PDF user space.

MaxLen - opcjonalny; gdy większy od zera, zapisuje wpis /MaxLen ograniczający liczbę znaków wpisywanych przez użytkownika. Domyślnie 0 (bez limitu)

Flags - opcjonalne; dodatkowe flagi pól do OR w /Ff poza automatycznie dodanym bitem RichText. Typowe dodatkowe flagi: ffMultiline dla wieloakapitowych treści rich-text, ffReadOnly dla sformatowanego tekstu tylko do odczytu. Flaga ffRichText jest zawsze dodawana, więc wywołujący nie musi jej uwzględniać.

 

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;

 

Zobacz też

AddTextField, AutoFormAppearances, Version, AcroForm Support