将jupyter中的ipynb文件转换成PDF文件

前言

如题,有些时候,在一些终端设备上,比如说平板或者手机上查看.ipynb文件会十分不便,我们需要启动jupyter服务端,在浏览器客户端才能查看翻阅.ipynb文件,所以我在私下里找了找是否可以将.ipynb文件转换成PDF文件,再拷贝到其它设备上阅览,这不,找到曲线救国的方法。大致操作为:

① 先将.ipynb文件转换成HTML文件;
② 再将HTML文件转换成PDF文件。

那么这里需要借助到两个工具,一个是wkhtmltopdf,另一个是 pdfkit

实现

首先,去这个官网下载wkhtmltopdf并双击安装(这里以windows为例):
http://wkhtmltopdf.org/
将jupyter中的ipynb文件转换成PDF文件_第1张图片
安装过程中一定要记住自己安装的路径,后面会有用到的地方,我是按照它的默认路径安装的,所以安装路径如下:
将jupyter中的ipynb文件转换成PDF文件_第2张图片
接下来安装第二个工具 pdfkit ,在自己的Python解释器中使用如下命令安装:

pip install pdfkit

安装完成后,我们编写如下脚本 file_to_pdf.py

import sys
import subprocess
import pdfkit

# 下面两种路径表示方法都行,一种是原生字符串,避免发生转义,一种是直接使用两个反斜杠表示转义下的一个反斜杠
# config = pdfkit.configuration(wkhtmltopdf=r"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe")
config = pdfkit.configuration(wkhtmltopdf="C:\\Program Files\\wkhtmltopdf\\bin\\wkhtmltopdf.exe")

inputfile = sys.argv[1].replace(" ", "\ ")
# print(inputfile)
temp_html = inputfile[0:inputfile.rfind('.')]+'.html'
command = 'ipython nbconvert --to html ' + inputfile
subprocess.call(command, shell=True)
print('============Convert To PDF Success!===========')
output_file =inputfile[0:inputfile.rfind('.')]+'.pdf'
pdfkit.from_file(temp_html,output_file, configuration=config)
subprocess.call('rm '+temp_html, shell=True)

脚本编写完成之后,我们就可以使用命令行去操作了!!!

比如说我们现在要将处在脚本文件 file_to_pdf.py 下一级目录 notebook 下的 test.ipynb 文件转换成PDF文件,执行如下命令:

 python file_to_pdf.py ./notebook/test.ipynb

PS:生成的PDF文件与你的.ipynb文件 在同一目录下。

如上,功能实现完成!

参考文献:
https://www.jianshu.com/p/49a0c9f74d59
https://blog.csdn.net/qq_38846810/article/details/83450293

你可能感兴趣的:(python)