Sample code for 30+ languages & platforms
DataFlex

Markdown to HTML - Full Document, Custom Theme with Code Syntax Highlighting

See more Markdown Examples

Demonstrates how to convert a complete Markdown document to HTML using your own custom theme with Cloudfare Prism's code syntax highlighting.

Chilkat DataFlex Downloads

DataFlex
Use ChilkatAx-win32.pkg

Procedure Test
    Boolean iSuccess
    Variant vOptions
    Handle hoOptions
    Handle hoSbHead
    Boolean iBCrlf
    Handle hoSbMarkdown
    Variant vSbHtml
    Handle hoSbHtml
    String sTemp1

    Move False To iSuccess

    Move False To iSuccess

    Get Create (RefClass(cComChilkatJsonObject)) To hoOptions
    If (Not(IsComObjectCreated(hoOptions))) Begin
        Send CreateComObject of hoOptions
    End

    // Instead of specifying a "theme", provide values for the HTML document parts.

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbHead
    If (Not(IsComObjectCreated(hoSbHead))) Begin
        Send CreateComObject of hoSbHead
    End
    Move True To iBCrlf
    Get ComAppendLine Of hoSbHead "<head>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHead "<style>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHead "body {" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHead '  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;' iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHead "}" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHead "</style>" iBCrlf To iSuccess
    Get ComAppendLine Of hoSbHead "</head>" iBCrlf To iSuccess

    // Each HTML section can be set individually.
    Get ComUpdateString Of hoOptions "docType" "<!DOCTYPE html>" To iSuccess
    Get ComUpdateString Of hoOptions "rootElement" '<html lang="en">' To iSuccess
    Get ComGetAsString Of hoSbHead To sTemp1
    Get ComUpdateString Of hoOptions "head" sTemp1 To iSuccess
    Get ComUpdateString Of hoOptions "bodyStart" '<body>' + (character(10)) + '<div id="content"' To iSuccess
    Get ComUpdateString Of hoOptions "bodyEnd" "</div>" + (character(10)) + "</body>" To iSuccess

    // We can add extra content to the bottom of the HTML head and body sections like this:
    // Here we are using the Cloudfare Prism "coy" theme for code syntax higlighting.
    Get ComUpdateString Of hoOptions "extraHead" '<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-coy.min.css" />' To iSuccess
    Get ComUpdateString Of hoOptions "extraBody" '<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script><script src ="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/autoloader/prism-autoloader.min.js"></script>' To iSuccess

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbMarkdown
    If (Not(IsComObjectCreated(hoSbMarkdown))) Begin
        Send CreateComObject of hoSbMarkdown
    End
    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbHtml
    If (Not(IsComObjectCreated(hoSbHtml))) Begin
        Send CreateComObject of hoSbHtml
    End

    Get ComLoadFile Of hoSbMarkdown "qa_data/markdown/test1.md" "utf-8" To iSuccess
    If (iSuccess = False) Begin
        Get ComLastErrorText Of hoSbMarkdown To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get pvComObject of hoOptions to vOptions
    Get pvComObject of hoSbHtml to vSbHtml
    Get ComMarkdownToHtml Of hoSbMarkdown vOptions vSbHtml To iSuccess
    Get ComToCRLF Of hoSbHtml To iSuccess

    Get ComGetAsString Of hoSbHtml To sTemp1
    Showln sTemp1

    // The sample markdown input for this example is identical to the one at Markdown to HTML - Full Document, Raw, where you can view it.

    // Sample HTML output as viewed in a browser:

    // image


End_Procedure