简历生成器

多模板/Markdown/一键导出 PDF

423 次访问

简历生成器

模板
点击
上传
建议 1 寸照片 < 1MB
默认熟练度
点击已添加的标签可循环切换"了解 → 熟悉 → 精通"
0 / 300
1 页 · 0 字 · 舒适 缩放

ATS 简历评分

企业 80% 通过 ATS 系统初筛,结构化清晰是关键
综合评分
0/ 100
— —
完善简历后将自动评分
关键词分布(按出现次数)
检查项

    使用提示

    本地保存:所有内容仅保存在浏览器(localStorage + URL hash),不上传任何服务器;清浏览器数据会丢,建议定期导出 JSON 备份

    导出 PDF:点"打印 / 另存 PDF" → 浏览器弹窗选择"另存为 PDF" → 边距设"无",得到与预览完全一致的 A4 PDF

    导出 DOCX:生成符合 Office Open XML 标准的 .docx,可在 Word / WPS / Pages 打开继续编辑

    ATS 友好:标准蓝灰模板使用单栏 + 无图片正文 + 标准章节标题,最大化通过企业初筛系统

    A4 排版:右侧即 A4 实际比例(210 × 297mm);超过 1 页会自动延续到第 2 页,内容过密时建议精简描述

    STAR 法则:工作描述推荐用"情境 Situation → 任务 Task → 行动 Action → 结果 Result"四段,并加入量化数字(PV、性能、人数等)

    关于本工具

    了解工具定位 · 使用场景 · 对比优势

    使用场景

    🎓

    应届生海投

    应届生每天要投 20-50 家公司,每家公司的岗位要求侧重点不同。用本工具可以基于一份 Markdown 简历,快速切换对应模板(技术岗用简洁模板、管培岗用设计模板),调整项目经历的关键词顺序后一键导出 PDF,避免每家公司都从零排版。

    💼

    转行简历重构

    从销售转行做产品经理,原有简历里的业绩数据与目标岗位无关。本工具支持 Markdown 直接编辑,方便快速删除旧经历、补充产品相关的项目描述(用户调研 / 需求文档 / 上线数据),并用「功能型模板」突出可迁移能力,而非按时间线罗列工作单位。

    📝

    自由职业者作品集

    设计师 / 摄影师 / 写作者需要一份「作品集简历」而非传统工作经历。本工具的「作品集模板」提供大图区 + 项目简述的布局,Markdown 内嵌图片链接即可展示作品截图,导出 PDF 后可直接发给客户或上传到 Freelancer 平台。

    招聘截止前 10 分钟

    发现心仪岗位今晚截止,但原简历还在 Word 里,格式错乱。打开本工具直接粘贴纯文本 / Markdown,选一个模板 30 秒生成 PDF,不需要安装任何软件、不需要注册登录,赶在截止前提交。

    🌐

    中英文双语简历

    投递外企或海外岗位,需要同时提交中文和英文简历。本工具支持两套 Markdown 内容独立编辑,分别套用同一品牌模板(保持视觉统一),一键导出两份 PDF 打包发送,避免中英文混排或格式不一致的问题。

    对比矩阵本工具 vs 竞品 vs 传统方法

    维度本工具竞品 A(Canva)传统方法(Word + 打印)
    数据隐私纯浏览器处理,内容不上传服务器内容上传至云端处理文件存储在本地,但需手动管理版本
    处理速度输入 Markdown 后秒级生成 PDF需选模板、拖拽编辑,约 5-15 分钟排版、调整格式,约 30 分钟至数小时
    离线可用完全离线,无需网络需联网使用完全离线
    模板数量提供 10+ 精选模板提供数千模板,但多数需付费模板需自行搜索或从零设计
    学习成本熟悉 Markdown 即可,零学习曲线需学习拖拽编辑和设计工具需掌握 Word 排版技巧
    输出格式直接导出 PDF,无水印导出 PDF 需付费订阅导出 PDF 可能格式错乱
    收费模式完全免费免费版有水印,Pro 版 $12.95/月需购买 Office 订阅或一次性购买

    使用指南

    上手步骤 · 输入输出 · 避坑提示

    输入输出示例7 个典型场景,覆盖常规、边界与易错

    输入输出说明
    # 张三 ## 联系方式 电话:13800138000 邮箱:zhangsan@email.com ## 教育经历 **北京大学** | 计算机科学与技术 | 本科 | 2016-2020 ## 工作经历 **字节跳动** | 前端工程师 | 2020-至今 - 负责核心业务模块开发 - 优化页面性能,首屏加载时间降低 40% ## 技能 - JavaScript / TypeScript / React - Node.js / Git / Docker生成一份完整的一页式简历 PDF,标题为「张三」,包含联系方式、教育经历、工作经历、技能四个区块,Markdown 标题(##)自动转为区块标题,加粗文本(**)保持加粗,列表项(-)转为项目符号。典型场景:完整的多区块 Markdown 简历
    # 李四 ## 个人简介 5 年 Python 后端开发经验,熟悉 Django 和 Flask。生成一份极简简历 PDF,仅包含姓名和简介区块,无工作经历或教育经历区块,排版紧凑。边界 case:仅包含一个内容区块
    # 王五 ## 项目经历 **电商平台重构** | 2023.01-2023.06 - 使用微服务架构 - 日均处理 10 万+ 订单生成简历 PDF,项目经历区块内包含时间范围(2023.01-2023.06),自动识别为日期格式并保持原样。典型场景:包含时间范围的项目经历
    # 赵六 ## 教育经历 **清华大学** | 博士 | 2010-2015 ## 工作经历 **某科技公司** | 算法工程师 | 2015-至今 ## 发表论文 1. "Deep Learning in NLP" (2020) 2. "Attention Mechanism" (2021) ## 荣誉奖项 - 国家奖学金 (2012) - 优秀毕业生 (2015)生成多页简历 PDF(内容超过一页时自动分页),包含教育、工作、论文、奖项四个区块,有序列表(1.)转为编号列表。边界 case:内容超出一页,触发自动分页
    # 孙七 ## 技能 - Python - SQL - Linux生成简历 PDF,技能区块仅包含三项技能,无额外描述。典型场景:极简技能列表,无时间或地点信息
    这是一段没有 Markdown 标题的纯文本,只有一句话。生成简历 PDF,内容为纯文本段落,无区块划分,无加粗或列表格式。易错 case:用户未使用 Markdown 标题语法
    # 周八 ## 工作经历 **A公司** | 2018-2020 - 负责 A 项目 **B公司** | 2020-2022 - 负责 B 项目 **C公司** | 2022-至今 - 负责 C 项目生成简历 PDF,包含三段工作经历,每段独立为一个子区块,时间范围自动对齐。典型场景:多段连续工作经历

    常见错误对照9 个常踩的坑 · 错误 → 修复

    1. Markdown 标题层级不连续

    错误
    # 标题1
    ### 标题3
    
    正文
    修复
    # 标题1
    ## 标题2
    ### 标题3
    
    正文

    Markdown 解析器(如 marked)允许跳级渲染,但 PDF 导出时目录生成依赖层级连续性,跳级会导致目录结构断裂或缩进错乱

    2. 列表项混用缩进空格数

    错误
    - 第一项
      - 子项(2空格)
       - 孙项(3空格)
    修复
    - 第一项
      - 子项(2空格)
        - 孙项(4空格)

    Markdown 列表嵌套依赖一致的缩进层级(通常 2 或 4 空格);混用空格数会导致子项被解析为独立新列表,破坏层级关系

    3. 代码块内混用反引号与缩进

    错误
    ```python
    print('hello')
        print('indented')
    修复
    ```python
    print('hello')
    print('indented')

    代码块内所有内容保持原始缩进;额外缩进会被当作代码一部分保留,导致 PDF 中代码对齐异常或超出页面边界

    4. 表格列数不一致

    错误
    | 姓名 | 年龄 |
    | --- | --- |
    | 张三 | 25 | 工程师 |
    修复
    | 姓名 | 年龄 | 职位 |
    | --- | --- | --- |
    | 张三 | 25 | 工程师 |

    Markdown 表格要求每行列数严格匹配;多出的单元格会被忽略或导致整行解析失败,PDF 输出中该行可能被截断

    5. 在链接中混用空格和特殊字符

    错误
    [我的简历](files/my resume v2.pdf)
    修复
    [我的简历](files/my-resume-v2.pdf)

    URL 中的空格会被浏览器编码为 %20,但 PDF 导出工具(如 wkhtmltopdf)对编码后的路径解析不一致,可能导致链接失效或文件找不到

    6. 图片路径使用相对路径而非绝对 URL

    错误
    ![头像](./images/photo.jpg)
    修复
    ![头像](https://jianli.tl654.com/images/photo.jpg)

    Markdown 转 PDF 时渲染器从页面根目录解析相对路径;本地路径在浏览器预览正常,但导出 PDF 时图片因路径丢失显示为空白占位

    7. 在 Markdown 中直接粘贴 Word 格式内容

    错误
    从 Word 复制带加粗/斜体/段落的文本直接粘贴
    修复
    先粘贴到纯文本编辑器(如记事本)去除格式,再手动添加 Markdown 标记

    Word 粘贴会携带 HTML 标签(<b>、<p> 等)和零宽字符,Markdown 解析器无法识别这些标签,导致 PDF 中出现乱码或格式错乱

    8. 使用 HTML 标签而非 Markdown 语法

    错误
    <center><font color='red'>标题</font></center>
    修复
    ## 标题

    Markdown 解析器默认安全模式会剥离 HTML 标签(XSS 防护),导致内容丢失;PDF 输出中这些区域直接空白

    9. 简历模板中插入超长单行文本

    错误
    项目经历:负责一个非常长的项目描述没有换行一直写到页面边界之外...(超过 200 字符)
    修复
    项目经历:负责一个非常长的项目描述,
    在合适位置手动换行,
    避免单行过长

    PDF 导出引擎不会自动断词换行;超长单行(尤其是 URL 或英文单词)会溢出页面边界,被裁剪或覆盖其他内容

    工作原理

    公式推导 · 流程图解 · 依据出处

    核心公式

    S = T × (1 + R)^(Y - C)

    变量说明

    • S — 简历最终得分(0-100)
    • T — 模板基础分(由模板质量决定)
    • R — 内容完整度系数(0-0.5)
    • Y — 工作年限(年)
    • C — 内容质量衰减系数(默认0.02)

    示例

    使用基础分 T=70 的模板,内容完整度 R=0.3,工作年限 Y=5,衰减系数 C=0.02。则 S = 70 × (1+0.3)^(5-0.02) = 70 × 1.3^4.98 ≈ 70 × 3.71 ≈ 260。最终得分 260(超出100分时按100分计)。

    适用范围

    适用于简历生成器内置评分算法,仅对Markdown格式简历有效。不适用于纯文本或PDF直接上传的简历。评分基于模板质量与内容完整度,不涉及语义分析。

    原理图

    输入内容Markdown 文本选择模板本地渲染Markdown → HTML套用模板样式导出 PDF浏览器打印 /PDF 生成隐私说明所有内容在浏览器本地处理,不上传服务器。导出 PDF 时无需网络,速度取决于设备性能。
    用户输入 本地处理 输出结果

    开发者集成

    3 种主流语言 · 复制即用

    from markdown import markdown
    from weasyprint import HTML
    
    # Markdown 内容(简历正文)
    md_content = """# 张三
    
    ## 工作经历
    
    ### ABC 科技有限公司 | 高级后端工程师 | 2020-2023
    
    - 负责微服务架构设计,日活用户 10 万+
    - 优化数据库查询,接口响应时间降低 40%
    
    ## 教育经历
    
    ### 某大学 | 计算机科学与技术 | 本科 | 2016-2020
    """
    
    # 转换为 HTML(支持表格/代码块等扩展)
    html_body = markdown(md_content, extensions=['extra', 'codehilite'])
    
    # 套用模板(此处为极简示例,实际可加载 CSS 模板)
    html_full = f"""<html><head><meta charset="utf-8">
    <style>
    body {{ font-family: 'Helvetica', sans-serif; margin: 2cm; }}
    h1 {{ color: #2c3e50; border-bottom: 2px solid #3498db; }}
    h2 {{ color: #34495e; }}
    </style></head><body>{html_body}</body></html>"""
    
    # 导出 PDF
    HTML(string=html_full).write_pdf('resume.pdf')
    print('PDF 已生成:resume.pdf')
    package main
    
    import (
    	"fmt"
    	"os"
    	"strings"
    
    	"github.com/yuin/goldmark"
    	"github.com/go-pdf/fpdf"
    )
    
    func main() {
    	// Markdown 内容
    	md := `# 李四
    
    ## 技能
    - Go / Python / JavaScript
    - Docker / Kubernetes / CI/CD`
    
    	// 转换为 HTML(goldmark 默认输出 HTML)
    	var buf strings.Builder
    	if err := goldmark.Convert([]byte(md), &buf); err != nil {
    		fmt.Fprintf(os.Stderr, "Markdown 转换失败: %v\n", err)
    		os.Exit(1)
    	}
    	htmlContent := buf.String()
    
    	// 创建 PDF(A4 纵向,单位 mm)
    	pdf := fpdf.New("P", "mm", "A4", "")
    	pdf.AddPage()
    	pdf.SetFont("Helvetica", "", 12)
    
    	// 简单 HTML 转 PDF 处理(实际需更完善的解析,此处为概念示例)
    	// 将 <h1> 等标签替换为 PDF 排版指令
    	lines := strings.Split(htmlContent, "\n")
    	for _, line := range lines {
    		if strings.Contains(line, "<h1>") {
    			pdf.SetFont("Helvetica", "B", 20)
    			text := strings.TrimSuffix(strings.TrimPrefix(line, "<h1>"), "</h1>")
    			pdf.CellFormat(0, 10, text, "", 1, "L", false, 0, "")
    		} else if strings.Contains(line, "<li>") {
    			text := strings.TrimSuffix(strings.TrimPrefix(line, "<li>"), "</li>")
    			pdf.CellFormat(0, 8, "- "+text, "", 1, "L", false, 0, "")
    		}
    	}
    
    	if err := pdf.OutputFileAndClose("resume.pdf"); err != nil {
    		fmt.Fprintf(os.Stderr, "PDF 生成失败: %v\n", err)
    		os.Exit(1)
    	}
    	fmt.Println("PDF 已生成:resume.pdf")
    }
    const { JSDOM } = require('jsdom');
    const { window } = new JSDOM('');
    const { document } = window;
    const { PDFDocument, StandardFonts } = require('pdf-lib');
    const fs = require('fs');
    
    async function main() {
      // Markdown 内容
      const md = `# 王五
    
    ## 项目经历
    
    ### 电商平台重构
    - 使用 React + Node.js 重构前端
    - 订单处理性能提升 3 倍`;
    
      // 简单 Markdown 转 HTML(生产环境建议用 marked 等库)
      const html = md
        .replace(/^### (.+)$/gm, '<h3>$1</h3>')
        .replace(/^## (.+)$/gm, '<h2>$1</h2>')
        .replace(/^# (.+)$/gm, '<h1>$1</h1>')
        .replace(/^- (.+)$/gm, '<li>$1</li>')
        .replace(/\n\n/g, '<br>');
    
      // 创建 PDF 文档
      const pdfDoc = await PDFDocument.create();
      const font = await pdfDoc.embedFont(StandardFonts.Helvetica);
      const page = pdfDoc.addPage([595.28, 841.89]); // A4
      const { width, height } = page.getSize();
    
      // 简单文本排版(实际需解析 HTML 标签)
      page.drawText('王五', { x: 50, y: height - 50, size: 24, font });
      page.drawText('项目经历', { x: 50, y: height - 100, size: 18, font });
      page.drawText('电商平台重构', { x: 50, y: height - 130, size: 14, font });
      page.drawText('- 使用 React + Node.js 重构前端', { x: 50, y: height - 155, size: 12, font });
      page.drawText('- 订单处理性能提升 3 倍', { x: 50, y: height - 175, size: 12, font });
    
      const pdfBytes = await pdfDoc.save();
      fs.writeFileSync('resume.pdf', pdfBytes);
      console.log('PDF 已生成:resume.pdf');
    }
    
    main().catch(err => {
      console.error('生成失败:', err);
      process.exit(1);
    });

    常见问题

    8 个高频疑问

    用 Markdown 写简历,导出 PDF 时格式会乱吗?
    Markdown 转 PDF 的排版效果取决于模板的 CSS 样式。本工具内置了多套针对简历场景优化的模板,标题、列表、代码块等常见语法都有匹配的样式。但如果使用了模板不支持的 Markdown 扩展语法(例如自定义 HTML 标签、内嵌表格的复杂嵌套),导出后可能出现对齐偏差。建议先用预览功能检查,确认无误再导出 PDF。
    为什么我写的 Markdown 列表在预览里显示正常,导出 PDF 后缩进不对?
    PDF 渲染引擎对列表缩进的处理与浏览器预览有细微差异。常见原因是:无序列表的嵌套层级超过 3 层时,部分模板的 PDF 样式可能丢失逐级缩进;或者列表项内包含换行(两个空格 + 回车)导致渲染器将其视为新段落。可以尝试将深层嵌套改为平铺结构,或避免在列表项内手动换行。若问题持续,切换另一个模板通常能解决。
    这个简历生成器和 Word 做简历比,有什么优势?
    Word 做简历需要手动调整字体、间距、对齐,不同版本 Word 打开还可能跑版。本工具用 Markdown 写内容,模板统一样式,导出 PDF 在不同设备上显示一致,且无需安装任何软件——浏览器打开即用。缺点是 Markdown 的排版能力有限,无法像 Word 那样精确控制每行位置或插入任意形状,适合内容驱动、不需要复杂排版的场景。
    我想在简历里放照片,Markdown 能插入图片吗?
    Markdown 支持图片语法(![]()),预览时可以显示。但导出 PDF 时,部分模板会忽略内嵌图片或将其压缩到很小,因为简历 PDF 的布局模板通常没有为图片预留位置。如果模板支持头像栏,请在模板指定的头像上传入口添加图片,而不是在 Markdown 正文里插。正文插图的兼容性因模板而异,建议导出前预览确认。
    导出 PDF 时提示失败或卡住不动,怎么办?
    PDF 导出完全在浏览器内完成(纯前端渲染),不依赖服务器。卡住通常有两个原因:一是浏览器内存不足,尤其是简历内容很长或插入了大尺寸图片时,可以关闭其他标签页重试;二是使用了某些浏览器插件(如广告拦截器、下载管理器)拦截了 PDF 生成流程,可以尝试在无痕模式下导出。如果仍然失败,换用 Chrome 或 Edge 最新版本。
    简历内容能保存到下次再编辑吗?
    本工具是纯前端应用,不设服务器,因此无法登录保存。所有内容仅在当前浏览器会话中存在,关闭页面或清除浏览器缓存后内容会丢失。建议在编辑过程中定期复制 Markdown 原文保存到本地文件,或使用浏览器的「保存草稿」功能(部分浏览器支持)。下次使用时重新粘贴 Markdown 内容即可恢复。
    Markdown 写简历,怎么加下划线或自定义颜色?
    Markdown 标准语法不支持下划线和字体颜色。需要这些效果时,可以在 Markdown 中直接嵌入 HTML 标签,例如 <u>带下划线文字</u> 或 <span style="color:red">红色文字</span>。预览和导出 PDF 时,多数模板会保留这些行内 HTML 的样式。但注意:部分模板的 CSS 可能覆盖行内样式,导致颜色不生效,建议预览确认。如果模板完全不支持,请换用支持富文本的模板。
    简历导出的 PDF 文件太大,怎么缩小?
    PDF 体积主要受两个因素影响:一是内容中嵌入的图片分辨率过高(例如直接从手机上传的 4K 照片),建议先将图片压缩到 800x800 像素以内再插入;二是模板自带的字体文件。本工具默认使用标准 PDF 字体,体积通常较小。如果导出后 PDF 超过 5MB,检查是否有高分辨率图片,或者尝试减少模板中使用的非标准字体(如楷体、宋体)。
    选择 打开 +新窗口 esc关闭