THPDFPage.AddRichTextField Method

 

THPDFPage.AddRichTextField

THPDFPage

 

ด้านบน

เพิ่มวิดเจ็ตข้อความประเภทริชเทกต์ของ AcroForm สำหรับ PDF 1.5+ (ISO 32000-1 12.7.4.3 + Annex L) ลงในหน้าปัจจุบัน วิดเจ็ตนี้จะมีค่าทางเลือกข้อความธรรมดามาตรฐาน /V + /DV ที่ใช้โดยโปรแกรมอ่านที่ไม่แยกวิเคราะห์ริชเทกต์ พร้อมด้วยเนื้อหา XHTML สำหรับริชเทกต์ /RV ใหม่ และรายการสไตล์เริ่มต้น /DS ที่ Acrobat และ Foxit เรียกใช้โดยตรงเพื่อแสดงผลข้อความที่มีการจัดรูปแบบ บิต RichText ของ /Ff (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());

 

คำอธิบาย

วิดเจ็ตจะถูกส่งออกเป็นฟิลด์ฟอร์ม Tx ที่มี /FT /Tx, /DA (/Helv 12 Tf 0 0 0 rg), /Ff พร้อมกับตั้งบิต RichText มีการส่งค่า InitialValue ทั้งใน /V และ /DV, RichValue เป็น /RV และ DefaultStyle เป็น /DS ทั้ง InitialValue, RichValue และ DefaultStyle จะตรวจจับเนื้อหาแบบหลายไบต์โดยอัตโนมัติและสลับไปใช้การเข้ารหัสสตริงฐานสิบหก UTF-16BE เมื่อจำเป็น (สอดคล้องกับพฤติกรรมของ AddTextField ที่มีอยู่สำหรับฟิลด์ข้อความธรรมดาระหว่างประเทศ)

การแสดงผลริชเทกต์จะเกิดขึ้นในโปรแกรมอ่าน: โปรแกรมดู PDF ของ Acrobat / Foxit / Edge / Chrome ล้วนแยกวิเคราะห์ /RV เมื่อเปิดบิต RichText และดึงเอาแบบอักษร Unicode สำรองจากระบบมาใช้ ทำให้เนื้อหา CJK, ซีริลลิก, อาหรับ และอักษรละตินที่มีเครื่องหมายกำกับเสียงสามารถแสดงผลได้อย่างถูกต้องโดยที่ HotPDF ไม่จำเป็นต้องฝังแบบอักษร CID ลงใน Resources /DR สำหรับเส้นทาง AutoFormAppearances ของ HotPDF เอง สาขาตัวยึดตำแหน่ง AP ที่ว่างเปล่าสำหรับข้อความหลายไบต์ยังคงอยู่ (งานสำหรับ v2.56.0+) โปรแกรมอ่านที่รองรับริชเทกต์จะละเลย AP นั้นและแสดงผลจาก /RV โดยตรง

 

FieldName - ชื่อบางส่วน /T ของฟิลด์ฟอร์ม PDF (ต้องไม่ซ้ำกันภายในฟิลด์หลัก) ยอมรับช่องว่างและไบต์ที่ไม่ใช่ ASCII ค่าที่ไม่ใช่ ASCII จะทริกเกอร์การเข้ารหัส UTF-16BE บนสตริง /T ที่ส่งออก

InitialValue - สตริงข้อความ PDF แบบข้อความธรรมดาที่เขียนลงใน /V และ /DV โปรแกรมอ่านที่ไม่ได้แยกวิเคราะห์ /RV จะย้อนกลับไปใช้ค่านี้สำหรับการแสดงผล

RichValue - เนื้อหา XHTML ที่มีแท็กตามภาคผนวก L ของ PDF 1.7 (รูปแบบที่เข้ากันได้ดีที่สุดจะเริ่มต้นด้วย <?xml version="1.0"?> และราก XHTML <body> ที่มีแอตทริบิวต์เนมสเปซ xfa:contentType="text/html") รูปแบบอินไลน์ใช้ <span style="..."> พร้อมคุณสมบัติ CSS (font-family, font-size, font-weight, font-style, color เป็นต้น)

DefaultStyle - สตริงรูปแบบคล้าย CSS ที่ใช้กับอักขระที่ผู้ใช้พิมพ์ขณะกรอกข้อมูลเมื่อไม่มีรูปแบบแยกตามอักขระระบุใน /RV ตัวอย่าง: 'font: 12pt Helvetica; color: #000000'

Rectangle - ค่า /Rect ของวิดเจ็ตในพิกัดหน้าจอ HotPDF (จุดกำเนิดบนซ้าย); YProjection จะเกิดขึ้นโดยอัตโนมัติเมื่อแปลงสี่เหลี่ยมผืนผ้าเป็นพื้นที่ผู้ใช้ PDF

MaxLen - ตัวเลือกเสริม; เมื่อมากกว่าศูนย์ จะส่งออกรายการ /MaxLen เพื่อจำกัดจำนวนอักขระที่ผู้ใช้ป้อน ค่าเริ่มต้นคือ 0 (ไม่มีการจำกัด)

Flags - ตัวเลือกเสริม; แฟล็กฟิลด์เพิ่มเติมใดๆ ที่จะดำเนินการ OR เข้าไปใน /Ff นอกเหนือจากบิต RichText ที่เพิ่มโดยอัตโนมัติ แฟล็กเพิ่มเติมทั่วไป: 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;

 

ดูเพิ่มเติม

AddTextField, AutoFormAppearances, Version, AcroForm Support