Perl Requires Chilkat v11.7.0+
Perl
Search a PDF with a Regular Expression
See more PDF Text Extraction Examples
Demonstrates searching a PDF with a regular expression (regex: true), limiting the number of results (maxResults), and matching whole words only (wholeWord).Chilkat Perl Downloads
use chilkat();
$success = 0;
# This example requires the Chilkat API to have been previously unlocked.
# See Global Unlock Sample for sample code.
# The PDF used in this example is available at order_records.pdf
$pdf = chilkat::CkPdf->new();
$success = $pdf->LoadFile("qa_data/pdf/order_records.pdf");
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
$json = chilkat::CkJsonObject->new();
$jsonOut = chilkat::CkJsonObject->new();
# Find every order number. With regex set to true, the query is a regular expression.
$json->UpdateString("query","ORD-[0-9]{4}-[0-9]{4}");
$json->UpdateBool("regex",1);
# We only want the matched text, so no context is needed.
$json->UpdateInt("context",0);
$success = $pdf->ExtractText("search",$json,$jsonOut);
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
print "Order numbers found: " . $jsonOut->IntOf("count") . "\r\n";
$i = 0;
$count_i = $jsonOut->SizeOfArray("matches");
while ($i < $count_i) {
$jsonOut->put_I($i);
print $jsonOut->stringOf("matches[i].text") . "\r\n";
$i = $i + 1;
}
# Find the e-mail addresses, but stop after the first three.
$json->UpdateString("query",'[a-z0-9._]+@[a-z]+[.][a-z]+');
$json->UpdateInt("maxResults",3);
$success = $pdf->ExtractText("search",$json,$jsonOut);
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
print "First three e-mail addresses:" . "\r\n";
$i = 0;
$count_i = $jsonOut->SizeOfArray("matches");
while ($i < $count_i) {
$jsonOut->put_I($i);
print $jsonOut->stringOf("matches[i].text") . "\r\n";
$i = $i + 1;
}
# wholeWord: true matches only whole words. The word "cat" appears once in the PDF,
# but it is also inside "catalog" and "category".
$json->Delete("maxResults");
$json->UpdateBool("regex",0);
$json->UpdateString("query","cat");
$success = $pdf->ExtractText("search",$json,$jsonOut);
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
print "Occurrences of cat (any): " . $jsonOut->IntOf("count") . "\r\n";
$json->UpdateBool("wholeWord",1);
$success = $pdf->ExtractText("search",$json,$jsonOut);
if ($success == 0) {
print $pdf->lastErrorText() . "\r\n";
exit;
}
print "Occurrences of cat (whole word): " . $jsonOut->IntOf("count") . "\r\n";
# Sample output:
# Order numbers found: 9
# ORD-2026-0301
# ORD-2026-0302
# ORD-2026-0303
# ORD-2026-0304
# ORD-2026-0305
# ORD-2026-0306
# ORD-2026-0307
# ORD-2026-0308
# ORD-2026-0307
# First three e-mail addresses:
# alice.moore@example.com
# bkumar@example.org
# carla@example.net
# Occurrences of cat (any): 3
# Occurrences of cat (whole word): 1