ReplaceTagA
頁面操作
描述
結尾的 A 表示 ANSI(char)DLL 進入點,ActiveX/COM 介面僅公開 Unicode 形式。其行為與 ReplaceTag 相同,字串引數會依據目前的 SetAnsiMode 字碼頁進行解譯
對目前所選頁面的文字內容做字面查找替換。頁面文字顯示運算子中每個 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 DLReplaceTagA(InstanceID: Integer; Tag, NewValue: PAnsiChar): Integer;
DLL
int DLReplaceTagA(int InstanceID, const char * Tag, const char * NewValue);
參數
| Tag | 要在頁面文字內容中搜尋的字面字串。比對區分大小寫,且只適用於目前選取的頁面 — 處理多頁 template 時,每頁呼叫一次。 |
|---|---|
| NewValue | 替換字串。可以比 Tag 長或短;周圍版面不會重排,因此過大的替換內容可能超出原本的欄寬。 |
傳回值
Tag 在所選頁面上被找到並取代的次數。零表示沒有找到任何出現處(或未選取頁面)。
備註
只搜尋文字顯示運算子(Tj、TJ、'、")內的文字。經過 kerning 或被拆到多個運算子的 placeholder 可能比對不到 — template 的 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;