hellokunzai263 downloadsForm-driven resume editor with live preview, Chinese templates and PDF/HTML/DOCX/LaTeX export, plus a configurable resume directory.
Form-driven resume editor for Obsidian. Edit structured fields on the left, see a live preview on the right, and export to PDF / HTML / DOCX / LaTeX.
中文简历编辑器插件:左侧表单填写、右侧实时预览,内置多套中文向模板,一键导出 PDF / HTML / DOCX / LaTeX。完整中文说明见 README.zh.md。
html2pdf.js), HTML, DOCX (custom zero-dependency OOXML generator) and LaTeX, all generated fully on-device..resume file format — each resume is a structured JSON file that Obsidian opens directly in the editor. Legacy .md resumes (with the resume frontmatter marker or config block) are still recognized and migrated automatically..resume file. The default name is 新建简历.resume; if the name already exists, it is automatically incremented to 新建简历 1.resume, 新建简历 2.resume, etc..resume file opens directly in the editor when clicked.Use the export button in the editor, or the commands: Export resume as PDF / HTML / DOCX / LaTeX. Exports are written next to the current note via Obsidian's vault API.
Export runs asynchronously and shows a thin progress bar across the top of the editor, so the rest of the workspace stays usable while a PDF renders. The bar takes no layout space and never intercepts clicks; the export button is dimmed while a job is running so repeated clicks cannot queue up extra work.
Exports run asynchronously and show a non-blocking progress card in the bottom-right corner, so the rest of the workspace stays usable while a PDF is being rendered. The card never intercepts clicks, and the export button is disabled until the run finishes to prevent stacking duplicate jobs.
The default template (Settings → Resume Editor → Default template) applies to new resumes; each saved resume stores its own templateId, so existing files keep their look.
| Template | Description |
|---|---|
| Single column | One full-width column, clean and safe. |
| Two columns | Left sidebar (avatar, contacts) + right content. |
| Academic | Top-aligned basic info, formal black typography. |
| Classic | Traditional single-column business look. |
| Timeline | Vertical timeline for dates/experience. |
| Swiss | Grid-based, minimalist with strong type. |
| Modern | Blue-accented, contemporary. |
| Minimalist | Lots of whitespace, top basic info. |
| Left & right | Photo + contacts on the left 30%. |
| Elegant | Warm brown accent, refined. |
| Creative | Pink accent, expressive layout. |
| Editorial | Teal accent, magazine-style. |
Open the Global style panel at the top of the editor's left column:
Settings are stored in the note's config block, so each resume keeps its own appearance; old files fall back to defaults.
The plugin runs offline by default. It makes no outbound network requests for editing, live preview, PDF/HTML/LaTeX export, or storage — there is no AI/cloud feature, and your resume data never leaves your device. All files are stored in your vault and exported locally.
The one exception: when a DOCX export embeds an image hosted at an https:// URL, the plugin fetches that image via Obsidian's requestUrl to embed it into the .docx file. No other data is sent anywhere, and the request only targets the exact image URL you referenced.
Desktop and mobile. Requires Obsidian 1.11.4+; the plugin sets isDesktopOnly: false and runs on phones and tablets.
All export formats are pure-frontend and use Obsidian's vault.adapter APIs — no Electron, fs, path, os, or child_process:
html2pdf.js (html2canvas + jsPDF), written with app.vault.adapter.writeBinary.app.vault.adapter.writeBinary.app.vault.adapter.write.Mobile UI differences (compared to desktop):
scale: 1.5 instead of 2) to lower memory use.npm install
npm run dev # watch build
npm run build # type-check + production build
MIT