|
Agrega a la página actual un widget de texto enriquecido AcroForm PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L). El widget incluye el fallback estándar de texto plano /V + /DV usado por lectores que no analizan texto enriquecido, además del nuevo cuerpo XHTML de texto enriquecido /RV y las entradas de estilo predeterminado /DS que Acrobat y Foxit consumen directamente para renderizar texto con estilo. El bit RichText (26) de /Ff se agrega automáticamente con OR
Sintaxis Delphi:
procedure AddRichTextField(const FieldName, InitialValue: AnsiString; const RichValue, DefaultStyle: AnsiString; Rectangle: TRect; MaxLen: Integer = 0; Flags: THPDFFormFieldFlags = []);
Sintaxis C++:
void AddRichTextField(const AnsiString& FieldName, const AnsiString& InitialValue, const AnsiString& RichValue, const AnsiString& DefaultStyle, const TRect& Rectangle, int MaxLen = 0, THPDFFormFieldFlags Flags = THPDFFormFieldFlags());
Descripción
El widget se emite como campo de formulario Tx con /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff con el bit RichText activado, el InitialValue suministrado como /V y /DV, RichValue como /RV y DefaultStyle como /DS. InitialValue, RichValue y DefaultStyle detectan automáticamente contenido multibyte y cambian a codificación de hex-string UTF-16BE cuando es necesario (coincidiendo con el comportamiento existente de AddTextField para campos internacionales de texto plano)
El renderizado de texto enriquecido ocurre en el lector: Acrobat / Foxit / Edge / Chrome PDF viewer analizan /RV cuando el bit RichText está activado y toman del sistema los fallbacks de fuente Unicode, por lo que el contenido CJK, cirílico, árabe y latino acentuado se muestra correctamente sin que HotPDF incruste una fuente CID en los Resources /DR. Para la ruta propia AutoFormAppearances de HotPDF se mantiene la rama placeholder de AP vacío para texto multibyte (la tarea v2.56.0+); los lectores compatibles con texto enriquecido ignoran ese AP y renderizan directamente desde /RV
FieldName - nombre parcial /T del campo de formulario PDF (debe ser único dentro de su padre). Se aceptan espacios y bytes no ASCII; el contenido no ASCII activa codificación UTF-16BE en la cadena /T emitida
InitialValue - cadena de texto PDF en texto plano escrita en /V y /DV. Los lectores que no analizan /RV usan este valor como fallback para la visualización
RichValue - cuerpo XHTML etiquetado según PDF 1.7 Annex L (la forma más portable empieza con <?xml version="1.0"?> y una raíz XHTML <body> con el atributo de namespace xfa:contentType="text/html"). El estilo inline usa <span style="..."> con propiedades CSS (font-family, font-size, font-weight, font-style, color, etc.)
DefaultStyle - cadena de estilo similar a CSS aplicada a los caracteres que el usuario escribe al rellenar el formulario cuando no hay estilo por carácter en /RV. Ejemplo: 'font: 12pt Helvetica; color: #000000'
Rectangle - /Rect del widget en coordenadas de pantalla de HotPDF (origen arriba a la izquierda); la YProjection ocurre automáticamente cuando el rectángulo se convierte al espacio de usuario PDF
MaxLen - opcional; cuando es mayor que cero, emite una entrada /MaxLen que limita el recuento de caracteres introducidos por el usuario. El valor predeterminado es 0 (sin límite)
Flags - opcional; cualquier flag de campo adicional que se combine con OR en /Ff más allá del bit RichText agregado automáticamente. Flags extra típicos: ffMultiline para cuerpos de texto enriquecido con varios párrafos, ffReadOnly para texto formateado solo de visualización. El flag ffRichText siempre se agrega, por lo que el llamador no necesita incluirlo
Ejemplo de código
// 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;
Véase también
AddTextField, AutoFormAppearances, Version, Soporte AcroForm
|