ReplaceTag
Manipulácia so stránkami
Opis
Vykoná doslovné nájdi-a-nahraď nad textovým obsahom aktuálne vybranej strany. Každý výskyt Tag v text-zobrazujúcich operátoroch strany sa nahradí NewValue a stream operátorov sa prepíše na mieste. Vracia počet vykonaných substitúcií.
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.
Syntax
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);
Parametre
| Tag | Doslovný reťazec, ktorý sa má hľadať v textovom obsahu strany. Hľadanie rozlišuje veľkosť písmen a týka sa iba aktuálne vybranej strany — pri spracovaní viacstranového templateu volajte raz na stranu. |
|---|---|
| NewValue | Náhradný reťazec. Môže byť dlhší alebo kratší než Tag; okolité rozloženie sa neprelomí znovu, takže veľmi veľké substitúcie môžu presiahnuť pôvodný stĺpec. |
Návratová hodnota
Koľkokrát sa Tag na vybranej strane našiel a nahradil. Nula znamená, že sa nenašli žiadne výskyty (alebo nie je vybraná žiadna strana).
Poznámky
Hľadá sa iba text vo vnútri operátorov zobrazujúcich text (Tj, TJ, ', "). Placeholdery, ktoré prešli kerningom alebo boli rozdelené medzi viac operátorov, sa nemusia nájsť — placeholdery v template držte krátke a kreslite ich ako jeden reťazec. Funkcia nehľadá v obsahoch anotácií, hodnotách formulárových polí ani vo vložených súboroch.
Choose placeholder syntax that is unlikely to occur in real content, such as {{name}}, <<Customer>>, or ~~SKU~~.
Príklad
// 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;