Skip to main content

Convert Your Colab Notebook to a PDF. One-Minute Install. Zero Configuration.

Project description

Directions: Copy→Paste→Run Open In Colab

# Colab2PDF v1.0.0 by Drengskapur (github.com/drengskapur/colab2pdf)
# License: GPL-3.0-or-later
# @title {display-mode:"form"}
# @markdown ⬇️ Download PDF
def colab2pdf():
    ENABLE=True # @param {type:"boolean"}
    if ENABLE:
        import os, datetime, json, pathlib, urllib, requests, werkzeug, nbformat, google.colab, yaml, warnings
        NAME = pathlib.Path(werkzeug.utils.secure_filename(urllib.parse.unquote(requests.get(f"http://{os.environ['COLAB_JUPYTER_IP']}:{os.environ['KMP_TARGET_PORT']}/api/sessions").json()[0]["name"])))
        TEMP = pathlib.Path("/content/pdfs") / f"{datetime.datetime.now().strftime('%Y%m%d_%H%M%S')}_{NAME.stem}"; TEMP.mkdir(parents=True, exist_ok=True)
        NB = [cell for cell in nbformat.reads(json.dumps(google.colab._message.blocking_request("get_ipynb", timeout_sec=30)["ipynb"]), as_version=4).cells if "--Colab2PDF" not in cell.source]
        warnings.filterwarnings('ignore', category=nbformat.validator.MissingIDFieldWarning)
        with (TEMP / f"{NAME.stem}.ipynb").open("w") as nb_copy: nbformat.write(nbformat.v4.new_notebook(cells=NB or [nbformat.v4.new_code_cell("#")]), nb_copy)
        if not pathlib.Path("/usr/local/bin/quarto").exists():
            !wget -q "https://quarto.org/download/latest/quarto-linux-amd64.deb" -P {TEMP} && dpkg -i {TEMP}/quarto-linux-amd64.deb > /dev/null && quarto install tinytex --update-path --quiet
        with (TEMP / "config.yml").open("w") as file: yaml.dump({'include-in-header': [{"text": r"\usepackage{fvextra}\DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaksymbolleft={},showspaces=false,showtabs=false,breaklines,breakanywhere,commandchars=\\\{\}}"}],'include-before-body': [{"text": r"\DefineVerbatimEnvironment{verbatim}{Verbatim}{breaksymbolleft={},showspaces=false,showtabs=false,breaklines}"}]}, file)
        !quarto render {TEMP}/{NAME.stem}.ipynb --metadata-file={TEMP}/config.yml --to pdf -M latex-auto-install -M margin-top=1in -M margin-bottom=1in -M margin-left=1in -M margin-right=1in --quiet
        google.colab.files.download(str(TEMP / f"{NAME.stem}.pdf"))
colab2pdf()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

colab2pdf-1.0.0a10.tar.gz (81.1 kB view details)

Uploaded Source

Built Distribution

colab2pdf-1.0.0a10-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file colab2pdf-1.0.0a10.tar.gz.

File metadata

  • Download URL: colab2pdf-1.0.0a10.tar.gz
  • Upload date:
  • Size: 81.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for colab2pdf-1.0.0a10.tar.gz
Algorithm Hash digest
SHA256 8c1016c19f42fdbb6e3f198b903ebd8ab39213454b5d46765b5fcb20e5e194c4
MD5 970bee736cad46ba9c2339bc9c4abe0a
BLAKE2b-256 3f25d55b4badfb0807761d634d3aa4b15ff585c1df1bcae51602a5966756da3c

See more details on using hashes here.

File details

Details for the file colab2pdf-1.0.0a10-py3-none-any.whl.

File metadata

File hashes

Hashes for colab2pdf-1.0.0a10-py3-none-any.whl
Algorithm Hash digest
SHA256 7e876fed4600090d92257685371d51088cf01a7225be8931285a80e2162d0883
MD5 01f4e40994a6ba795decddd223ba91a3
BLAKE2b-256 f8ead422659f67380917ded98e26fcc5b083d30d7df2568f24ffbe2c76f7ad80

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page