|
Přidá na aktuální stránku textový widget AcroForm rich-text pro PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L). Widget nese standardní fallback prostého textu /V + /DV používaný readery, které neparsují rich text, a navíc nové položky /RV s XHTML tělem rich textu a /DS s výchozím stylem, které Acrobat a Foxit přímo používají k vykreslení stylovaného textu. Bit RichText (26) v /Ff se přidá automaticky operací OR
Syntaxe Delphi:
procedure AddRichTextField(const FieldName, InitialValue: AnsiString; const RichValue, DefaultStyle: AnsiString; Rectangle: TRect; MaxLen: Integer = 0; Flags: THPDFFormFieldFlags = []);
Syntaxe C++:
void AddRichTextField(const AnsiString& FieldName, const AnsiString& InitialValue, const AnsiString& RichValue, const AnsiString& DefaultStyle, const TRect& Rectangle, int MaxLen = 0, THPDFFormFieldFlags Flags = THPDFFormFieldFlags());
Popis
Widget se vypíše jako formulářové pole Tx s /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff se zapnutým bitem RichText, dodaným InitialValue jako /V i /DV, RichValue jako /RV a DefaultStyle jako /DS. InitialValue, RichValue a DefaultStyle automaticky detekují vícebajtový obsah a podle potřeby přepnou na kódování hex-string UTF-16BE, stejně jako existující chování AddTextField pro mezinárodní pole prostého textu
Vykreslení rich textu probíhá v readeru: Acrobat / Foxit / Edge / Chrome PDF viewer parsují /RV, když je bit RichText zapnutý, a berou fallbacky Unicode písem ze systému, takže CJK, cyrilice, arabština i latinka s diakritikou se zobrazí správně bez toho, aby HotPDF vkládal CID písmo do /DR Resources. Pro vlastní cestu AutoFormAppearances v HotPDF zůstává větev prázdného zástupného /AP pro vícebajtový text zachována (úloha v2.56.0+); readery podporující rich text tento /AP ignorují a vykreslují přímo z /RV
FieldName - dílčí název /T formulářového pole PDF (musí být jedinečný v rámci rodiče). Mezery i bajty mimo ASCII jsou přijaty; obsah mimo ASCII spustí kódování UTF-16BE ve vypsaném řetězci /T
InitialValue - prostý textový řetězec PDF zapsaný do /V a /DV. Readery, které neparsují /RV, použijí tuto hodnotu jako fallback pro zobrazení
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 widgetu v obrazovkových souřadnicích HotPDF (počátek vlevo nahoře); YProjection proběhne automaticky při převodu obdélníku do uživatelského prostoru PDF
MaxLen - optional; when greater than zero, emits a /MaxLen entry capping the user-entered character count. Defaults to 0 (no limit).
Flags - volitelné; libovolné další příznaky pole, které se mají přes OR přidat do /Ff nad rámec automaticky přidaného bitu RichText. Typické další příznaky: ffMultiline pro víceedstavcová těla rich textu, ffReadOnly pro pouze zobrazovaný formátovaný text. Příznak ffRichText se přidává vždy, takže jej volající nemusí zahrnovat
Příklad kódu
// 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;
Viz také
AddTextField, AutoFormAppearances, Verze, AcroForm Support
|