Visual FoxPro Requires Chilkat v11.7.0+
Visual FoxPro
PDF to Markdown Options: Page Breaks, Images, Tables, Emphasis, Heading Levels
See more PDF Text Extraction Examples
Demonstrates the options of the "markdown" operation: pageBreaks (comment, rule or none), images (placeholder or none), tables (ruled or none), emphasis, and maxHeadingLevel.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loPdf
LOCAL loJson
LOCAL loSbMarkdown
LOCAL loJsonOut
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
* The two-page PDF used in this example is available at markdown_options.pdf
loPdf = CreateObject('Chilkat.Pdf')
lnSuccess = loPdf.LoadFile("qa_data/pdf/markdown_options.pdf")
IF (lnSuccess = 0) THEN
? loPdf.LastErrorText
RELEASE loPdf
CANCEL
ENDIF
loJson = CreateObject('Chilkat.JsonObject')
loSbMarkdown = CreateObject('Chilkat.StringBuilder')
loJsonOut = CreateObject('Chilkat.JsonObject')
* First with the default options.
lnSuccess = loPdf.ExtractTextSb("markdown",loJson,loSbMarkdown,loJsonOut)
IF (lnSuccess = 0) THEN
? loPdf.LastErrorText
RELEASE loPdf
RELEASE loJson
RELEASE loSbMarkdown
RELEASE loJsonOut
CANCEL
ENDIF
? "---- default options ----"
? loSbMarkdown.GetAsString()
* Now change the options:
* pageBreaks: "comment" (the default) separates pages with <!-- page N -->,
* "rule" separates them with a horizontal rule (---), and "none" runs the pages together.
loJson.UpdateString("pageBreaks","rule")
* images: "placeholder" (the default) marks where each image sits with ;
* "none" leaves images out.
loJson.UpdateString("images","none")
* tables: "ruled" (the default) converts tables that have drawn cell borders into Markdown tables;
* "none" returns their cells as plain text.
loJson.UpdateString("tables","none")
* emphasis: false leaves out the ** and * markers for bold and italic.
loJson.UpdateBool("emphasis",0)
* maxHeadingLevel: inferred headings deeper than this level are folded into this level.
* The PDF has three heading levels; with maxHeadingLevel 2 the third level becomes ##.
loJson.UpdateInt("maxHeadingLevel",2)
loSbMarkdown.Clear()
lnSuccess = loPdf.ExtractTextSb("markdown",loJson,loSbMarkdown,loJsonOut)
IF (lnSuccess = 0) THEN
? loPdf.LastErrorText
RELEASE loPdf
RELEASE loJson
RELEASE loSbMarkdown
RELEASE loJsonOut
CANCEL
ENDIF
? "---- custom options ----"
? loSbMarkdown.GetAsString()
* Sample output:
* ---- default options ----
* <!-- page 1 -->
*
* # Community Garden Handbook
*
* ## Plots
*
* ### Plot Sizes
*
* Plots come in two sizes. A **full plot** is twenty feet by ten feet; a **half plot** is ten feet square. New gardeners are *strongly encouraged* to start with a half plot.
*
* 
*
* ### Plot Fees
*
* | Plot | Size | Annual Fee |
* | --- | --- | --- |
* | Full | 20 x 10 ft | $60 |
* | Half | 10 x 10 ft | $35 |
*
* <!-- page 2 -->
*
* ## Watering
*
* ### Schedule
*
* The shared tanks are filled on Monday and Thursday mornings. Please water by hand from the tanks rather than running a hose from the street tap, which is metered.
*
* ### Dry Spells
*
* During a declared drought the committee may limit watering to **two days a week**. Notices are posted on the shed door and sent by e-mail.
*
* ---- custom options ----
* # Community Garden Handbook
*
* ## Plots
*
* ## Plot Sizes
*
* Plots come in two sizes. A full plot is twenty feet by ten feet; a half plot is ten feet square. New gardeners are strongly encouraged to start with a half plot.
*
* ## Plot Fees
*
* Plot Size Annual Fee
*
* Full 20 x 10 ft $60
*
* Half 10 x 10 ft $35
*
* ---
*
* ## Watering
*
* ## Schedule
*
* The shared tanks are filled on Monday and Thursday mornings. Please water by hand from the tanks rather than running a hose from the street tap, which is metered.
*
* ## Dry Spells
*
* During a declared drought the committee may limit watering to two days a week. Notices are posted on the shed door and sent by e-mail.
RELEASE loPdf
RELEASE loJson
RELEASE loSbMarkdown
RELEASE loJsonOut