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.0a13.tar.gz (81.2 kB view details)

Uploaded Source

Built Distribution

colab2pdf-1.0.0a13-py3-none-any.whl (19.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: colab2pdf-1.0.0a13.tar.gz
  • Upload date:
  • Size: 81.2 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.0a13.tar.gz
Algorithm Hash digest
SHA256 4726cc283f8980c50125296ef9c558a658a90eabad862dc549dcee12aa5e6680
MD5 85c3b4f5ff1dc83c87b52ca9ad1c84e6
BLAKE2b-256 72ec1fe97cb9b3b690e67e46b0559acff88597917c8ec421e111e979b746cffc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for colab2pdf-1.0.0a13-py3-none-any.whl
Algorithm Hash digest
SHA256 0c28fc375adc1b7092fd6e1dd71c14fe40d8a6acdb049e18b215a971ecd45503
MD5 2cae0629ad656d53aef35eef1d0c9557
BLAKE2b-256 0f273d17a3075de1161d2948fdb8cddcce355e60e5a65758e4641240fdd43020

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