文 = Yokis
引言
隨著深度學習的興起,Python 語言的熱度也不斷上升,成為研究和生產的「首選語言」。Jupyter Notebook (原 IPython Notebook) 也成為編程利器。這一軟件使用網頁生成其界面,具有美觀、輕量的優點。其升級版 Jupyter Lab 也即將發布。新的 Jupyter Lab 保留了網頁界面的基礎上,添加了查看變量等 IDE 常用功能。值得單獨介紹一下。
不過今天還是專注于 Jupyter Notebook 上。 Notebook 這種形式,可以使代碼和文檔結合在一起。生成報告時,可以直接下載成為網頁。并可以進一步使用 Chrome 的 Print to PDF
功能生成 PDF 報告。
現在的問題是,頁面使用了 Jupyter themes 進行了美化。希望在生成報告的時候把美化后的效果保留下來。以下提供幾種方法。
改變 Chrome 渲染模式
參考了這個回答。
- 保存 Notebook 為網頁后,再用 Chrome 打開。
- 使用
F12
或Ctrl+Shift+I
(MacCmd+Opt+I
)打開開發者工具。 - 右上角點點點,選擇
More tools
→Rendering
- 下面
Emulate CSS Media
選項改為Screen
- 切換到原網頁(注意不要關閉開發者工具窗口),
Ctrl+P
打印網頁。
步驟
注:
這些寫出版本號 52 以上的方法,舊版方法見原答案(原答案回答的是 print view
,需要在最后一步改為 screen
)。
優點:
- 打印成為文字版 PDF 可以選中內容
缺點:
- 分頁時,圖片出現分開現象。而且目前沒有找到不分開元素打印的方法。
效果
修改前(注意生成的是黑白文字版)
修改后(保留了網頁樣式)
保存整個網頁為 PDF
使用 Fireshot 直接捕捉整個網頁為圖片或 PDF 。
優點:
- 保留所有效果
缺點:
- 只能生成圖片 PDF,文字無法選擇
- 整個網頁變成一大張,難以打印
后記
以上的方法,不僅適用于打印 Notebook 網頁。之前使用 js 進行代碼高亮,但卻不能打印出來,后來直接復制到 word 中,可以保留。同時還可以調整文字字體之類的。
生成 PDF 本身也只是為了保留格式進行交流。很大程度上背離了使用 Notebook 的本意。如果能使用 html ,盡量還是使用 html 吧。