Skip to content
No description, website, or topics provided.
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.


Type Name Latest commit message Commit time
Failed to load latest commit information.

Markdown CV

Markdown CV is an attempt to write CVs using Markdown syntax, versioned using Git, automatically built into PDFs.

Warning: I wrote this code just for my personal use. Feel free to use it, but don't expect it to be well tested or even near to a beta version.

I wrote a blog post about why I wrote it:


Install GEM dependencies:

bundle install

Install wkhtmltopdf

I had issues with version 0.11, so I'd suggest to use 0.10. You can download it from here: Then create a symlink into your /usr/local/bin so that PDFKit can access it.


To generate PDF you just need to use rake:

rake build

Or, if you want to build and display the PDF in a single command, just use:



Put your CVs in the src folder. All files *.md are built by the rake task. You can use the one provided as an example.

The build task is a three step process:

  • convert Mardown to HTML
  • render content inside a styled HTML template
  • convert the HTML file to PDF using wkhtmltopdf

To tweak the style of the CV you can change the template/base.css file with your own font and style.

Enriched Markdown

Markdown CV is using Github-flavoured Markdown, and on top of that it's adding an extra feature. You can mark blocks of content with the following syntax:


** Some content


The build process will replace [myblock] with <div class="myblock">

You can use this functionality to create asides and content formatted in a special way.

Page breaks

Markdown has no knowledge of pages or page breaks. But you can use page-break- CSS to control them.

You can tackle the issue in two different ways.

  • specifically request page breaks where needed (not recommended)
  • define places where you don't want a page break, and let the normal flow find the right spots

For the first method, you could use custom tags in your markdown like this:


Then you just need to add some CSS like this:{

My preferred approach is to let the content flow naturally between pages, and only avoid page breaks where they shouldn't be. The CV provided as example uses this trick.


** Some content here

Then this line of CSS ensure everything in the block will hang together:

p, li, .block, .aside{
You can’t perform that action at this time.