Tcl Requires Chilkat v11.7.0+
Tcl
What PDF Text Replacement Does Not Change: Metadata, Links, Form Fields
See more PDF Text Replacement Examples
TextReplace changes the page content only. A placeholder that also appears in the document's metadata (the Title, Author, Subject, Keywords, Creator or Producer), in a link's target URL, or in a form field's value is left as it is and reported in "notReplaced" with "where" saying which. The invoice template's title is "Invoice for {{customer}}" and its "View this invoice online" link points at a URL that holds {{customer}}.Chilkat Tcl Downloads
load ./chilkat.dll
set success 0
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# The PDF used in this example is available at invoice_template.pdf
set pdf [new_CkPdf]
set success [CkPdf_LoadFile $pdf "qa_data/pdf/invoice_template.pdf"]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf]
delete_CkPdf $pdf
exit
}
set json [new_CkJsonObject]
CkJsonObject_UpdateString $json "placeholders.customer" "Acme Corp"
# (The other placeholders are left as they are for this example.)
CkJsonObject_UpdateString $json "unusedPlaceholders" "keep"
set jsonOut [new_CkJsonObject]
set success [CkPdf_TextReplace $pdf "apply" $json $jsonOut]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf]
delete_CkPdf $pdf
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
exit
}
puts "In the page content, customer was replaced [CkJsonObject_IntOf $jsonOut {replacements[0].count}] times."
# Where else the placeholder occurs, untouched:
set i 0
set count_i [CkJsonObject_SizeOfArray $jsonOut "notReplaced"]
while {$i < $count_i} {
CkJsonObject_put_I $jsonOut $i
puts "not replaced: {{[CkJsonObject_stringOf $jsonOut {notReplaced[i].field}]}} in [CkJsonObject_stringOf $jsonOut {notReplaced[i].where}]"
set i [expr $i + 1]
}
set success [CkPdf_WriteFile $pdf "qa_output/invoice_customer.pdf"]
if {$success == 0} then {
puts [CkPdf_lastErrorText $pdf]
delete_CkPdf $pdf
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut
exit
}
# Sample output:
# In the page content, customer was replaced 2 times.
# not replaced: {{customer}} in metadata
# not replaced: {{customer}} in linkTarget
delete_CkPdf $pdf
delete_CkJsonObject $json
delete_CkJsonObject $jsonOut