将 Google Colab 笔记本转换为 PDF/HTML?

Posted

技术标签:

【中文标题】将 Google Colab 笔记本转换为 PDF/HTML?【英文标题】:Convert Google Colab notebook to PDF / HTML? 【发布时间】:2020-06-30 02:16:09 【问题描述】:

我想知道 Google Colab 中是否有一种方法可以很好地整理输出,就像 R 中的 Markdown 以及如何将 IPython Notebook 转换为 pdf 和 html 格式?

我的输出由多个表格、图表等组成。我希望将它们漂亮地打印到一个文件中,其中的某些部分足以在报告中使用。如果没有这样的方法,最好的选择是什么?

【问题讨论】:

你的意思是创建一个“文本”单元格吗? @norok2 嗨,我想以一种很好的方式将我所有的 Google Colab 结果集中输出。 您在 Google Colab 中使用的不是 Jupyter Notebook 吗? @AMC 在我看来,Google Colab 在 Jupyter 中没有某些功能。 【参考方案1】:

您可以保存/导出 IPython 笔记本(菜单:File/Download .ipynb),然后使用 Jupyter 保存为 PDF。

【讨论】:

嗨,谢谢。你的意思是说谷歌Colab没有办法,反正我必须通过IPython Notebook输出? 我认为没有其他简单的方法可以满足您的需求。【参考方案2】:

您还可以使用 nbconvert 在 colab 中创建 pdf。

!apt update
!apt install texlive-xetex texlive-fonts-recommended texlive-generic-recommended

import re, pathlib, shutil

# Get a list of all your Notebooks
notebooks = [x for x in pathlib.Path("/content/drive/My Drive/Colab Notebooks").iterdir() if 
             re.search(r"\.ipynb", x.name, flags = re.I)]

for i, n in enumerate(notebooks):
    print(f"\nProcessing  [i+1:len(str(len(notebooks)))d/len(notebooks)]  n.name\n")

    # Optionally copy your notebooks from gdrive to your vm
    shutil.copy(n, n.name)
    n = pathlib.Path(n.name)

    !jupyter nbconvert "n.as_posix()" --to pdf --output "n.stem.replace(" ", "_")"

你也可以使用subprocess而不是使用魔法来运行 nbconvert

s = subprocess.Popen(shlex.split(
    f'jupyter nbconvert "n.as_posix()" --to pdf --output "n.stem.replace(" ", "_")"'
    ), shell = False, stdout = subprocess.PIPE, stderr = subprocess.PIPE)
s.wait()
s.stdout.read()

如果您使用非常复杂的模板,还有更多关于 xetex 的软件包可用。

sudo apt install pandoc nbconvert texlive texlive-latex-extra texlive-generic-extra

【讨论】:

以上是关于将 Google Colab 笔记本转换为 PDF/HTML?的主要内容,如果未能解决你的问题,请参考以下文章

将 .py 文件的整个文件夹导入 google colab

为啥 Google Colab 说我有太多会话?

如何在 Google Colab 上安装和使用底图?

pip 安装了 google.colab,现在无法在 Jupyter 笔记本上运行代码

在 Python 中嵌入 Matplotlib 动画(google colab notebook)

Google Colab使用学习笔记