[造轮子] 写了个纯前端的 Markdown 转 PDF 工具,专治 DeepSeek/ChatGPT 导出的排版强迫症 - V2EX
szyewei

[造轮子] 写了个纯前端的 Markdown 转 PDF 工具,专治 DeepSeek/ChatGPT 导出的排版强迫症

  •  
  •   szyewei Feb 4 3007 views
    This topic created in 102 days ago, the information mentioned may be changed or developed.

    最近高强度使用 DeepSeek R1 撸代码和看论文,发现一个痛点:R1 生成的数学公式( LaTeX )和流程图( Mermaid )非常惊艳,但一旦复制到 Word 或者普通的 Markdown 编辑器里,格式经常崩坏,想存成 PDF 分享给同事很麻烦。

    市面上的转 PDF 工具要么收费,要么要把内容上传到服务器(公司文档不敢传)。

    趁周末手痒,撸了一个纯前端的转换工具:md2pdf.cc

    主要特点:

    零后端:基于 HTML5 纯客户端渲染,你的文档数据绝不经过我的服务器,隐私绝对安全。

    完美支持公式:集成了 KaTeX ,DeepSeek 生成的复杂数学推导公式都能完美渲染。

    支持 Mermaid:自动渲染流程图、时序图,不用再单独截图了。

    排版舒适:内置了学术风、商务风等几套 CSS ,直接导出就能用。

    API Hack:支持通过 URL 传参直接渲染,我有空写个脚本,打算把它集成到我的 AI Workflow 里。

    地址: https://md2pdf.cc

    目前是 v1.0 版本,完全免费(也没打算收费,纯靠爱发电覆盖域名费)。 大家帮忙测测,有 Bug 或者想要的功能直接评论区提,我在线修。

    24 replies    2026-02-05 11:46:56 +08:00
    WarlockMan
        1
    WarlockMan  
       Feb 4
    头像不错唉
    yh7gdiaYW
        2
    yh7gdiaYW  
       Feb 4
    说到导出 pdf ,还有一个我觉得更亟需解决的是分页问题,尤其是带有这些图片公式之类东西的
    yh7gdiaYW
        3
    yh7gdiaYW  
       Feb 4
    你页面上的 demo 的就很明显,

    1. Mermaid.js 图表支持
    直接在 Markdown 中绘制流程图、序列图和甘特图:

    之后 2/3 的页面都是空白,然后下一页这一点点东西的图表又占了 3/4
    kelvinji2009
        4
    kelvinji2009  
       Feb 4
    @yh7gdiaYW 分页这个问题,我的解决办法的是截图,或者 html 生成图片,然后图片再转 PDF 才能解决。不知道是不是还有其他解决办法。
    kelvinji2009
        5
    kelvinji2009  
       Feb 4
    @szyewei 能支持上面我说的方式生成 PDF 不,哈哈,这个功能挺需要的。
    vfs
        6
    vfs  
       Feb 4
    如果真想给人用的话,建议把 pdf 中的默认水印去了。
    livib
        7
    livib  
       Feb 4
    建议对比 CF 的 rendering 效果
    willbing
        8
    willbing  
       Feb 4
    @vfs +1
    szyewei
        9
    szyewei  
    OP
       Feb 4
    @vfs 好主意,去掉了,不过保留了页脚
    szyewei
        10
    szyewei  
    OP
       Feb 4
    @kelvinji2009 试过的,这样生成的内容都是一整张图片,而且文字输出的质量不行,所以弃用了这个方法
    szyewei
        11
    szyewei  
    OP
       Feb 4
    @yh7gdiaYW 确实是个问题,尝试做了下缩小处理,有点改善了。
    irvinglove
        13
    irvinglove  
       Feb 4
    @irvinglove 支持 latex 和 mermaid ,分页一般另起一页,但太长估计也只能缩小了
    abel533
        14
    abel533  
       Feb 4
    @yh7gdiaYW #2 用 obsidian 可以插入分页标记,导出 pdf 可以根据标记分页。
    yh7gdiaYW
        15
    yh7gdiaYW  
       Feb 4
    @kelvinji2009 可能也只能这样了,我自己写是放到<image>标签里不用 markdown 原生的语法。但从编辑器角度,预览功能其实是可以实现分页效果预览的,这也算是个痛点,避免要折腾导出-查看-调整大小-导出-查看
    weberCd
        16
    weberCd  
       Feb 4
    域名不错,工具好用
    szyewei
        17
    szyewei  
    OP
       Feb 4
    @irvinglove 不错
    szyewei
        18
    szyewei  
    OP
       Feb 4
    @weberCd 感谢
    sssfff
        19
    sssfff  
       Feb 4
    直接网页 Ctrl+P 不就行了吗
    physnya
        20
    physnya  
       Feb 4
    不知道是不是我的问题,那个 GitHub 风格的警示没有渲染出来
    szyewei
        21
    szyewei  
    OP
       Feb 4
    @physnya 确实是个问题,修复了。
    Lockroach
        22
    Lockroach  
       Feb 5
    typora 不是自带导出成 pdf 或者 html 的功能吗,如果是 mermaid 格式错误的话用哪个 md 编辑器都无法解决吧
    kelvinji2009
        23
    kelvinji2009  
       Feb 5
    @yh7gdiaYW vscode 有个插件专门干这个,叫 Markdown Snapshot PDF ,我平时也有用这个解决问题。
    kelvinji2009
        24
    kelvinji2009  
       Feb 5
    @szyewei 嗯,这是当前唯一解决方案了。我也没想到更好的办法。
    About     Help     Advertise     Blog     API     FAQ     Solana     2763 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 74ms UTC 01:52 PVG 09:52 LAX 18:52 JFK 21:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86