ReplaceTag
Thao tác trang
Mô tả
Thực hiện tìm-và-thay thế literal trên nội dung chữ của trang đang chọn. Mọi chỗ xuất hiện Tag trong các toán tử hiển thị chữ của trang được thay bằng NewValue và stream toán tử được ghi lại ngay tại chỗ. Trả về số lần thay thế đã thực hiện
Đây là thao tác mức luồng nội dung, không liên quan đến việc gắn thẻ PDF gắn thẻ (cây cấu trúc) – việc đó hãy dùng BeginTag/EndTag. ReplaceTag dành cho các mẫu kiểu thư hàng loạt, nơi các token placeholder (ví dụ {{customer-name}}) được vẽ sẵn trong tệp PDF mẫu rồi được code điền vào.
Cú pháp
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);
Tham số
| Tag | Chuỗi literal cần tìm trong nội dung văn bản của trang. Việc khớp phân biệt chữ hoa chữ thường và chỉ áp dụng cho trang đang chọn – khi xử lý mẫu nhiều trang, hãy gọi mỗi trang một lần. |
|---|---|
| NewValue | Chuỗi thay thế. Có thể dài hơn hoặc ngắn hơn Tag; bố cục xung quanh không được reflow, nên thay thế quá lớn có thể chạy tràn cột gốc |
Giá trị trả về
Số lần Tag được tìm thấy và thay thế trên trang đang chọn. Bằng 0 nghĩa là không tìm thấy chỗ nào (hoặc không có trang nào đang chọn)
Ghi chú
Chỉ văn bản nằm trong các toán tử hiển thị văn bản (Tj, TJ, ', ") được tìm kiếm. Placeholder đã bị kern hoặc tách qua nhiều toán tử có thể không khớp — hãy giứ placeholder mẫu ngắn và vẽ chúng như một chuỗi duy nhất. Hàm không tìm trong nội dung annotation, giá trị trường biểu mẫu hay file nhúng.
Hãy chọn cú pháp placeholder khó xảy ra trong nội dung thật, như {{name}}, <<Customer>> hay ~~SKU~~
Ví dụ
// 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;