Skip to main content

Generate a clean, professional PDF CV from a Markdown file

Project description

md-cv-gen

CI PyPI License: MIT Python uv

Generate a clean, professional PDF CV from a Markdown file. Optionally password-protect the output.

Features

  • Markdown in, PDF out — write your CV in plain Markdown, render it to a print-ready A4 PDF (or HTML).
  • Sensible typographic defaults — an embedded stylesheet handles colors, spacing and page layout; tweak it in one place.
  • Password protection — optionally encrypt the generated PDF.
  • Single dependency-light CLI — one command, no config files.

Prerequisites

Installation

pip install md-cv-gen

Or run it without installing, using uv:

uvx md-cv-gen cv.md -o cv.pdf

Usage

# Output HTML to stdout
md-cv-gen cv.md

# Generate an HTML file
md-cv-gen cv.md -o cv.html

# Generate a PDF
md-cv-gen cv.md -o cv.pdf

# Generate a password-protected PDF
md-cv-gen cv.md -o cv.pdf -p "secret"

The output format is determined by the -o file extension (.pdf or .html). Without -o, HTML is printed to stdout.

Markdown structure

# First Last
**Job title** | City, Country
email | phone | links

---

## Section                         <!-- h2 sections -->

### Role - Company                 <!-- h3 subsections -->
*Dates | Location*                 <!-- dates in italic -->

- Achievements as bullet points

Style customization

The CSS is defined in the STYLE variable in src/cv_generator.py. You can modify colors, fonts and spacing directly.

Element Property Default
Primary color color (h2, links) #2980b9 (blue)
Text color color (body) #2c3e50 (dark grey)
Font font-family Helvetica Neue, Arial
Page size size (@page) A4
Margins margin (@page) 1.5cm 2cm

Development

git clone https://github.com/goabonga/cv-generator.git
cd cv-generator
uv sync
uv run pre-commit install
uv run ruff check .

See CONTRIBUTING.md for the full workflow, commit conventions and release process.

License

MIT © Chris

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

md_cv_gen-1.0.0.tar.gz (5.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

md_cv_gen-1.0.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file md_cv_gen-1.0.0.tar.gz.

File metadata

  • Download URL: md_cv_gen-1.0.0.tar.gz
  • Upload date:
  • Size: 5.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for md_cv_gen-1.0.0.tar.gz
Algorithm Hash digest
SHA256 bc1f5ca45ef12a083444f4392b295a86f4b227ec71b969c49ff0ddf02ef960b5
MD5 a250aea62615cb517b7c53c6e9f2aa8e
BLAKE2b-256 8183688423e61d4a6f4181deaedb0afdc6fdd2df0c8f3eaacaa52c22c11fad09

See more details on using hashes here.

Provenance

The following attestation bundles were made for md_cv_gen-1.0.0.tar.gz:

Publisher: ci.yml on goabonga/cv-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file md_cv_gen-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: md_cv_gen-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 5.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for md_cv_gen-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 cfbc3e9b4b87a97c65eb677398f0b50639a9dc15dc04833f085f8aa44a157344
MD5 4581de8e5f8cc5d6e41e73f064b10d09
BLAKE2b-256 f37dc34703ce27737e4a302eeb7c3f599c884c284da4240bc90406d11cc0a062

See more details on using hashes here.

Provenance

The following attestation bundles were made for md_cv_gen-1.0.0-py3-none-any.whl:

Publisher: ci.yml on goabonga/cv-generator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page