|
PDF 1.5 以降の AcroForm リッチテキストテキストウィジェット (ISO 32000-1 12.7.4.3 + Annex L) を現在のページに追加します。このウィジェットは、リッチテキストを解析しないリーダーで使用される標準の /V + /DV プレーンテキストフォールバックと、Acrobat および Foxit がスタイル付きテキストをレンダリングするために直接消費する新しい /RV リッチテキスト XHTML ボディおよび /DS デフォルトスタイルエントリを保持します。/Ff RichText ビット (26) は自動的に OR 演算されます。
Delphi 構文:
procedure AddRichTextField(const FieldName, InitialValue: AnsiString; const RichValue, DefaultStyle: AnsiString; Rectangle: TRect; MaxLen: Integer = 0; Flags: THPDFFormFieldFlags = []);
C++ 構文:
void AddRichTextField(const AnsiString& FieldName, const AnsiString& InitialValue, const AnsiString& RichValue, const AnsiString& DefaultStyle, const TRect& Rectangle, int MaxLen = 0, THPDFFormFieldFlags Flags = THPDFFormFieldFlags());
説明
ウィジェットは Tx フォームフィールドとして出力されます。/FT /Tx、/DA (/Helv 12 Tf 0 0 0 rg)、RichText ビットを立てた /Ff、指定した InitialValue を /V と /DV の両方に、RichValue を /RV に、DefaultStyle を /DS に書き出します。InitialValue、RichValue、DefaultStyle はマルチバイト文字を自動検出し、必要に応じて UTF-16BE の 16 進文字列エンコードに切り替えます(国際化されたプレーンテキストフィールド向けの既存の AddTextField の動作と同じです)
リッチテキストのレンダリングはリーダーで行われます。Acrobat / Foxit / Edge / Chrome の PDF ビューアーはすべて、RichText ビットがオンのときに /RV を解析し、システムから Unicode フォントのフォールバックを取得します。そのため、HotPDF が /DR Resources に CID フォントを埋め込まなくても、CJK、キリル文字、アラビア語、およびアクセント付きのラテン文字のコンテンツは正しく表示されます。HotPDF 独自の AutoFormAppearances パスについては、マルチバイトテキスト用のプレースホルダーの空の AP ブランチが引き続き配置されます (v2.56.0 以降のタスク)。リッチテキスト対応のリーダーはその AP を無視し、/RV から直接レンダリングします。
FieldName - PDF フォームフィールドの /T 部分名 (親内で一意である必要があります)。スペースと非 ASCII バイトが受け入れられます。非 ASCII は、出力される /T 文字列に対して UTF-16BE エンコーディングをトリガーします。
InitialValue - /V と /DV に書き出されるプレーンテキストの PDF テキスト文字列。/RV をパースしないリーダーは、表示にこの値へフォールバックします
RichValue - PDF 1.7 Annex L のタグ付き 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。四角形が PDF ユーザースペースに変換されるときに Y 投影が自動的に行われます。
MaxLen - オプション。ゼロより大きい場合、ユーザーが入力した文字数を制限する /MaxLen エントリを出力します。デフォルトは 0 (無制限) です。
Flags - 省略可能。自動的に加えられる RichText ビット以外に、/Ff へ OR で追加するフィールドフラグ。代表的な追加フラグは、複数段落のリッチテキスト本体向けの ffMultiline と、表示専用の書式付きテキスト向けの ffReadOnly です。ffRichText フラグは常に追加されるため、呼び出し側で含める必要はありません
コード例
// 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.トップへ := 60; R.Right := 280; R.Bottom := 100;
HPDF.CurrentPage.AddRichTextField(
'Biography', 'Plain biography text', Rich, DS, R);
HPDF.EndDoc;
end;
関連項目
AddTextField, AutoFormAppearances, バージョン, AcroForm サポート
|