Delphi DLL Requires Chilkat v11.7.0+
Delphi DLL
A PDF Label That Is Not on the Page: notFound or Ignore
See more PDF Text Replacement Examples
Demonstrates the "unmatchedValues" option. A label or placeholder given a value but not found on the selected pages is a problem with the reason notFound, which stops "apply", because a missing label usually means the wrong document or a typo in the label. With unmatchedValues "ignore" such a value is skipped and the rest is applied -- the right choice when one set of values serves several document layouts.Chilkat Delphi DLL Downloads
var
success: Boolean;
pdf: HCkPdf;
json: HCkJsonObject;
jsonOut: HCkJsonObject;
begin
success := False;
// 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_labels.pdf
pdf := CkPdf_Create();
success := CkPdf_LoadFile(pdf,'qa_data/pdf/invoice_labels.pdf');
if (success = False) then
begin
Memo1.Lines.Add(CkPdf__lastErrorText(pdf));
Exit;
end;
json := CkJsonObject_Create();
jsonOut := CkJsonObject_Create();
// "Tracking Number:" is not on this invoice.
CkJsonObject_UpdateString(json,'labels[0].label','Invoice Number:');
CkJsonObject_UpdateString(json,'labels[0].value','INV-2026-0500');
CkJsonObject_UpdateString(json,'labels[1].label','Tracking Number:');
CkJsonObject_UpdateString(json,'labels[1].value','1Z999AA10123456784');
success := CkPdf_TextReplace(pdf,'check',json,jsonOut);
if (success = False) then
begin
Memo1.Lines.Add(CkPdf__lastErrorText(pdf));
Exit;
end;
Memo1.Lines.Add('default: ok = ' + IntToStr(Ord(CkJsonObject_BoolOf(jsonOut,'ok'))) + ', problem: "' + CkJsonObject__stringOf(jsonOut,'problems[0].label') + '" '
+ CkJsonObject__stringOf(jsonOut,'problems[0].reason'));
// With "ignore", the label that is not there is skipped.
CkJsonObject_UpdateString(json,'unmatchedValues','ignore');
success := CkPdf_TextReplace(pdf,'apply',json,jsonOut);
if (success = False) then
begin
Memo1.Lines.Add(CkPdf__lastErrorText(pdf));
Exit;
end;
Memo1.Lines.Add('ignore: applied = ' + IntToStr(Ord(CkJsonObject_BoolOf(jsonOut,'applied'))) + ', replacements: ' + IntToStr(CkJsonObject_SizeOfArray(jsonOut,'replacements')));
success := CkPdf_WriteFile(pdf,'qa_output/invoice_renumbered.pdf');
if (success = False) then
begin
Memo1.Lines.Add(CkPdf__lastErrorText(pdf));
Exit;
end;
// Sample output:
// default: ok = false, problem: "Tracking Number:" notFound
// ignore: applied = true, replacements: 1
CkPdf_Dispose(pdf);
CkJsonObject_Dispose(json);
CkJsonObject_Dispose(jsonOut);