THPDFPage.AddRichTextField 메서드

 

THPDFPage.AddRichTextField

THPDFPage

 

Top

현재 페이지에 PDF 1.5+ AcroForm 리치 텍스트 입력 위젯(ISO 32000-1 12.7.4.3 + Annex L)을 추가합니다. 이 위젯은 리치 텍스트를 해석하지 못하는 리더를 위한 표준 /V + /DV 일반 텍스트 fallback과, Acrobat과 Foxit이 스타일이 적용된 텍스트를 렌더링할 때 직접 사용하는 새로운 /RV 리치 텍스트 XHTML 본문 및 /DS 기본 스타일 항목을 함께 가집니다. /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());

 

Description

이 위젯은 /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), RichText 비트가 설정된 /Ff를 가진 Tx 폼 필드로 기록되며, 전달한 InitialValue는 /V와 /DV 모두에, RichValue는 /RV에, DefaultStyle은 /DS에 들어갑니다. InitialValue, RichValue, DefaultStyle은 멀티바이트 콘텐츠를 자동으로 감지해 필요하면 UTF-16BE hex 문자열 인코딩으로 전환합니다(국제 문자가 들어가는 일반 텍스트 필드에 대한 기존 AddTextField 동작과 동일)

리치 텍스트 렌더링은 리더가 담당합니다. RichText 비트가 켜져 있으면 Acrobat / Foxit / Edge / Chrome PDF 뷰어 모두 /RV를 파싱하고 시스템의 유니코드 폰트 fallback을 사용하므로, HotPDF가 /DR 리소스에 CID 폰트를 임베드하지 않아도 CJK, 키릴, 아랍, 악센트가 붙은 라틴 문자가 올바르게 표시됩니다. HotPDF 자체의 AutoFormAppearances 경로에서는 멀티바이트 텍스트용 placeholder 빈 AP 분기가 그대로 남아 있으며(v2.56.0+ 과제), 리치 텍스트를 지원하는 리더는 그 AP를 무시하고 /RV에서 직접 렌더링합니다

 

FieldName - PDF 폼 필드의 /T 부분 이름(부모 안에서 고유해야 함). 공백과 non-ASCII 바이트도 사용할 수 있으며, non-ASCII이면 기록되는 /T 문자열이 UTF-16BE로 인코딩됩니다

InitialValue - /V와 /DV에 기록되는 일반 텍스트 PDF 텍스트 문자열. /RV를 파싱하지 않는 리더는 표시할 때 이 값으로 fallback합니다

RichValue - PDF 1.7 Annex L의 tagged XHTML 본문(가장 이식성이 좋은 형태는 <?xml version="1.0"?>로 시작하고, XHTML <body> 루트에 xfa:contentType="text/html" 네임스페이스 속성을 지정). 인라인 스타일은 <span style="...">에 CSS 속성(font-family, font-size, font-weight, font-style, color 등)을 넣어 지정합니다

DefaultStyle - /RV에 문자별 스타일이 없을 때, 사용자가 폼을 채우며 입력하는 문자에 적용되는 CSS 방식의 스타일 문자열. 예: 'font: 12pt Helvetica; color: #000000'

Rectangle - HotPDF 화면 좌표(좌상단 원점)로 지정하는 위젯의 /Rect. rect를 PDF 사용자 공간으로 변환할 때 YProjection이 자동으로 적용됩니다

MaxLen - 선택 사항. 0보다 크면 사용자가 입력하는 문자 수를 제한하는 /MaxLen 항목을 기록합니다. 기본값은 0(제한 없음)

Flags - 선택 사항. 자동으로 추가되는 RichText 비트 외에 /Ff에 OR할 추가 필드 플래그. 대표적인 추가 플래그로, 여러 문단의 리치 텍스트 본문에는 ffMultiline, 표시 전용 서식 텍스트에는 ffReadOnly가 있습니다. ffRichText 플래그는 항상 추가되므로 호출자가 포함할 필요가 없습니다

 

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;

 

See Also

AddTextField, AutoFormAppearances, Version, AcroForm Support