美文网首页程序员开源工具技巧
jupyter notebook 导出pdf的解决方法

jupyter notebook 导出pdf的解决方法

作者: aa1d742882b4 | 来源:发表于2017-02-10 13:53 被阅读6785次

为什么会有这个问题

由于这两天开始上课了,笔者忙于用jupyter notebook写各种作业,(这里推荐一下jupyter乃写作业真!神!器!也),它很好的支持markdown语法

Paste_Image.png

它能很好的处理图片

Paste_Image.png

能很好的处理公式

Paste_Image.png

还能直接展示代码和运行结果

Paste_Image.png

综上,笔者就用jupyter写完了作业,然而学校的交作业系统只支持doc或者pdf上传,然后jupyter导出pdf花式报错,所以就花了几个小时研究了一下这个问题。。。(虽然chrome的打印功能可以很方便的转化网页成pdf,但是所有的代码都变成黑白的了,强迫症患者表示不能忍。。。)

如何解决这个问题

先来看一下jupyter的报错:


Paste_Image.png

然后笔者就到了mac上最流行的latex环境maxtex官网,然而发现这个完整的安装包竟然要2.8G????只是为了让代码有颜色而已,还不打算给我的电脑装那么大的包,所以我就用了pdfkit+wkhtmltopdf+自定义脚本来完成这个工作了。
基本思路是先把jupyter notebook文件转换成支持很好的html,然后用pdfkit把html转成pdf,会在同目录下生产对应的pdf。

  1. 安装pdfkitpdfkit
    github: https://github.com/pdfkit/pdfkit.git
pip install pdfkit
  1. 安装wkhtmltopdf-binary去官网下载一个24M的wkhtmltopdf安装程序:
    http://wkhtmltopdf.org/
  2. 写一个python脚本
import sys
import subprocess
import pdfkit
inputfile = sys.argv[1].replace(" ","\ ")
temp_html = inputfile[0:inputfile.rfind('.')]+'.html'
command = 'ipython nbconvert --to html ' + inputfile
subprocess.call(command,shell=True)
print '============success==========='
output_file =inputfile[0:inputfile.rfind('.')]+'.pdf'
pdfkit.from_file(temp_html,output_file)
subprocess.call('rm '+temp_html,shell=True)
  1. 使用方法然后每次要转换文件都到terminal中输入以下命令:
python script.py yourfile.ipynb

大功告成!

相关文章

网友评论

    本文标题:jupyter notebook 导出pdf的解决方法

    本文链接:https://www.haomeiwen.com/subject/tzpgittx.html