Sample code for 30+ languages & platforms
PowerShell 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 PowerShell Downloads

PowerShell
Add-Type -Path "C:\chilkat\ChilkatDotNet47-x64\ChilkatDotNet47.dll"

$success = $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

$pdf = New-Object Chilkat.Pdf
$success = $pdf.LoadFile("qa_data/pdf/packing_slip.pdf")
if ($success -eq $false) {
    $($pdf.LastErrorText)
    exit
}

$json = New-Object Chilkat.JsonObject
$jsonOut = New-Object Chilkat.JsonObject

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

#  "below" means the value is the block of text directly under the label.
$json.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.
$json.UpdateString("layout","lines")

$success = $pdf.ExtractText("text",$json,$jsonOut)
if ($success -eq $false) {
    $($pdf.LastErrorText)
    exit
}

$("Ship To:")
$($jsonOut.StringOf("text"))
$("")

$json.UpdateString("label","Bill To")
$success = $pdf.ExtractText("text",$json,$jsonOut)
if ($success -eq $false) {
    $($pdf.LastErrorText)
    exit
}

$("Bill To:")
$($jsonOut.StringOf("text"))
$("")

#  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.
$json.UpdateString("label","Special Instructions")
$json.UpdateString("layout","flow")
$success = $pdf.ExtractText("text",$json,$jsonOut)
if ($success -eq $false) {
    $($pdf.LastErrorText)
    exit
}

$("Special Instructions:")
$($jsonOut.StringOf("text"))

#  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.