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

Clipped, Off-Page and White-on-White Text in PDF Extraction

See more PDF Text Extraction Examples

Demonstrates the "clippedText", "offPageText" and "obscuredText" filters. Text that a reader never sees - hidden by a clipping path, outside the crop box, or drawn in the same color as the box beneath it - is excluded by default, and the quality report notes what was skipped. Each kind can be included.

Chilkat Visual FoxPro Downloads

Visual FoxPro
LOCAL lnSuccess
LOCAL loPdf
LOCAL loJson
LOCAL loJsonOut
LOCAL i
LOCAL lnCount_i

lnSuccess = 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 hidden_text.pdf

loPdf = CreateObject('Chilkat.Pdf')
lnSuccess = loPdf.LoadFile("qa_data/pdf/hidden_text.pdf")
IF (lnSuccess = 0) THEN
    ? loPdf.LastErrorText
    RELEASE loPdf
    CANCEL
ENDIF

loJson = CreateObject('Chilkat.JsonObject')
loJsonOut = CreateObject('Chilkat.JsonObject')

*  The page has a visible paragraph plus three hidden lines: one drawn outside its clipping
*  rectangle, one below the crop box, and one in white on a white box.
lnSuccess = loPdf.ExtractText("text",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
    ? loPdf.LastErrorText
    RELEASE loPdf
    RELEASE loJson
    RELEASE loJsonOut
    CANCEL
ENDIF

? "---- default ----"
? loJsonOut.StringOf("text")

*  The quality report says what was left out.
i = 0
lnCount_i = loJsonOut.SizeOfArray("quality.pages[0].issues")
DO WHILE i < lnCount_i
    loJsonOut.I = i
    ? "issue: " + loJsonOut.StringOf("quality.pages[0].issues[i].code")
    i = i + 1
ENDDO

*  Include everything.
loJson.UpdateString("clippedText","include")
loJson.UpdateString("offPageText","include")
loJson.UpdateString("obscuredText","include")
lnSuccess = loPdf.ExtractText("text",loJson,loJsonOut)
IF (lnSuccess = 0) THEN
    ? loPdf.LastErrorText
    RELEASE loPdf
    RELEASE loJson
    RELEASE loJsonOut
    CANCEL
ENDIF

? "---- clippedText, offPageText, obscuredText: include ----"
? loJsonOut.StringOf("text")

*  Sample output:

*  ---- default ----
*  Visible Text
*  
*  This paragraph is visible. The page also carries three kinds of text a reader never sees.
*  
*  End of the visible text.
*  issue: obscuredTextSkipped
*  issue: clippedTextSkipped
*  ---- clippedText, offPageText, obscuredText: include ----
*  Visible Text
*  
*  This paragraph is visible. The page also carries three kinds of text a reader never sees.
*  
*  CLIPPED: this line is drawn outside its clipping rectangle.
*  
*  OBSCURED: this line is white on a white box.
*  
*  End of the visible text.
*  
*  OFFPAGE: this line sits below the crop box.

RELEASE loPdf
RELEASE loJson
RELEASE loJsonOut