Skip to content

Convert Markdown into HTML, PDF, and other formats with executed code blocks. Create reports with Plots and Charts.

License

Notifications You must be signed in to change notification settings

dgo8/convert-markdown

Repository files navigation

Convert Markdown into HTML, PDF, and other formats with executed code blocks.

Python package that converts markdown to HTML, PDF, DOCX, and PPTX. Supports code block execution and plot rendering. Create stylish reports with charts and graphs from LLM outputs.

Display charts and graphs.

Untitled

Features

  • Code Execution: Execute Python code blocks directly in your markdown
  • Multiple Export Formats: Markdown to PDF, Markdown to DOCX, Markdown to PPTX, and Markdown to HTML
  • Data Visualization: Support for Matplotlib, Plotly, and Seaborn
  • Custom Styling: Choose from built-in styles or define your own CSS
  • Professional Output: Generate publication-ready documents

Installation

pip install convert-markdown

Quick Start

import convert_markdown

markdown_content = """
# Analysis Report

## Data Visualization

```python
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
plt.plot(x, np.sin(x))
plt.title("Sine Wave")
plt.show()
```"""

# Method 1: Get bytes and save manually
output = convert_markdown.to(
    markdown=markdown_content,
    style='style1', # default: 'style', 'style1', 'style2', 'style3', 'custom'
    format='pdf'    # default: 'pdf', 'docx', 'pptx', 'html'
)
with open('output.pdf', 'wb') as f:
    f.write(output)

# Method 2: Direct to file (returns None)
convert_markdown.to(
    markdown=markdown_content,
    format='pdf',
    output_file='output.pdf'  # File is saved directly
)

Parameters:

  • markdown: Input markdown text
  • format: Output format ('pdf', 'docx', 'pptx', 'html')
  • output_file: Optional path to save the output (if specified, returns None)
  • style: CSS style to use (default: 'style', 'style1', 'style2', 'style3', 'custom')
  • custom_css: Custom CSS string when style='custom'

Returns:

  • bytes: Converted document as bytes (or None if output_file is specified)

Code Block Support

Use standard markdown code blocks with Python:

# Print statements
print("Hello, World!")

# Matplotlib
import matplotlib.pyplot as plt
plt.plot([1, 2, 3], [1, 2, 3])
plt.show()

# Plotly
import plotly.express as px
df = px.data.iris()
fig = px.scatter(df, x="sepal_width", y="sepal_length")

# Seaborn
import seaborn as sns
tips = sns.load_dataset('tips')
sns.boxplot(data=tips, x='day', y='total_bill')
plt.show()

Styling Options

Built-in Styles

Choose from three built-in styles:

  • style: Default-plain
  • style1: Corporate finance theme
  • style2: Modern business theme
  • style3: Clean documentation theme
convert_markdown.to(
    markdown=content,
    format='pdf',
    style='style2'
)

Custom CSS

Apply your own styling:

custom_css = """
body {
    font-family: Arial, sans-serif;
    max-width: 900px;
    margin: 0 auto;
}
"""

convert_markdown.to(
    markdown=content,
    format='pdf',
    style='custom',
    custom_css=custom_css
)

Pre-imported Libraries

The following libraries are available in Python code blocks:

  • numpy (as np)
  • pandas (as pd)
  • matplotlib.pyplot (as plt)
  • plotly.graph_objects (as go)
  • plotly.express (as px)
  • seaborn (as sns)

Examples

See the examples directory for more detailed examples, including:

  • Basic print statements
  • Matplotlib visualizations
  • Plotly interactive charts
  • Seaborn statistical plots
  • Complex data analysis reports

License

MIT License - see LICENSE file for details.

About

Convert Markdown into HTML, PDF, and other formats with executed code blocks. Create reports with Plots and Charts.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages