ReplaceTag
دستکاری صفحه
توضیحات
جستوجو-و-جایگزینی literal روی محتوای متنی صفحهٔ فعلاً انتخابشده انجام میدهد. هر رخداد Tag در عملگرهای نمایش متن صفحه با NewValue جایگزین و استریم عملگر درجا بازنویسی میشود. تعداد جایگزینیهای انجامشده را برمیگرداند
This is a content-stream level operation that does not relate to tagged PDF (structure tree) tagging — use BeginTag/EndTag for that. ReplaceTag is intended for form-letter style templates where placeholder tokens (for example {{customer-name}}) are pre-drawn into a template PDF and then filled in by code.
نحو
Delphi
Function TPDFlib.ReplaceTag(Const Tag, NewValue: WideString): Integer;
ActiveX
Function PDFlib::ReplaceTag(Tag As String, NewValue As String) As Long
DLL
int DLReplaceTag(int InstanceID, const wchar_t * Tag, const wchar_t * NewValue);
پارامترها
| Tag | رشتهٔ تحتاللفظی برای جستوجو در محتوای متنی صفحه. تطبیق به بزرگی و کوچکی حروف حساس است و فقط روی صفحهٔ انتخابشدهٔ فعلی اعمال میشود — هنگام پردازش قالب چندصفحهای، هر صفحه یک بار فراخوانی کنید |
|---|---|
| NewValue | رشتهٔ جایگزین. میتواند از Tag طولانیتر یا کوتاهتر باشد؛ layout اطراف دوباره جریان نمییابد، پس جایگزینیهای بسیار بزرگ میتوانند از ستون اصلی عبور کنند |
مقدار بازگشتی
تعداد دفعاتی که Tag روی صفحهٔ انتخابشده پیدا و جایگزین شد. صفر یعنی هیچ رخدادی پیدا نشد (یا صفحهای انتخاب نشده است)
ملاحظات
فقط متن داخل عملگرهای نمایش متن (Tj، TJ، '، ") جستوجو میشود. Placeholderهایی که kerning شدهاند یا میان چند عملگر شکسته شدهاند ممکن است تطبیق نکنند — placeholderهای قالب را کوتاه نگه دارید و بهصورت یک رشتهٔ واحد ترسیمشان کنید. تابع در محتوای حاشیهنویسیها، مقادیر فیلدهای فرم یا فایلهای جاسازیشده جستوجو نمیکند
syntax مربوط به placeholder را طوری انتخاب کنید که احتمال رخدادنش در محتوای واقعی کم باشد، مانند {{name}}، <<Customer>> یا ~~SKU~~
مثال
// Fill in a single-page invoice template
PDF.LoadFromFile('invoice-template.pdf', '');
PDF.SelectPage(1);
PDF.ReplaceTag('{{customer-name}}', 'Alice Smith');
PDF.ReplaceTag('{{invoice-no}}', 'INV-2026-0042');
PDF.ReplaceTag('{{total}}', '$1,234.56');
PDF.SaveToFile('invoice-INV-2026-0042.pdf');
// Multi-page template: iterate over pages
for I := 1 to PDF.GetPageCount do
begin
PDF.SelectPage(I);
PDF.ReplaceTag('{{customer-name}}', CustomerName);
end;