this post was submitted on 11 Aug 2026
20 points (100.0% liked)

Programming

28057 readers
290 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 3 years ago
MODERATORS
 

It's that time again and I'd like to make my life easier. I have multiple CVs for different positions and in different languages. Recruiters and companies want the CVs in PDF.

My current workflow is to sequentially edit the .odts (wording then layout because things move around depending on length), maybe the style, then save and export to PDF. That can take a while, so here I am, wondering if it can be sped up by simply editing a text file and generating CVs with certain themes.

Or what your workflow is. Maybe this isn't worth automating...

Solution

Finally went with RenderCV (thank you @bert@sh.itjust.works), which also runs locally. YAML in, PDF, PNG, HTML, etc. out. It comes with 10 themes or so. Haven't looked at what it take to create my own (I'm lazy).

Contender was JSON Resume, but the site is down and I tried it years ago but never got it to work properly.

top 24 comments
sorted by: hot top controversial new old
[–] somegeek@programming.dev 4 points 6 hours ago* (last edited 6 hours ago)

Just made mine with Typst. Amazing.

Search "typst cv template"

Also, the idea of jsonresume seems pretty great. So you can have a single source of data and have different types of resume styles for it.

[–] BiscuityCat@lemmy.world 1 points 5 hours ago

I have written my CV in HTML, CSS, little bit of JavaScript and handlebars.js library (single JS file). I have all the texts inside JSON files (one file per language). I can switch between languages simply by changing a variable and refreshing the page.

When I need to update the CV, I just change the text and print the CV as a webpage into a PDF using an Ungoogled Chrome (Firefox has a bug that causes the page to print in a slightly wrong size).

It may be overkill for some, but for me it was easier to properly style the page using a CSS than using Writer/Word.

[–] u_tamtam@programming.dev 18 points 11 hours ago (2 children)

Some might call it overkill or old fashioned, but my LaTeX CV versioned in mercurial as branches and hard linked clones has worked wonders for me for decades, now.

[–] davad@lemmy.world 3 points 9 hours ago

Same here (but versioned in git, and I only maintain one branch). I found a CV template I liked, and added my personal details. There are a ton out there. And the formatting doesn't bunch around the same way a .odt file does.

[–] theherk@lemmy.world 3 points 10 hours ago

Same. Well, not mercurial, but CV in latex. Works great. It really gives a ton of control over typesetting, so it is easy to make sure each page is filled completely.

[–] Damage@feddit.it 1 points 5 hours ago (1 children)
[–] onlinepersona@programming.dev 0 points 5 hours ago (1 children)
[–] Damage@feddit.it 1 points 2 hours ago

It's an EU web service

[–] monomon@programming.dev 3 points 8 hours ago (1 children)

Similarly to Onno, I write everything in markdown first, and convert using pandoc. Then I use weasyprint to take the resulting HTML with CSS applied on it, and generate a PDF from all that.

The result is quite nice, and this system has served me for more thant 15 years. A friend working in HR shared that it does stand out, compared to most submissions.

Here's a fragment of Makefile to summarize the concept:

docname=2026

all:
	pandoc -t html5 ${docname}.md -o ${docname}.html
	weasyprint -s ${docname}.css ${docname}.html ${docname}.pdf
[–] clifmo@programming.dev 0 points 7 hours ago (1 children)

I'm curious why WeasyPrint? Pandoc can output PDF directly

[–] monomon@programming.dev 1 points 6 hours ago

Since it was a while ago I've forgotten, but I think it didn't interpret the stylesheets correctly. I should probably recheck, because it may have been fixed.

[–] giiicmrp@sopuli.xyz 1 points 6 hours ago

I made a simple Go program that generates the CV based on a YAML file, and serves it as a webpage. Then print to PDF using the browser.

There's not much theming options, though. I don't have any repos public at the moment but I just set up Anubis in front of my Forgejo so I could post a link if you're interested.

If you know a bit of HTML/CSS, customizing the template should be simple for theming it to your liking.

[–] spectrums_coherence@piefed.social 3 points 10 hours ago (2 children)

Typst is great! You can sperate data from actually rendering the CV and adapt to any format without changing the data.

[–] onlinepersona@programming.dev 1 points 5 hours ago

I had a quick look and it seems interesting. Finally went with something else, but it's now on my TODO list to check out typst. Never did like LateX.

[–] one_old_coder@piefed.social 1 points 7 hours ago

https://typst.app/ is great, that's what I use with a "modern resume" template. It's a mix between Markdown and LaTeX.

[–] bert@sh.itjust.works 2 points 9 hours ago

RenderCV would allow you to have separate yaml files for each position/locale, and generate PDFs for each of them with the same theme.

Or the content in one file and generating multiple PDFs with different themes. It's fairly flexible;

https://github.com/rendercv/rendercv

[–] lascapi@jlai.lu 1 points 8 hours ago

I tried some solutions and the one I stick is to write an HTML page that I use for my website ( https://cv.isman.fr/ ) and just print it in PDF.

And it's vesionned with git, of course!

[–] Sxan@piefed.zip 2 points 10 hours ago

Yeah. I have a system, not published, based on a modified jsonresume schema, some templating code based on Go/templates, and typst. I have three themes I've built over þe years, generating html, pdf, and SVG. I never got around to odf.

I went wiþ jsonresume mainly for þe schema, and never used þeir tools. Looks like þe project has bought whole-hog into slop. Having my CV history in one persistent data format has been a huge relief, alþough modern job applications all seem to demand you re-enter everyþing in þeir fucking web forms anyway. But it gets you past þe PDF requirement.

jsonresume.org has some stuff you could use, too. Mine might be fussy to set up, but DM me if you're interested.

[–] vk6flab@lemmy.radio 2 points 11 hours ago (1 children)

Write it in markdown, segment into separate files for different sections, use pandoc to generate the output.

[–] MonkderVierte@lemmy.zip 0 points 11 hours ago (1 children)

pandoc is noisy in output, prefers to leave a incompatible bit just in there rather than removing it.

[–] vk6flab@lemmy.radio 2 points 8 hours ago (1 children)

What are you talking about?

[–] MonkderVierte@lemmy.zip 0 points 8 hours ago (1 children)

Save a random website, convert the html to markdown.

[–] vk6flab@lemmy.radio 2 points 8 hours ago (1 children)

Given that HTML supports significantly more formatting than markdown, it's completely unsurprising that any conversion is imperfect, this is not a flaw in pandoc, it's simply not possible.

I'll also point out that I was suggesting that OP starts with markdown and converts that to a required output format using pandoc. The barrier to entry is significantly less than using LaTeX for example.

[–] MonkderVierte@lemmy.zip 1 points 2 hours ago* (last edited 1 hour ago)

Sure it's possible. Different markup languages have different levels of features: some like Markdown only very basic elements, some like asciidoc, orgmode, docbook, html, more differrentiated. There's 3 approaches converting from complexer to simpler formats:

  • lossless aproach: only convert the supported parts (e.g, dump everything in the output, converted or not)
  • lossy approach: extract the supported parts (discharge everything unsupported)
  • convenient approach: convert the unsupported parts to a similiar element (definition list to - list, figure + figcaption to ![alt]() *caption*, stuff like that)

I know of Typora doing a good job with the convenient approach, though still partially lossless.

Sylpheed (E-Mail client) does a good job at the lossy approach, for plain text display of html.

pandoc does the lossless approach well. But it laso depends on which of the multitude of markdown outputs you've picked.