Have you ever wanted a tool that could effortlessly generate your resume in multiple formats while being easily maintainable? Look no further! I created a script to create the ultimate resume generator using Python, HTML, Word, and occasionally, PDF.
Why Create a Resume Generator?
The motivation behind this project was simple: a friend asked me if I could build a script so his resume would look exactly the same in HTML, MS Word, and PDF formats, and it needed to be easily maintainable. With LinkedIn and the Chrome plugin “JSON Resume Exporter,” you can easily extract all the necessary information from your LinkedIn profile. With some minor adjustments, you can import your resume files (per language) into this script and create a beautiful webpage, Word document, and PDF.
Tools and Technologies Used
- Python: The core programming language used for the script.
- Jinja2: A templating engine for Python to create HTML templates.
- Docx MailMerge: A Python library to handle Word document templating.
- CloudConvert API: (Optional) For converting Word documents to PDF.
- Font Awesome: For adding icons to the HTML template.
- GitHub Pages: For hosting the HTML resume.
- LinkedIn: For exporting resume data using the JSON Resume Exporter plugin.
- Pixi: A package manager for managing dependencies.
Getting Started
First, you need to clone the GitHub repository:
git clone git@github.com:tvdsluijs/resume-generator-python-html-word.git
Prerequisites
- Python 3.x
- Pip or Pixi for package management
Install the required packages:
pip install -r requirements.txt
or if you're using Pixi:
pixi install
Directory Structure
Here's a quick overview of the project's directory structure:
Root/
── components/
│ ├── json_utils.py
│ ├── template_utils.py
│ ├── structured_data.py
│ ├── word_resume.py
│ ├── downloads.py
│ ├── pdf_resume.py
│ ├── read_config.py
│ └── cloudconvert_to_pdf.py
── output/
│ ├── icons/
│ ├── images/
│ ├── fonts/
│ ├── flags/
│ └── style.css
── resume_json_files/
│ └── resume_en.json
── test/
│ └── (empty for now, but you can add your tests here)
── templates/
│ ├── resume_template.html
│ └── resume_template.docx
── translations/
│ └── en.json
── main.py
── pixi.toml
Generating Resumes
To generate the resumes, run:
python main.py
This will create HTML and Word documents for each resume JSON file in the resume_json_files
directory. If needed, you can also generate PDFs (not currently supported on Mac OS M1/M2/M3 CPUs).
Customizing Templates
Want to give your resume a personal touch? Here's how you can customize your templates:
- HTML Templates: Modify the resume_template.html
file in the templates
directory. You can use Jinja2 templating to include dynamic data.
- Word Templates: Customize the Word template (`resume_template.docx`) in the templates
directory. Ensure the placeholders match the data fields in your JSON files.
Hosting on GitHub Pages
Hosting your generated HTML resumes on GitHub Pages is a breeze. Simply push your output
directory to a GitHub repository and enable GitHub Pages in the repository settings.
Contributing to the GitHub Repository
Interested in contributing? Here's how you can help:
1. Fork the Repository:
- Click the "Fork" button at the top-right corner of the repo page.
2. Create a Branch:
git checkout -b feature/YourFeatureName
3. Make Your Changes:
- Add new features, fix bugs, or improve documentation.
4. Commit Your Changes:
git commit -m 'Add some feature'
5. Push to Your Branch:
git push origin feature/YourFeatureName
6. Create a Pull Request:
- Open a pull request on the original repository with a description of your changes.
Conclusion
This resume generator is free, easily customizable, and perfect for creating professional resumes in multiple formats.
Check out the GitHub repository and the demo site to see it in action.
Happy resume building!