AutoIt Requires Chilkat v11.7.0+
AutoIt
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
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.