Sample code for 30+ languages & platforms
React Native Requires Chilkat v11.7.0+

Get Every Occurrence of a Label in a PDF

See more PDF Text Extraction Examples

Demonstrates the "labelOccurrence" option. When the same label appears more than once (for example "Total:" on each of several receipts), "first" (the default) uses the first occurrence, "all" returns every occurrence with its page, and a number selects one occurrence.

Chilkat React Native Downloads

React Native
import { JsonObject, Pdf } from '@chilkat/react-native'

function chilkatExample() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  // The PDF used in this example (three receipts, one per page) is available at three_receipts.pdf

  const pdf = new Pdf();
  try {
    pdf.loadFile('qa_data/pdf/three_receipts.pdf');
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  const json = new JsonObject();
  const jsonOut = new JsonObject();

  // Each of the three pages is a receipt with a "Total:" line.
  json.updateString('label', 'Total');
  json.updateString('labelValue', 'right');

  // By default only the first occurrence (in reading order) is used.
  try {
    pdf.extractText('text', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  console.log(`First total: ${jsonOut.stringOf('text')}`);

  // labelOccurrence "all" returns every occurrence.  The "text" member holds the values joined
  // by line breaks, and labelMatches has one entry per occurrence with its page.
  json.updateString('labelOccurrence', 'all');
  try {
    pdf.extractText('text', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  let i = 0;
  const countI = jsonOut.sizeOfArray('labelMatches');
  while (i < countI) {
    jsonOut.i = i;
    console.log(`Page ${jsonOut.intOf('labelMatches[i].page')} total: ${jsonOut.stringOf('labelMatches[i].text')}`);
    i++;
  }

  // A number selects one occurrence: 2 is the second.
  json.updateInt('labelOccurrence', 2);
  try {
    pdf.extractText('text', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  console.log(`Second total: ${jsonOut.stringOf('text')}`);

  // The occurrences are counted over the selected pages, so combining "pages" with the label
  // is another way to pick one receipt:
  json.updateString('labelOccurrence', 'first');
  json.updateString('pages', '3');
  json.updateString('label', 'Receipt No.');
  try {
    pdf.extractText('text', json, jsonOut);
  } catch {
    console.log(pdf.lastErrorText);
    return;
  }

  console.log(`Receipt number on page 3: ${jsonOut.stringOf('text')}`);

  // Sample output:

  // First total: $19.86
  // Page 1 total: $19.86
  // Page 2 total: $17.34
  // Page 3 total: $23.62
  // Second total: $17.34
  // Receipt number on page 3: 1003
}