|
یک ویجت متن غنی AcroForm در PDF 1.5+ را به صفحهٔ فعلی اضافه میکند (ISO 32000-1 12.7.4.3 + Annex L) ویجت شامل جایگزین متنی استاندارد /V + /DV برای خوانندگانی است که rich text را تجزیه نمیکنند، بههمراه بدنهٔ XHTML متن غنی /RV و ورودیهای سبک پیشفرض /DS که Acrobat و Foxit مستقیماً برای نمایش متن قالببندیشده مصرف میکنند. بیت RichText در /Ff (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)، /Ff با بیت RichText فعال، InitialValue دادهشده بهعنوان هر دو /V و /DV، RichValue بهعنوان /RV، و DefaultStyle بهعنوان /DS صادر میشود. InitialValue، RichValue و DefaultStyle محتوای چندبایتی را بهطور خودکار تشخیص میدهند و هر زمان لازم باشد به کدگذاری رشتهٔ هگز UTF-16BE سوییچ میکنند، مطابق رفتار موجود AddTextField برای فیلدهای متنی بینالمللی
نمایش متن غنی در خواننده انجام میشود: Acrobat، Foxit، Edge و نمایشگر PDF در Chrome همگی وقتی بیت RichText روشن است /RV را تجزیه میکنند و جایگزینهای فونت Unicode را از سیستم برمیدارند، بنابراین محتوای CJK، سیریلیک، عربی و لاتینِ دارای اَکسان بدون نیاز به جاسازی فونت CID در منابع /DR توسط HotPDF درست نمایش داده میشود. در مسیر AutoFormAppearances خود HotPDF شاخهٔ جاینگهدارِ AP خالی برای متن چندبایتی همچنان باقی میماند (وظیفهٔ v2.56.0+)؛ خوانندههای آگاه به rich text آن AP را نادیده میگیرند و مستقیماً از /RV نمایش میدهند
FieldName - نام جزئی /T فیلد فرم PDF (باید در parent خود یکتا باشد) فاصلهها و بایتهای غیر ASCII پذیرفته میشوند؛ غیر ASCII باعث کدگذاری UTF-16BE در رشتهٔ /T صادرشده میشود
InitialValue - رشتهٔ متنی سادهٔ PDF که در /V و /DV نوشته میشود. خوانندگانی که /RV را تجزیه نمیکنند برای نمایش به این مقدار بازمیگردند
RichValue - بدنهٔ XHTML برچسبدار در Annex L از PDF 1.7 (سازگارترین شکل با <?xml version="1.0"?> شروع میشود و یک ریشهٔ <body> XHTML دارد که ویژگی فضای نام 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 با مبدأ بالا-چپ؛ تبدیل Y بهصورت خودکار هنگام تبدیل مستطیل به فضای کاربر PDF انجام میشود
MaxLen - اختیاری؛ وقتی بزرگتر از صفر باشد، یک ورودی /MaxLen صادر میکند که تعداد نویسهٔ واردشده توسط کاربر را محدود میکند. مقدار پیشفرض 0 است، یعنی بدون محدودیت
Flags - اختیاری؛ هر پرچم اضافی فیلد که باید فراتر از بیت RichTextِ خودکار در /Ff OR شود. پرچمهای اضافی رایج: ffMultiline برای بدنههای rich text چندپاراگرافی، 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.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
|