Sample code for 30+ languages & platforms
Xojo Plugin Requires Chilkat v11.7.0+

Search for Text in a PDF

See more PDF Text Extraction Examples

Demonstrates the "search" operation, which finds every occurrence of a string in a PDF and returns each match with its page number and the text around it. Matching ignores case unless caseSensitive is true.

Chilkat Xojo Plugin Downloads

Xojo Plugin
Dim success As Boolean
success = False

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

//  The three-page PDF used in this example is available at search_context.pdf

Dim pdf As New Chilkat.Pdf
success = pdf.LoadFile("qa_data/pdf/search_context.pdf")
If (success = False) Then
    System.DebugLog(pdf.LastErrorText)
    Return
End If

Dim json As New Chilkat.JsonObject
Dim jsonOut As New Chilkat.JsonObject

//  The string to find.
success = json.UpdateString("query","chilkat")

//  The number of characters returned before and after each match.  The default is 40.
success = json.UpdateInt("context",30)

success = pdf.ExtractText("search",json,jsonOut)
If (success = False) Then
    System.DebugLog(pdf.LastErrorText)
    Return
End If

//  "count" is the number of matches.  Each match has the page, the matched text as it appears
//  in the PDF, and the text before and after it.
System.DebugLog("Matches: " + Str(jsonOut.IntOf("count")))

Dim i As Int32
i = 0
Dim count_i As Int32
count_i = jsonOut.SizeOfArray("matches")
While i < count_i
    jsonOut.I = i
    System.DebugLog("page " + Str(jsonOut.IntOf("matches[i].page")) + ": ..." + jsonOut.StringOf("matches[i].before") + "[" + jsonOut.StringOf("matches[i].text") _
         + "]" + jsonOut.StringOf("matches[i].after") + "...")
    i = i + 1
Wend

//  The search ignores case by default.  Set caseSensitive to find only the exact spelling.
success = json.UpdateBool("caseSensitive",True)
success = json.UpdateString("query","Chilkat")
success = pdf.ExtractText("search",json,jsonOut)
If (success = False) Then
    System.DebugLog(pdf.LastErrorText)
    Return
End If

System.DebugLog("Case-sensitive matches for Chilkat: " + Str(jsonOut.IntOf("count")))

//  Sample output:

//  Matches: 5
//  page 1: ...[Chilkat] River Field Notes The Chilkat...
//  page 1: ...Chilkat River Field Notes The [Chilkat] River runs for about fifty mi...
//  page 2: ...DAY ONE: UPPER [CHILKAT] FLATS Clear and cold, minus e...
//  page 2: ...he river is sometimes spelled [chilkat] in older records, and the val...
//  page 3: ...y because the fish run on the [Chilkat] was thinning. Two tagged bird...
//  Case-sensitive matches for Chilkat: 3