最新版jupyter notebook导出为PDF
解决中文、表格及不需要代码等问题
RT,关于jupyter notebook导出为PDF的那些事儿
背景
自己在用Python
分析数据时总会依赖jupyter notebook(以下简称 notebook) 交互式的界面,然后把报告中需要的数据复制出来贴在Excel里
这波操作里,就不想贴数据了,而且在notebook里写结论也能直接定位到操作过程,或者说日后能复现、方便管理。所以可以考虑使用 notebook 导出的功能。虽然目前支持多种格式(html、markdown、pdf等),但又想兼顾各设备(电脑、手机)打开的便捷性,所以导出为pdf是个不错的选择。
但是,在导出为PDF的过程中遇到了以下几个问题/需求:
-
不显示中文
-
Code Free
对外展示的时候只需要结果即可
-
添加报告的目录
-
pandas.DataFrame Style格式导出后直接不显示
-
…
以上遇到的几个问题/需求,结合notebook导出为pdf的流程来看主要对应 notebook2LaTex 和 LaTex2PDF 两个阶段的事。但使用感知依然还是一件事,即notebook导出为PDF
(「Mark」目前还有个先转html再转pdf的方式 to webpdf
)
Choose to convert using latex or chrome web browser when converting to pdf. Output is significantly different for each.
- Use ’latex’ when you desire a formal report.
- Use ‘browser’ to get output similar to that when printing to pdf within a chrome web browser.
上文所列的 2、4便对应notebook2LaTex阶段,而剩下的第1、3个问题便是LaTex2PDF阶段的问题
在此均使用 jupyter nbconver
终端命令实现导出,且略过需要提前配置好的 Pandoc 和 Tex
notebook2LaTex
Code Free
关于不需要input中的代码问题,终端命令是能顺利实现的
|
|
但这样导出的pdf会遇到表格数据串行的问题,而且pandas.DataFrame
加上一些渲染后再导出也无法显示,即第4个问题
DataFrames2images
(当目前问题解决不了的时候,那就装个包:dataframe-image)
但是这个包没有封装--no-input
的选项,好在这个包的pdfExporter
部分也是从nbconvert
继承过来的,所以改下dataframe-image的源代码(_convert.py
文件)也是能实现code-free的
|
|
LaTex2PDF
中文及目录问题
这个问题放在LaTex2PDF这个阶段就好理解了,这个是跟LaTex有关,这玩意儿一开始就是老外整出来的,要显示中文得修改base.tex.j2
文件,加载一些宏包。(网上说要改article.tplx
文件的都是比较老的版本了,目前nbconvert
不那么整了)
|
|
之后工作中遇到新需求、问题再继续更新~