Sample code for 30+ languages & platforms
Delphi ActiveX

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 Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
options: TChilkatJsonObject;
sbHead: TChilkatStringBuilder;
bCrlf: Integer;
sbMarkdown: TChilkatStringBuilder;
sbHtml: TChilkatStringBuilder;

begin
success := 0;

success := 0;

options := TChilkatJsonObject.Create(Self);

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

sbHead := TChilkatStringBuilder.Create(Self);
bCrlf := 1;
sbHead.AppendLine('<head>',bCrlf);
sbHead.AppendLine('<style>',bCrlf);
sbHead.AppendLine('body {',bCrlf);
sbHead.AppendLine('  font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;',bCrlf);
sbHead.AppendLine('}',bCrlf);
sbHead.AppendLine('</style>',bCrlf);
sbHead.AppendLine('</head>',bCrlf);

// Each HTML section can be set individually.
options.UpdateString('docType','<!DOCTYPE html>');
options.UpdateString('rootElement','<html lang="en">');
options.UpdateString('head',sbHead.GetAsString());
options.UpdateString('bodyStart','<body>' + #10 + '<div id="content"');
options.UpdateString('bodyEnd','</div>' + #10 + '</body>');

// 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.
options.UpdateString('extraHead','<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-coy.min.css" />');
options.UpdateString('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>');

sbMarkdown := TChilkatStringBuilder.Create(Self);
sbHtml := TChilkatStringBuilder.Create(Self);

success := sbMarkdown.LoadFile('qa_data/markdown/test1.md','utf-8');
if (success = 0) then
  begin
    Memo1.Lines.Add(sbMarkdown.LastErrorText);
    Exit;
  end;

sbMarkdown.MarkdownToHtml(options.ControlInterface,sbHtml.ControlInterface);
sbHtml.ToCRLF();

Memo1.Lines.Add(sbHtml.GetAsString());

// 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;