这两天一直在做课件, 我个人一直不太喜欢 PPT 这个东西...... 能不用就不用, 我个人特别崇尚极简风.
谁让我们是程序员呢, 所以就爱上了 Jupyter 写课件, 讲道理 Markdown 也是个非常不错的写书格式啊.
安装 Jupyter 其实非常简单, 你会 python 就应该会用 jupyter, 起码简单的 pip install jupyter, jupyter notebook 要会对伐~
好那接下来就是使用 jupyter 了, 启动 jupyter 后, 使用浏览器访问相应 IP:Port 就可以使用了. 没错, jupyter 就是这么一个可以用网站来写 python 的地方.
但是发讲义给同学们看, ipynb 格式的文件肯定不方便啊, 别人还没上课呢, 哪知道那么多? 再者 PDF 传阅起来也随时随地能打开啊. 所以我就想转换成 PDF.
但是打开文件, 点击下载, 发现出现了 Error
然后照着这个 Error, 就去谷歌了, 发现说的最多的就是要装一个 latex 环境, Mac 下完整的安装包要将近 3 个 G! 我就为了一个 PDF 还不需要这么大一个包吧? 所以寻思其他方法.
虽然 jupyter 对 PDF 支持的不是那么的友善, 但是对于 html 是非常棒的, 只不过 HTML 是一个 HTML 嘛 (这不是废话)...... 不过我可以利用 HTML 转换到 PDF 上啊.
后来了解到 python 有一个包叫 pdfkit, 专门用来转换 PDF 文件. 那我现在只需要在 Mac 上得到 pdfkit 的支持就好啦? 所以接下来就是尝试的过程了.
安装 pdfkit,pip install pdfkit
在这里下载对应系统的安装包 http://wkhtmltopdf.org/ , 这个只有 48MB.
最后就是为什么说 python 是「多膜优秀」的原因了! 直接看代码
- '''
- 需要安装 pdfkit, pip install pdfkit
- 自行下载并安装 wkhtmltopdf-binary, http://wkhtmltopdf.org/
- '''
- import sys
- import subprocess
- import pdfkit
- # 获得 ipynb 文件
- inputfile = sys.argv[1].replace("","\ ")
- # 截取 ipynb 前面的名字, 并保留一份 HTML 临时文件
- # 这份文件会在转换过程中需要
- # 因为我是利用 jupyter 对于 HTML 的支持, 使用 pdfkit 对 HTML 文件进行转换
- temp_html = inputfile[0:inputfile.rfind('.')]+'.html'
- # 转换 ipynb 文件为 HTML
- # 调用了 ipython 接口
- command = 'ipython nbconvert --to html' + inputfile
- # shell 端执行 command
- subprocess.call(command, shell=True)
- print('============success===========')
- # 拼接一个 PDF 名字
- output_file = inputfile[0:inputfile.rfind('.')]+'.pdf'
- # 大杀器出场, pdfkit 直接将 HTML 转换成 PDF
- pdfkit.from_file(temp_html, output_file)
- # 删除 HTML 临时文件
- subprocess.call('rm'+temp_html, shell=True)
操作起来也很简单:
至此, ipynb 文件已成功转换成 PDF 文件, 并且颜色, 格式全都保留!
关注公众号「Python 专栏」, 后台回复「zsxq06」, 获取本文全套源码!
来源: https://www.cnblogs.com/moonhmily/p/10625174.html