是程序员,就用python导出pdf

54次阅读

共计 1429 个字符,预计需要花费 4 分钟才能阅读完成。

这两天一直在做课件,我个人一直不太喜欢 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」,获取本文全套源码!

正文完
 0