V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
pengxu980315
V2EX  ›  分享创造

做了一个 Jupyter Notebook 的转换网站,可以把 ipynb 转化为 PDF、HTML 和 Python

  •  
  •   pengxu980315 · 13 天前 · 957 次点击

    项目简介

    • 因为之前在做数据分析的时候,用 colab 比较多,有些时候给同事或者老板看,用 PDF 格式会比较方便,所以就想自己做一个转化网站出来。
    • 转化的方式是先把 ipynb 格式的内容解析出来,然后使用 html 格式渲染,最后导出为 PDF ,我原以为这个过程很简单,但实际工作量还蛮大的,当然,也探索出一些很好用的工具。
    • 网上有一些成熟的产品,比如 nbconvert 也可以转化,但是这些都需要在电脑上安装,且需要一定编程基础,或者渲染效果不是很好,比如 colab ,所以我选择手搓一个网站,转化会简单一些。
    • 支持转化的格式:ipynb 转 PDF 、HTML 、Python ,其中,PDF 为了更好的效果,我使用服务器端转化,具体原因我后面会说,所以速度稍微慢一点,其余两种格式在浏览器端运行,速度很快。
    • 一些方便我自己使用的功能:代码高亮、单元格输出、数学公式渲染(基于 Katex )、图表渲染、批量转化、常见 Markdown 格式的支持等,同时,在转化为 Python 的时候,可以选择是否显示单元格内容。

    项目难点

    • 我碰到的第一个问题是 CSS 样式,我花了很长时间来调整。我在网上没有找到特别满意的 IPYNB CSS 样式,所以基本上内容都是我和 AI 一起手搓出来的,样式参考了 Colab ,然后做了一些改进,整体看起来会更简洁一些。为了考虑到更多情况,我看到 Github 上面有一个 ipynb 的样板仓库,我把里面的内容下载下来做了测试,基本都能准确转化。

    • 第二个问题是 html 转 pdf ,我原本以为这个需求会比较简单,因为我看到 html2pdf 这个包的使用量很大。但实际测试一下,导出的效果和 html 原本的样式差异很大。我尝试了主流的 html 转 pdf 、图像的浏览器端库,发现实现办法基本上都是把 html 转化成图片,然后再转化成 pdf ,这类库的效果都不是很好。如果 html 比较复杂,其实用 Puppeteer 的效果非常不错,基本上一比一还原 html 的效果,在转化为 pdf 或者图片的过程中。它的一个问题就是依赖 nodejs 环境,所以无法在浏览器端直接渲染,需要使用到服务器。如果你像我一样被 html 转 pdf 或者图片折磨过,我觉得可以试试这个库,效果很棒!

    • 看到第二个问题,可能有人会问为什么不直接调用浏览器的打印功能。我这里测试后发现,浏览器的打印功能无法实现批量转化,且样式会有一点差异,没有 Puppeteer 的效果好。

    网站

    https://ipynbtopdf.net/

    感谢观看,感谢使用!

    2 条回复    2025-08-26 10:08:51 +08:00
    pkwenda
        1
    pkwenda  
       12 天前
    很棒~ 总结收录到导航站了: https://findsofun.com/ipynbtopdf-net/
    pengxu980315
        2
    pengxu980315  
    OP
       7 天前
    @pkwenda 感谢收录!!感谢!
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1128 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 18:15 · PVG 02:15 · LAX 11:15 · JFK 14:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.