我有一个小程序,基本上可以做各种统计计算,并打印出结果和图表。
目前,我的程序获得一个很好的pdf输出的一个方便的方法是在木星IPython笔记本中运行我的代码,使用魔术命令%matplotlib内嵌并通过执行“LaTex(.pdf)的pdf”保存为PDF。
但是,问题是,每次运行程序时,我都必须手动执行。此外,我不能将程序作为二进制可执行文件交付给其他人,这是我的最终目标。
有办法以编程的方式完成吗?为了明确起见,我想要的是以pdf格式输出我的程序,以便当可执行文件运行时,输出是pdf。我不希望最终用户创建IPython记事本,,最终用户将无法访问源代码。
发布于 2016-05-02 11:41:57
到目前为止,还没有将笔记本转换为PDF的编程语言API。但是,存在一个名为nbconvert的命令行实用程序。它具有与web接口的格式转换器相同的功能。要转换为PDF格式,可以执行jupyter nbconvert notebook.ipynb --to pdf
。
幸运的是,Python有一个方便的subprocess module,它允许您生成新的进程,检查它们的输入和输出,并获得它们的返回代码。所以你可以做这样的事:
import subprocess
subprocess.call("jupyter nbconvert notebook.ipynb --to pdf")
有点烦人的方式,但会成功的。如果您使用的是Windows,您可能需要将额外的kwarg shell=True
添加到subprocess.call()
发布于 2016-11-18 02:02:45
如果您有一个IPython笔记本,您可以制作一个小的python或bash脚本,该脚本首先执行,然后生成PDF。对我来说,这个bash脚本很有用:
jupyter nbconvert --ExecutePreprocessor.timeout=500 --to notebook --execute my_file.ipynb
jupyter nbconvert --to pdf my_file.nbconvert.ipynb
rm my_file.nbconvert.ipynb
如果要使用模板自定义输出,我发现先将文件转换为减价,然后使用pandoc创建PDF可以避免以下问题:
jupyter nbconvert --ExecutePreprocessor.timeout=500 --to notebook --execute my_file.ipynb
jupyter nbconvert --to markdown my_file.nbconvert.ipynb --template="mytemplate.tpl"
pandoc --toc --template=mytemplate.tex markdown my_file.nbconvert.ipynb --latex-engine=pdflatex -o final file.pdf
发布于 2019-08-16 18:44:12
在windows上,如果您想递归地转换,可以使用git窗口并执行如下操作:
$ find /d/we_are_on_disk_d/path_to_ipynb_files/ -name '*.ipynb' | xargs jupyter nbconvert --to [script|pdf]
https://stackoverflow.com/questions/36988699
复制