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

Get the Text Block Below a PDF Caption

See more PDF Text Extraction Examples

Demonstrates the "label" option with labelValue "below", which captures the block of text directly under a caption such as "Ship To", ending at the next gap or heading. Combined with layout "lines", the lines of an address block are kept separate.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

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

;  The packing slip used in this example is available at packing_slip.pdf

$oPdf = ObjCreate("Chilkat.Pdf")
$bSuccess = $oPdf.LoadFile("qa_data/pdf/packing_slip.pdf")
If ($bSuccess = False) Then
    ConsoleWrite($oPdf.LastErrorText & @CRLF)
    Exit
EndIf

$oJson = ObjCreate("Chilkat.JsonObject")
$oJsonOut = ObjCreate("Chilkat.JsonObject")

;  The packing slip has the captions "Bill To" and "Ship To" side by side,
;  each with an address block below it.
$oJson.UpdateString("label","Ship To")

;  "below" means the value is the block of text directly under the label.
$oJson.UpdateString("labelValue","below")

;  With the default "flow" layout the lines of the block would be joined into one paragraph.
;  "lines" keeps each line of the address on its own line.
$oJson.UpdateString("layout","lines")

$bSuccess = $oPdf.ExtractText("text",$oJson,$oJsonOut)
If ($bSuccess = False) Then
    ConsoleWrite($oPdf.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("Ship To:" & @CRLF)
ConsoleWrite($oJsonOut.StringOf("text") & @CRLF)
ConsoleWrite("" & @CRLF)

$oJson.UpdateString("label","Bill To")
$bSuccess = $oPdf.ExtractText("text",$oJson,$oJsonOut)
If ($bSuccess = False) Then
    ConsoleWrite($oPdf.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("Bill To:" & @CRLF)
ConsoleWrite($oJsonOut.StringOf("text") & @CRLF)
ConsoleWrite("" & @CRLF)

;  A caption over a short paragraph works the same way.  Here the flow layout is better,
;  because the two lines are one piece of text.
$oJson.UpdateString("label","Special Instructions")
$oJson.UpdateString("layout","flow")
$bSuccess = $oPdf.ExtractText("text",$oJson,$oJsonOut)
If ($bSuccess = False) Then
    ConsoleWrite($oPdf.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("Special Instructions:" & @CRLF)
ConsoleWrite($oJsonOut.StringOf("text") & @CRLF)

;  Sample output:

;  Ship To:
;  Frank Delgado
;  c/o Harbor Pet Boarding
;  9 Ferry Lane
;  Portside, WA 98001
;  
;  Bill To:
;  Frank Delgado
;  Apartment 3B
;  41 Mill Street
;  Portside, WA 98000
;  
;  Special Instructions:
;  Leave the carton with the boarding office if no one answers. Do not leave it outside; the cat tree is not packed for rain.