From 23ea706e2493ca4805c8c08f4b8d1b758354a092 Mon Sep 17 00:00:00 2001 From: Tater Date: Sun, 4 Oct 2026 18:09:35 -0500 Subject: [PATCH 1/4] examples: ship a designed Python invoice download starter --- examples/web_frameworks/README.md | 82 +++++++++++---- examples/web_frameworks/build_starter.py | 70 +++++++++++++ examples/web_frameworks/check_examples.py | 24 ++++- examples/web_frameworks/check_http.py | 94 ++++++++++++++++++ examples/web_frameworks/demo.py | 14 +++ examples/web_frameworks/django_app.py | 16 ++- examples/web_frameworks/fastapi_app.py | 12 +++ examples/web_frameworks/flask_app.py | 11 ++ .../web_frameworks/fonts/BebasNeue-OFL.txt | 93 +++++++++++++++++ .../fonts/BebasNeue-Regular.ttf | Bin 0 -> 61400 bytes .../fonts/DMSerifDisplay-Italic.ttf | Bin 0 -> 71208 bytes .../fonts/DMSerifDisplay-OFL.txt | 93 +++++++++++++++++ .../fonts/DMSerifDisplay-Regular.ttf | Bin 0 -> 76580 bytes examples/web_frameworks/fonts/sources.json | 36 +++++++ examples/web_frameworks/invoice.py | 62 ++++-------- .../web_frameworks/requirements-check.txt | 1 + examples/web_frameworks/static/index.html | 54 ++++++++++ examples/web_frameworks/static/invoice.png | Bin 0 -> 130289 bytes examples/web_frameworks/templates/invoice.css | 48 +++++++++ .../web_frameworks/templates/invoice.html | 28 ++++++ 20 files changed, 674 insertions(+), 64 deletions(-) create mode 100644 examples/web_frameworks/build_starter.py create mode 100644 examples/web_frameworks/check_http.py create mode 100644 examples/web_frameworks/demo.py create mode 100644 examples/web_frameworks/fonts/BebasNeue-OFL.txt create mode 100644 examples/web_frameworks/fonts/BebasNeue-Regular.ttf create mode 100644 examples/web_frameworks/fonts/DMSerifDisplay-Italic.ttf create mode 100644 examples/web_frameworks/fonts/DMSerifDisplay-OFL.txt create mode 100644 examples/web_frameworks/fonts/DMSerifDisplay-Regular.ttf create mode 100644 examples/web_frameworks/fonts/sources.json create mode 100644 examples/web_frameworks/static/index.html create mode 100644 examples/web_frameworks/static/invoice.png create mode 100644 examples/web_frameworks/templates/invoice.css create mode 100644 examples/web_frameworks/templates/invoice.html diff --git a/examples/web_frameworks/README.md b/examples/web_frameworks/README.md index 381e710..64ee826 100644 --- a/examples/web_frameworks/README.md +++ b/examples/web_frameworks/README.md @@ -1,36 +1,50 @@ # PDF invoice responses with FastAPI, Flask, and Django -Each app serves the same fictional invoice at +Each app opens a small download page at `http://127.0.0.1:8000/` and serves the same fictional invoice at `http://127.0.0.1:8000/invoices/INV-1042.pdf`. Fullbleed renders the document into bytes; the framework returns those bytes as an `application/pdf` attachment. Unknown invoice IDs return HTTP 404. The shared [invoice renderer](invoice.py) uses Python `Decimal` for the total, -escapes text for HTML, embeds the bundled Inter font, and creates an engine per +escapes text for HTML, embeds Inter plus the included DM Serif Display and Bebas Neue fonts, and creates an engine per request. Rendering stays in memory, so concurrent requests do not share output filenames. The endpoint uses a fixed download filename and disables response caching. ## Run one app -From a repository checkout, enter this directory in a Python virtual environment: +Use Python 3.10–3.14. Extract the downloadable starter and open its +`fullbleed-python-invoice` directory, or use `examples/web_frameworks` in a +repository checkout. Create and activate a virtual environment first: ```bash -cd examples/web_frameworks +python -m venv .venv +``` + +Activate it on macOS or Linux: + +```bash +source .venv/bin/activate +``` + +Or in Windows PowerShell: + +```powershell +.venv\Scripts\Activate.ps1 ``` Choose one framework. Only install its dependencies; these packages are separate from the dependency-free Fullbleed runtime. The examples are checked with -Fullbleed 2.4.0 and the framework versions pinned in the requirement files. +Fullbleed 2.5.6 and the framework versions pinned in the requirement files. ### FastAPI ```bash -python -m pip install fullbleed -r requirements-fastapi.txt +python -m pip install fullbleed==2.5.6 -r requirements-fastapi.txt python -m uvicorn fastapi_app:app --host 127.0.0.1 --port 8000 ``` -Open the PDF URL above. FastAPI's interactive API documentation is available at +Open `http://127.0.0.1:8000/` and select **Download invoice**. FastAPI's interactive API documentation is available at `http://127.0.0.1:8000/docs` and declares the PDF response type. The route uses a normal `def`, which FastAPI runs in its thread pool, so the synchronous renderer is not called directly on the async event loop. @@ -39,14 +53,14 @@ See [FastAPI's concurrency guide](https://fastapi.tiangolo.com/async/#path-opera ### Flask ```bash -python -m pip install fullbleed -r requirements-flask.txt +python -m pip install fullbleed==2.5.6 -r requirements-flask.txt python -m flask --app flask_app run --host 127.0.0.1 --port 8000 ``` ### Django ```bash -python -m pip install fullbleed -r requirements-django.txt +python -m pip install fullbleed==2.5.6 -r requirements-django.txt python django_app.py runserver 127.0.0.1:8000 --noreload ``` @@ -56,11 +70,23 @@ that project's settings. ## Use your application data +Edit `templates/invoice.html` for the document structure and +`templates/invoice.css` for its typography, columns, colors, and spacing. +The renderer reads these files for each download, so template edits appear +without restarting the server. The HTML uses Python `string.Template` +placeholders such as `$customer`, `$number`, `$rows`, and `$total`. A literal +dollar sign in the template is written as `$$`. + +The included design is a fixed one-page A4 sample for three line items. +When adapting it for longer invoices, change the page geometry and pagination, +then inspect the resulting pages. This starter does not implement tax, +discounts, invoice numbering, payment collection, or application authentication. + Replace `load_invoice()` with your application's authorized record lookup. Keep access checks in that lookup or in the route before rendering. The helper expects an invoice number, customer, issued/due date strings, and an item list containing -description, integer quantity, and unit-price strings. This small example omits -tax and discounts. Its record is fictional and requires no database. +description, an optional `detail`, integer quantity, and unit-price strings. +Its record is fictional and requires no database. These launch commands run local development servers. Use your framework's deployment setup for a public application. For large jobs, move rendering to your @@ -70,15 +96,33 @@ compiled document families. ## Check all three examples -From the repository root, with a built Fullbleed wheel installed: +From this directory, with Fullbleed installed: + +```bash +python -m pip install -r requirements-check.txt +python check_examples.py --out output/check +``` + +The check uses each framework's test client and starts all three documented +local servers in turn. It checks real HTTP downloads, paired requests, headers, +404/405 responses, expected text and totals with an independent PDF reader, +embedded fonts, and matching bytes. Each server stops when its checks finish. +It also verifies FastAPI's OpenAPI media type, literal markup and placeholder-like +customer text, and the saved preview. CI runs it with a built wheel on Windows +and Linux and retains the outputs. + +After editing the invoice, update the page's saved preview with: ```bash -python -m pip install -r examples/web_frameworks/requirements-check.txt -python examples/web_frameworks/check_examples.py --out target/web-framework-check +python check_examples.py --out output/check --update-preview ``` -The check uses each framework's test client, saves the returned PDFs, checks -headers, missing-record responses, expected text and total, embedded fonts, and -repeat-request bytes. It also checks FastAPI's OpenAPI media type and literal -markup-like customer text, then emits a PNG preview and `verification.json`. -CI runs it with the built wheel on Windows and Linux and retains the outputs. +The download page's screenshot is a saved sample; the PDF download is rendered +on request from the current template. Review `output/check/preview/invoice_page1.png` +and the PDF after a layout change. + +## License + +Example code and the Fullbleed engine are MIT licensed. The included display +fonts use SIL OFL 1.1; their licenses, pinned upstream sources, and hashes are in +`fonts/`. Inter and its license ship with the installed Fullbleed package. diff --git a/examples/web_frameworks/build_starter.py b/examples/web_frameworks/build_starter.py new file mode 100644 index 0000000..0923b27 --- /dev/null +++ b/examples/web_frameworks/build_starter.py @@ -0,0 +1,70 @@ +#!/usr/bin/env python3 +# SPDX-License-Identifier: MIT +"""Build the standalone source ZIP and its actual PDF/PNG sample assets.""" +import argparse +from datetime import datetime, timezone +import hashlib +from importlib import metadata +import json +from pathlib import Path +import subprocess +import zipfile + +import fullbleed +from invoice import load_invoice, render_invoice + +ROOT = Path(__file__).resolve().parent +REPOSITORY = ROOT.parents[1] +FILES = ["README.md", "invoice.py", "demo.py", "fastapi_app.py", "flask_app.py", "django_app.py", + "check_examples.py", "check_http.py", "requirements-fastapi.txt", "requirements-flask.txt", + "requirements-django.txt", "requirements-check.txt", "templates/invoice.html", + "templates/invoice.css", "static/index.html", "static/invoice.png"] + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--out", type=Path, required=True) + args = parser.parse_args() + out = args.out.resolve() + source_commit = subprocess.check_output(["git", "rev-parse", "HEAD"], cwd=REPOSITORY, text=True).strip() + dirty = subprocess.check_output(["git", "status", "--porcelain", "--", str(ROOT)], cwd=REPOSITORY, text=True).strip() + if dirty: + raise SystemExit("Commit the example source before packaging its public download.") + out.mkdir(parents=True, exist_ok=False) + # Package committed bytes, independent of checkout newline conversion. + def committed(path: Path) -> bytes: + return subprocess.check_output(["git", "show", source_commit+":"+path.relative_to(REPOSITORY).as_posix()], cwd=REPOSITORY) + content = {name: committed(ROOT/name) for name in FILES} + for path in sorted((ROOT/"fonts").iterdir()): + if path.is_file(): content[path.relative_to(ROOT).as_posix()] = committed(path) + content["LICENSE"] = committed(REPOSITORY/"LICENSE") + content[".gitignore"] = b".venv/\n__pycache__/\noutput/\n" + pdf = render_invoice(load_invoice("INV-1042")) + (out/"invoice.pdf").write_bytes(pdf) + previews = fullbleed.PdfEngine().render_finalized_pdf_image_pages_to_dir( + str(out/"invoice.pdf"), str(out/"preview"), 110, "invoice") + assert len(previews) == 1 + png = Path(previews[0]).read_bytes() + assert png == content["static/invoice.png"], "Refresh and review the saved preview before packaging." + (out/"invoice.png").write_bytes(png) + digest = lambda data: hashlib.sha256(data).hexdigest() + manifest = {"schema": "fullbleed.python-web-starter.v1", "engineVersion": metadata.version("fullbleed"), + "sourceRepository": "https://github.com/fullbleed-engine/fullbleed-official", + "sourceCommit": source_commit, + "files": [{"path": name, "bytes": len(data), "sha256": digest(data)} for name,data in sorted(content.items())]} + content["MANIFEST.json"] = (json.dumps(manifest, indent=2)+"\n").encode() + archive = out/"project.zip" + with zipfile.ZipFile(archive, "x", compression=zipfile.ZIP_DEFLATED) as zipped: + for name,data in sorted(content.items()): + item = zipfile.ZipInfo("fullbleed-python-invoice/"+name, (2026,1,1,0,0,0)) + item.compress_type = zipfile.ZIP_DEFLATED + item.external_attr = 0o100644 << 16 + zipped.writestr(item,data) + manifest["checkedAt"] = datetime.now(timezone.utc).isoformat() + manifest["assets"] = [{"file": name, "bytes": (out/name).stat().st_size, + "sha256": digest((out/name).read_bytes())} for name in ["project.zip","invoice.pdf","invoice.png"]] + (out/"source.json").write_text(json.dumps(manifest,indent=2)+"\n",encoding="utf-8") + print(json.dumps({"sourceCommit":source_commit,"assets":manifest["assets"]})) + + +if __name__ == "__main__": main() diff --git a/examples/web_frameworks/check_examples.py b/examples/web_frameworks/check_examples.py index f342775..9e338a4 100644 --- a/examples/web_frameworks/check_examples.py +++ b/examples/web_frameworks/check_examples.py @@ -11,8 +11,10 @@ import json import os from pathlib import Path +import shutil import fullbleed +from pypdf import PdfReader from invoice import load_invoice, render_invoice @@ -25,9 +27,15 @@ def inspect(path: Path, markers: list[str]) -> dict: for marker in markers: assert marker in text, (path.name, "missing PDF text", marker) assert report["page_count"] == 1, (path.name, "unexpected page count") - assert report["profile"]["embedded_font_count"] >= 1, (path.name, "font not embedded") + assert report["profile"]["embedded_font_count"] >= 4, (path.name, "design fonts not embedded") assert not report["warnings"], (path.name, report["warnings"]) assert not report["composition"]["issues"], (path.name, report["composition"]) + independent = PdfReader(path) + assert len(independent.pages) == 1 + independent_text = "".join(independent.pages[0].extract_text().split()) + for marker in markers: + assert "".join(marker.split()) in independent_text, (path.name, "independent text", marker) + assert independent_text.count("Designworkshop") == 1, (path.name, "duplicate text") return report @@ -63,6 +71,7 @@ def check_client(name: str, client, out: Path) -> dict: def main() -> int: parser = argparse.ArgumentParser(description=__doc__) parser.add_argument("--out", type=Path, default=Path("target/web-framework-check")) + parser.add_argument("--update-preview", action="store_true", help="Refresh the local demo's saved preview after editing the invoice.") args = parser.parse_args() out = args.out.resolve() out.mkdir(parents=True, exist_ok=True) @@ -89,7 +98,7 @@ def main() -> int: # Exercise literal markup-like customer text independently of the fixed HTTP sample. data = load_invoice("INV-1042") assert data is not None - data["customer"] = "North & Partners" + data["customer"] = "North & ${rows}" escaped = out / "escaped-text.pdf" escaped.write_bytes(render_invoice(data)) inspect(escaped, [data["customer"], "USD 1,870.00"]) @@ -98,16 +107,23 @@ def main() -> int: str(out / "fastapi.pdf"), str(out / "preview"), 110, "invoice" ) assert len(previews) == 1 and Path(previews[0]).read_bytes().startswith(b"\x89PNG\r\n\x1a\n") + saved_preview = Path(__file__).resolve().parent / "static/invoice.png" + if args.update_preview: + shutil.copyfile(previews[0], saved_preview) + assert Path(previews[0]).read_bytes() == saved_preview.read_bytes(), "Saved preview is stale; rerun with --update-preview." + from check_http import check_servers + http = check_servers(out, (out / "fastapi.pdf").read_bytes()) report = { "ok": True, "checked_at": datetime.now(timezone.utc).isoformat(), - "versions": {name: metadata.version(name) for name in ["fullbleed", "fastapi", "Flask", "Django", "httpx2"]}, + "versions": {name: metadata.version(name) for name in ["fullbleed", "fastapi", "Flask", "Django", "httpx2", "pypdf"]}, "frameworks": results, + "http_servers": http, "all_framework_pdf_bytes_identical": True, "literal_customer_text_check": "passed", "fastapi_openapi_pdf_type": "passed", "preview": str(previews[0]), - "scope": "Framework test clients, PDF content, headers, font embedding, and repeat requests; no throughput or standards-conformance claim.", + "scope": "Test clients and actual local HTTP servers, independent PDF text, headers, font embedding, saved preview, and matching parallel responses; no throughput, hosted-deployment, or standards-conformance claim.", } (out / "verification.json").write_text(json.dumps(report, indent=2) + "\n", encoding="utf-8") print(json.dumps(report, indent=2)) diff --git a/examples/web_frameworks/check_http.py b/examples/web_frameworks/check_http.py new file mode 100644 index 0000000..543c432 --- /dev/null +++ b/examples/web_frameworks/check_http.py @@ -0,0 +1,94 @@ +# SPDX-License-Identifier: MIT +"""Exercise the documented local server commands using actual HTTP responses.""" +from concurrent.futures import ThreadPoolExecutor +from contextlib import contextmanager +import hashlib +import os +from pathlib import Path +import socket +import subprocess +import sys +import time +from urllib.error import HTTPError, URLError +from urllib.request import Request, build_opener, ProxyHandler + +ROOT = Path(__file__).resolve().parent +OPEN = build_opener(ProxyHandler({})).open + + +def fetch(url: str, method: str = "GET"): + try: + response = OPEN(Request(url, method=method), timeout=20) + except HTTPError as error: + response = error + with response: + return response.status, response.headers, response.read() + + +@contextmanager +def server(name: str, out: Path): + with socket.socket() as listener: + listener.bind(("127.0.0.1", 0)) + port = listener.getsockname()[1] + commands = { + "fastapi": ["-m", "uvicorn", "fastapi_app:app", "--host", "127.0.0.1", "--port", str(port)], + "flask": ["-m", "flask", "--app", "flask_app", "run", "--host", "127.0.0.1", "--port", str(port)], + "django": ["django_app.py", "runserver", f"127.0.0.1:{port}", "--noreload"], + } + env = {key: os.environ[key] for key in ["PATH", "SystemRoot", "WINDIR", "TEMP", "TMP", "HOME", "LANG"] if key in os.environ} + env.update(PYTHONNOUSERSITE="1", PYTHONUNBUFFERED="1") + origin = f"http://127.0.0.1:{port}" + with (out / f"{name}-server.log").open("w", encoding="utf-8") as log: + process = subprocess.Popen([sys.executable, *commands[name]], cwd=ROOT, + env=env, stdout=log, stderr=subprocess.STDOUT) + try: + deadline = time.monotonic() + 20 + while True: + if process.poll() is not None: + raise AssertionError(f"{name} exited during startup; inspect its server log.") + try: + assert fetch(origin)[0] == 200 + break + except URLError: + if time.monotonic() >= deadline: + raise TimeoutError(f"{name} did not start in 20 seconds.") + time.sleep(0.1) + yield origin + finally: + if process.poll() is None: + process.terminate() + try: + process.wait(timeout=10) + except subprocess.TimeoutExpired: + process.kill() + process.wait(timeout=10) + + +def check_servers(out: Path, expected_pdf: bytes) -> list[dict]: + records = [] + for name in ["fastapi", "flask", "django"]: + with server(name, out) as origin: + code, headers, page = fetch(origin) + assert code == 200 and headers.get_content_type() == "text/html" + assert page == (ROOT / "static/index.html").read_bytes() + code, headers, preview = fetch(origin + "/preview.png") + assert code == 200 and headers.get_content_type() == "image/png" + assert preview == (ROOT / "static/invoice.png").read_bytes() + url = origin + "/invoices/INV-1042.pdf" + with ThreadPoolExecutor(max_workers=2) as pool: + responses = list(pool.map(fetch, [url, url])) + for code, headers, pdf in responses: + assert code == 200 and pdf == expected_pdf + assert headers.get_content_type() == "application/pdf" + assert headers["Content-Disposition"] == 'attachment; filename="invoice.pdf"' + assert headers["Cache-Control"] == "private, no-store" + assert fetch(origin + "/invoices/DOES-NOT-EXIST.pdf")[0] == 404 + assert fetch(url, "POST")[0] == 405 + (out / f"{name}-http.pdf").write_bytes(responses[0][2]) + records.append({"framework": name, "ok": True, "pdf_status": 200, + "missing_status": 404, "post_status": 405, + "parallel_responses_identical": True, + "sha256": hashlib.sha256(expected_pdf).hexdigest(), + "home_and_preview_match": True}) + records[-1]["server_stopped"] = True + return records diff --git a/examples/web_frameworks/demo.py b/examples/web_frameworks/demo.py new file mode 100644 index 0000000..850d5d9 --- /dev/null +++ b/examples/web_frameworks/demo.py @@ -0,0 +1,14 @@ +# SPDX-License-Identifier: MIT +"""Fixed local-demo assets shared by the three framework adapters.""" +from pathlib import Path + +STATIC = Path(__file__).resolve().parent / "static" +DEMO_HEADERS = {"Cache-Control": "no-store"} + + +def page_html() -> str: + return (STATIC / "index.html").read_text(encoding="utf-8") + + +def preview_bytes() -> bytes: + return (STATIC / "invoice.png").read_bytes() diff --git a/examples/web_frameworks/django_app.py b/examples/web_frameworks/django_app.py index f96b4f5..7b6149d 100644 --- a/examples/web_frameworks/django_app.py +++ b/examples/web_frameworks/django_app.py @@ -8,6 +8,7 @@ from django.urls import path from django.views.decorators.http import require_safe +from demo import DEMO_HEADERS, page_html, preview_bytes from invoice import PDF_HEADERS, load_invoice, render_invoice @@ -21,6 +22,16 @@ INSTALLED_APPS = [] +@require_safe +def index(request) -> HttpResponse: + return HttpResponse(page_html(), content_type="text/html", headers=DEMO_HEADERS) + + +@require_safe +def preview(request) -> HttpResponse: + return HttpResponse(preview_bytes(), content_type="image/png", headers=DEMO_HEADERS) + + @require_safe def invoice_pdf(request, invoice_id: str) -> HttpResponse: invoice = load_invoice(invoice_id) @@ -31,7 +42,10 @@ def invoice_pdf(request, invoice_id: str) -> HttpResponse: ) -urlpatterns = [path("invoices/.pdf", invoice_pdf)] +urlpatterns = [ + path("", index), path("preview.png", preview), + path("invoices/.pdf", invoice_pdf), +] if __name__ == "__main__": diff --git a/examples/web_frameworks/fastapi_app.py b/examples/web_frameworks/fastapi_app.py index 307dd65..7d86fa4 100644 --- a/examples/web_frameworks/fastapi_app.py +++ b/examples/web_frameworks/fastapi_app.py @@ -2,7 +2,9 @@ """Run: python -m uvicorn fastapi_app:app --host 127.0.0.1 --port 8000""" from fastapi import FastAPI, HTTPException, Response +from fastapi.responses import HTMLResponse +from demo import DEMO_HEADERS, page_html, preview_bytes from invoice import PDF_HEADERS, load_invoice, render_invoice @@ -13,6 +15,16 @@ class PDFResponse(Response): app = FastAPI(title="Fullbleed invoice example") +@app.get("/", response_class=HTMLResponse, include_in_schema=False) +def index() -> HTMLResponse: + return HTMLResponse(page_html(), headers=DEMO_HEADERS) + + +@app.get("/preview.png", include_in_schema=False) +def preview() -> Response: + return Response(preview_bytes(), media_type="image/png", headers=DEMO_HEADERS) + + @app.get("/invoices/{invoice_id}.pdf", response_class=PDFResponse) def invoice_pdf(invoice_id: str) -> PDFResponse: invoice = load_invoice(invoice_id) diff --git a/examples/web_frameworks/flask_app.py b/examples/web_frameworks/flask_app.py index 0e0b1f8..0a6be24 100644 --- a/examples/web_frameworks/flask_app.py +++ b/examples/web_frameworks/flask_app.py @@ -3,12 +3,23 @@ from flask import Flask, Response, abort +from demo import DEMO_HEADERS, page_html, preview_bytes from invoice import PDF_HEADERS, load_invoice, render_invoice app = Flask(__name__) +@app.get("/") +def index() -> Response: + return Response(page_html(), mimetype="text/html", headers=DEMO_HEADERS) + + +@app.get("/preview.png") +def preview() -> Response: + return Response(preview_bytes(), mimetype="image/png", headers=DEMO_HEADERS) + + @app.get("/invoices/.pdf") def invoice_pdf(invoice_id: str) -> Response: invoice = load_invoice(invoice_id) diff --git a/examples/web_frameworks/fonts/BebasNeue-OFL.txt b/examples/web_frameworks/fonts/BebasNeue-OFL.txt new file mode 100644 index 0000000..da95714 --- /dev/null +++ b/examples/web_frameworks/fonts/BebasNeue-OFL.txt @@ -0,0 +1,93 @@ +Copyright © 2010 by Dharma Type. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/examples/web_frameworks/fonts/BebasNeue-Regular.ttf b/examples/web_frameworks/fonts/BebasNeue-Regular.ttf new file mode 100644 index 0000000000000000000000000000000000000000..c328c6e08b20a20a1de47d823e007ee73812a438 GIT binary patch literal 61400 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 literal 0 HcmV?d00001 diff --git a/examples/web_frameworks/fonts/DMSerifDisplay-Italic.ttf b/examples/web_frameworks/fonts/DMSerifDisplay-Italic.ttf new file mode 100644 index 0000000000000000000000000000000000000000..5369414a2df59bf462a88aa0f04a81ff18f1eb80 GIT binary patch literal 71208 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�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 K4DH(t+KnzcNyyLu literal 0 HcmV?d00001 diff --git a/examples/web_frameworks/fonts/sources.json b/examples/web_frameworks/fonts/sources.json new file mode 100644 index 0000000..0dc3f83 --- /dev/null +++ b/examples/web_frameworks/fonts/sources.json @@ -0,0 +1,36 @@ +{ + "license": "OFL-1.1", + "source_commit": "9710da1eacb3be272583c3224dcb70f9da6eadbb", + "files": [ + { + "file": "BebasNeue-Regular.ttf", + "url": "https://raw.githubusercontent.com/google/fonts/9710da1eacb3be272583c3224dcb70f9da6eadbb/ofl/bebasneue/BebasNeue-Regular.ttf", + "bytes": 61400, + "sha256": "08e4623805102d819f58601e46e345648846075e363b2ceb23313c2d1c83ec73" + }, + { + "file": "BebasNeue-OFL.txt", + "url": "https://raw.githubusercontent.com/google/fonts/9710da1eacb3be272583c3224dcb70f9da6eadbb/ofl/bebasneue/OFL.txt", + "bytes": 4337, + "sha256": "72082f6cb4d04be2ecf7cc7d9e1e7d73787f0af8a5a278a47cade70c16b78341" + }, + { + "file": "DMSerifDisplay-Regular.ttf", + "url": "https://raw.githubusercontent.com/google/fonts/9710da1eacb3be272583c3224dcb70f9da6eadbb/ofl/dmserifdisplay/DMSerifDisplay-Regular.ttf", + "bytes": 76580, + "sha256": "8cc3643535edf039aa5d95440a8542735e9197e4f4b8d9303e980fefbf5ab616" + }, + { + "file": "DMSerifDisplay-Italic.ttf", + "url": "https://raw.githubusercontent.com/google/fonts/9710da1eacb3be272583c3224dcb70f9da6eadbb/ofl/dmserifdisplay/DMSerifDisplay-Italic.ttf", + "bytes": 71208, + "sha256": "df74c0ac387baeaeb0fe4f2324e1668e6a3ed8c09cd9796fe162c71753e19e45" + }, + { + "file": "DMSerifDisplay-OFL.txt", + "url": "https://raw.githubusercontent.com/google/fonts/9710da1eacb3be272583c3224dcb70f9da6eadbb/ofl/dmserifdisplay/OFL.txt", + "bytes": 4605, + "sha256": "a3e5cdd67d4571dd0a24fcc968de0efde7ae97ef752daf0906e4767619dd7231" + } + ] +} diff --git a/examples/web_frameworks/invoice.py b/examples/web_frameworks/invoice.py index a8ab4cb..ca25c6e 100644 --- a/examples/web_frameworks/invoice.py +++ b/examples/web_frameworks/invoice.py @@ -4,10 +4,13 @@ from decimal import Decimal from html import escape from importlib import resources +from pathlib import Path +from string import Template from typing import Any import fullbleed +ROOT = Path(__file__).resolve().parent PDF_HEADERS = { "Content-Disposition": 'attachment; filename="invoice.pdf"', @@ -25,9 +28,9 @@ def load_invoice(invoice_id: str) -> dict[str, Any] | None: "issued": "2026-10-01", "due": "2026-10-31", "items": [ - {"description": "Design workshop", "quantity": 8, "unit_price": "125.00"}, - {"description": "Implementation", "quantity": 6, "unit_price": "95.00"}, - {"description": "Review and handoff", "quantity": 2, "unit_price": "150.00"}, + {"description": "Design workshop", "detail": "Positioning, priorities, and a clear creative direction", "quantity": 8, "unit_price": "125.00"}, + {"description": "Implementation", "detail": "A cohesive visual system, from layout to launch", "quantity": 6, "unit_price": "95.00"}, + {"description": "Review and handoff", "detail": "Final refinements, documentation, and delivery", "quantity": 2, "unit_price": "150.00"}, ], } @@ -37,47 +40,26 @@ def render_invoice(data: dict[str, Any]) -> bytes: amounts = [Decimal(item["unit_price"]) * item["quantity"] for item in data["items"]] total = sum(amounts, Decimal("0.00")) rows = "".join( - f"{escape(item['description'])}" - f"{item['quantity']}" - f"USD {Decimal(item['unit_price']):,.2f}" - f"USD {amount:,.2f}" + f"{escape(item['description'])}" + f"

{escape(item.get('detail', ''))}

" + f"{escape(str(item['quantity']))}" + f"{Decimal(item['unit_price']):,.2f}" + f"{amount:,.2f}" for item, amount in zip(data["items"], amounts) ) - html = f""" -Invoice -
-

Northstar Studio

-

Invoice {escape(data['number'])}

-

Issued {escape(data['issued'])} · Due {escape(data['due'])}

-

BILL TO

-

{escape(data['customer'])}

- - - {rows}
DescriptionQtyUnit priceAmount
-

Total due: USD {total:,.2f}

-

Thank you for your business.

-
""" - css = """ -@page { size: A4; margin: 20mm; } -body { font-family: Inter, sans-serif; color: #18312e; font-size: 10pt; - line-height: 1.45; margin: 0; } -.brand { color: #175c52; font-size: 13pt; font-weight: 700; margin: 0 0 24pt; } -h1 { font-size: 27pt; margin: 0 0 6pt; } -.dates, .label, .note { color: #526762; } -.dates { margin: 0 0 25pt; } -.recipient { margin-bottom: 24pt; } -.recipient p { margin: 0 0 4pt; } -.label { font-size: 8pt; font-weight: 700; } -table { width: 100%; border-collapse: collapse; } -th, td { text-align: left; padding: 10pt 8pt; border-bottom: 0.6pt solid #d6e2df; } -th { background: #edf4f1; color: #175c52; font-size: 9pt; } -.number { text-align: right; white-space: nowrap; } -.total { margin: 24pt 0 0; text-align: right; font-size: 14pt; } -.note { margin-top: 42pt; font-size: 9pt; } -""" + # Template substitution runs once: placeholder-like text inside a customer + # value stays literal. Only application-owned row markup enters unescaped. + html = Template((ROOT / "templates/invoice.html").read_text(encoding="utf-8")).substitute( + number=escape(data["number"]), customer=escape(data["customer"]), + issued=escape(data["issued"]), due=escape(data["due"]), rows=rows, + total=f"{total:,.2f}", + ) + css = (ROOT / "templates/invoice.css").read_text(encoding="utf-8") font = resources.files("fullbleed_assets").joinpath("fonts/Inter-Variable.ttf") engine = fullbleed.PdfEngine( - font_files=[str(font)], + font_files=[str(font), *(str(ROOT / "fonts" / name) for name in [ + "DMSerifDisplay-Regular.ttf", "DMSerifDisplay-Italic.ttf", "BebasNeue-Regular.ttf", + ])], document_title=f"Invoice {data['number']}", document_lang="en", ) diff --git a/examples/web_frameworks/requirements-check.txt b/examples/web_frameworks/requirements-check.txt index e105dff..553228c 100644 --- a/examples/web_frameworks/requirements-check.txt +++ b/examples/web_frameworks/requirements-check.txt @@ -3,3 +3,4 @@ -r requirements-flask.txt -r requirements-django.txt httpx2==2.13.1 +pypdf==6.19.0 diff --git a/examples/web_frameworks/static/index.html b/examples/web_frameworks/static/index.html new file mode 100644 index 0000000..358e99f --- /dev/null +++ b/examples/web_frameworks/static/index.html @@ -0,0 +1,54 @@ + + + + + + + Fullbleed · Python invoice starter + + + +
fullbleed
Python invoice starter
+
+
A local integration example using fictional data. Add your application's access controls before serving real invoices.
+ + diff --git a/examples/web_frameworks/static/invoice.png b/examples/web_frameworks/static/invoice.png new file mode 100644 index 0000000000000000000000000000000000000000..0018a8c657232664acf15ccf7da15de0bf367ca5 GIT binary patch literal 130289 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 * { min-width: 0; } +.grid-3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16pt; } +.footer { position: absolute; left: 16mm; right: 16mm; bottom: 12mm; border-top: .6pt solid #9eafa4; padding-top: 8pt; display: flex; justify-content: space-between; gap: 12pt; font-size: 6.6pt; letter-spacing: .45pt; } +table { width: 100%; border-collapse: collapse; font-size: 9pt; } +th { font-size: 7.5pt; font-weight: 600; text-align: left; } +th, td { padding: 10pt 0; border-bottom: .55pt solid #bdc8bf; vertical-align: top; } +.number { text-align: right; white-space: nowrap; } +.money { font-variant-numeric: tabular-nums; } +strong { font-weight: 600; } +a { color: inherit; } + +.invoice .masthead { display: grid; grid-template-columns: 1.05fr .8fr 1fr; gap: 18pt; align-items: center; padding-bottom: 22pt; border-bottom: 1pt solid #17382e; } +.invoice .brand { font: 31pt/.88 'DM Serif Display'; letter-spacing: -1.3pt; } +.invoice .brand span { display: block; line-height: .98; } +.invoice .brand small { display: block; font: 6.5pt Inter; letter-spacing: 2.1pt; margin-top: 11pt; } +.invoice .brand-note { border-left: 1pt solid #c24929; padding: 4pt 0 4pt 16pt; line-height: 1.8; } +.invoice .address { font-size: 7.5pt; line-height: 1.7; border-left: 1pt solid #c24929; padding-left: 16pt; } +.invoice .title-row { display: grid; grid-template-columns: 3.3fr 1fr; gap: 20pt; align-items: center; padding: 22pt 0 16pt; } +.invoice h1 { font: 91pt/.9 'Bebas Neue'; letter-spacing: .3pt; } +.invoice .title-note { color: #b44123; font: 14pt/1.2 'Bebas Neue'; letter-spacing: .5pt; } +.invoice .details { border-top: .6pt solid #9eafa4; border-bottom: .6pt solid #9eafa4; padding: 15pt 0; margin-bottom: 10pt; } +.invoice .details p { margin-top: 5pt; font-size: 8.2pt; } +.invoice .details > div + div { border-left: .6pt solid #c7cdc4; padding-left: 14pt; } +.invoice th { color: #52665a; } +.invoice td { padding: 12pt 0; } +.invoice .item-note { color: #617069; font-size: 8pt; margin-top: 4pt; } +.invoice .amounts { display: grid; grid-template-columns: 1fr 1.25fr; gap: 27pt; margin-top: 23pt; } +.invoice .thanks { font: italic 22pt/1.2 'DM Serif Display'; color: #b44123; padding-top: 8pt; } +.invoice .summary-line { display: flex; justify-content: space-between; padding: 5pt 0; font-size: 8.5pt; } +.invoice .total { background: #17382e; color: #fff8e8; padding: 16pt; margin-top: 9pt; border-left: 4pt solid #d96238; } +.invoice .total .value { font: 38pt/1.1 'Bebas Neue'; margin-top: 7pt; } +.invoice .payment { margin-top: 20pt; padding-top: 12pt; border-top: .6pt solid #9eafa4; display: grid; grid-template-columns: 1fr 1fr; gap: 24pt; font-size: 8pt; } diff --git a/examples/web_frameworks/templates/invoice.html b/examples/web_frameworks/templates/invoice.html new file mode 100644 index 0000000..e70a145 --- /dev/null +++ b/examples/web_frameworks/templates/invoice.html @@ -0,0 +1,28 @@ + +Northstar Studio invoice +
+
+
NorthstarStudioDESIGN WITH DIRECTION
+
Brand
Digital
Experiences
That matter.
+
42 Cedar Avenue
Portland, OR 97205
hello@example.invalid
northstar.example.invalid
+
+

INVOICE

GOOD WORK.
CLEAR DETAILS.
LET'S MAKE
WHAT'S NEXT.

+
+

Prepared for

$customer
Attn. Avery Morgan
Portland, Oregon

+

The project

Autumn launch
Brand workshop, digital
design & handoff

+

Invoice $number

Issued · $issued
Due · $due
Currency · USD

+
+ + + $rows +
DESCRIPTIONHOURSRATEAMOUNT
+
+

A little clarity.
A lot of possibility.

Thank you for inviting us
to help shape your next chapter.

+
Subtotal · USD$total
Tax · 0% in this sample0.00
TOTAL DUE
USD $total
+
+
+

Payment details

Reference $number with your payment.
Payment instructions are supplied separately.

+

A note from the studio

Questions about a line item?
Write to hello@example.invalid.

+
+
NORTHSTAR STUDIO / INVOICE $numberFICTIONAL SAMPLE · 01 / 01
+
From 801cbe3f709fa7c90ba2b26743560e8acfcba3d6 Mon Sep 17 00:00:00 2001 From: Tater Date: Sun, 4 Oct 2026 18:10:56 -0500 Subject: [PATCH 2/4] examples: preserve and verify upstream font license bytes --- examples/web_frameworks/build_starter.py | 4 ++++ examples/web_frameworks/check_examples.py | 6 ++++++ examples/web_frameworks/fonts/.gitattributes | 2 ++ 3 files changed, 12 insertions(+) create mode 100644 examples/web_frameworks/fonts/.gitattributes diff --git a/examples/web_frameworks/build_starter.py b/examples/web_frameworks/build_starter.py index 0923b27..447812e 100644 --- a/examples/web_frameworks/build_starter.py +++ b/examples/web_frameworks/build_starter.py @@ -37,6 +37,10 @@ def committed(path: Path) -> bytes: content = {name: committed(ROOT/name) for name in FILES} for path in sorted((ROOT/"fonts").iterdir()): if path.is_file(): content[path.relative_to(ROOT).as_posix()] = committed(path) + for item in json.loads(content["fonts/sources.json"])["files"]: + data = content["fonts/"+item["file"]] + assert len(data) == item["bytes"] + assert hashlib.sha256(data).hexdigest() == item["sha256"], item["file"] content["LICENSE"] = committed(REPOSITORY/"LICENSE") content[".gitignore"] = b".venv/\n__pycache__/\noutput/\n" pdf = render_invoice(load_invoice("INV-1042")) diff --git a/examples/web_frameworks/check_examples.py b/examples/web_frameworks/check_examples.py index 9e338a4..98ab85e 100644 --- a/examples/web_frameworks/check_examples.py +++ b/examples/web_frameworks/check_examples.py @@ -75,6 +75,11 @@ def main() -> int: args = parser.parse_args() out = args.out.resolve() out.mkdir(parents=True, exist_ok=True) + fonts = Path(__file__).resolve().parent / "fonts" + for item in json.loads((fonts / "sources.json").read_text(encoding="utf-8"))["files"]: + font_bytes = (fonts / item["file"]).read_bytes() + assert len(font_bytes) == item["bytes"] + assert hashlib.sha256(font_bytes).hexdigest() == item["sha256"], item["file"] from fastapi.testclient import TestClient from fastapi_app import app as fastapi_app @@ -121,6 +126,7 @@ def main() -> int: "http_servers": http, "all_framework_pdf_bytes_identical": True, "literal_customer_text_check": "passed", + "font_and_license_source_hashes": "passed", "fastapi_openapi_pdf_type": "passed", "preview": str(previews[0]), "scope": "Test clients and actual local HTTP servers, independent PDF text, headers, font embedding, saved preview, and matching parallel responses; no throughput, hosted-deployment, or standards-conformance claim.", diff --git a/examples/web_frameworks/fonts/.gitattributes b/examples/web_frameworks/fonts/.gitattributes new file mode 100644 index 0000000..be597a2 --- /dev/null +++ b/examples/web_frameworks/fonts/.gitattributes @@ -0,0 +1,2 @@ +# Preserve upstream license bytes, including line endings and trailing spaces. +*-OFL.txt -text whitespace=-blank-at-eol From f5cb44def0e9b26ca5a1e77a4c0b821516d0b40d Mon Sep 17 00:00:00 2001 From: Tater Date: Sun, 4 Oct 2026 18:11:43 -0500 Subject: [PATCH 3/4] examples: retain original DM Serif license line endings --- .../fonts/DMSerifDisplay-OFL.txt | 186 +++++++++--------- 1 file changed, 93 insertions(+), 93 deletions(-) diff --git a/examples/web_frameworks/fonts/DMSerifDisplay-OFL.txt b/examples/web_frameworks/fonts/DMSerifDisplay-OFL.txt index aea163a..be384f0 100644 --- a/examples/web_frameworks/fonts/DMSerifDisplay-OFL.txt +++ b/examples/web_frameworks/fonts/DMSerifDisplay-OFL.txt @@ -1,93 +1,93 @@ -Copyright 2014-2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. Copyright 2019 Google LLC. - -This Font Software is licensed under the SIL Open Font License, Version 1.1. - -This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL - - ------------------------------------------------------------ -SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 ------------------------------------------------------------ - -PREAMBLE -The goals of the Open Font License (OFL) are to stimulate worldwide -development of collaborative font projects, to support the font creation -efforts of academic and linguistic communities, and to provide a free and -open framework in which fonts may be shared and improved in partnership -with others. - -The OFL allows the licensed fonts to be used, studied, modified and -redistributed freely as long as they are not sold by themselves. The -fonts, including any derivative works, can be bundled, embedded, -redistributed and/or sold with any software provided that any reserved -names are not used by derivative works. The fonts and derivatives, -however, cannot be released under any other type of license. The -requirement for fonts to remain under this license does not apply -to any document created using the fonts or their derivatives. - -DEFINITIONS -"Font Software" refers to the set of files released by the Copyright -Holder(s) under this license and clearly marked as such. This may -include source files, build scripts and documentation. - -"Reserved Font Name" refers to any names specified as such after the -copyright statement(s). - -"Original Version" refers to the collection of Font Software components as -distributed by the Copyright Holder(s). - -"Modified Version" refers to any derivative made by adding to, deleting, -or substituting -- in part or in whole -- any of the components of the -Original Version, by changing formats or by porting the Font Software to a -new environment. - -"Author" refers to any designer, engineer, programmer, technical -writer or other person who contributed to the Font Software. - -PERMISSION & CONDITIONS -Permission is hereby granted, free of charge, to any person obtaining -a copy of the Font Software, to use, study, copy, merge, embed, modify, -redistribute, and sell modified and unmodified copies of the Font -Software, subject to the following conditions: - -1) Neither the Font Software nor any of its individual components, -in Original or Modified Versions, may be sold by itself. - -2) Original or Modified Versions of the Font Software may be bundled, -redistributed and/or sold with any software, provided that each copy -contains the above copyright notice and this license. These can be -included either as stand-alone text files, human-readable headers or -in the appropriate machine-readable metadata fields within text or -binary files as long as those fields can be easily viewed by the user. - -3) No Modified Version of the Font Software may use the Reserved Font -Name(s) unless explicit written permission is granted by the corresponding -Copyright Holder. This restriction only applies to the primary font name as -presented to the users. - -4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font -Software shall not be used to promote, endorse or advertise any -Modified Version, except to acknowledge the contribution(s) of the -Copyright Holder(s) and the Author(s) or with their explicit written -permission. - -5) The Font Software, modified or unmodified, in part or in whole, -must be distributed entirely under this license, and must not be -distributed under any other license. The requirement for fonts to -remain under this license does not apply to any document created -using the Font Software. - -TERMINATION -This license becomes null and void if any of the above conditions are -not met. - -DISCLAIMER -THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT -OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE -COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, -INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL -DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM -OTHER DEALINGS IN THE FONT SOFTWARE. +Copyright 2014-2018 Adobe (http://www.adobe.com/), with Reserved Font Name 'Source'. All Rights Reserved. Source is a trademark of Adobe in the United States and/or other countries. Copyright 2019 Google LLC. + +This Font Software is licensed under the SIL Open Font License, Version 1.1. + +This license is copied below, and is also available with a FAQ at: http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. From 76769ccd58426717c10cf0d988838182c203382f Mon Sep 17 00:00:00 2001 From: Tater Date: Sun, 4 Oct 2026 18:24:18 -0500 Subject: [PATCH 4/4] examples: handle Windows checkout newlines in HTTP check --- examples/web_frameworks/check_http.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/examples/web_frameworks/check_http.py b/examples/web_frameworks/check_http.py index 543c432..adb55d7 100644 --- a/examples/web_frameworks/check_http.py +++ b/examples/web_frameworks/check_http.py @@ -70,7 +70,9 @@ def check_servers(out: Path, expected_pdf: bytes) -> list[dict]: with server(name, out) as origin: code, headers, page = fetch(origin) assert code == 200 and headers.get_content_type() == "text/html" - assert page == (ROOT / "static/index.html").read_bytes() + # The app reads HTML as text, normalizing CRLF in Windows checkouts. + expected_html = (ROOT / "static/index.html").read_text(encoding="utf-8") + assert page.decode("utf-8") == expected_html code, headers, preview = fetch(origin + "/preview.png") assert code == 200 and headers.get_content_type() == "image/png" assert preview == (ROOT / "static/invoice.png").read_bytes()
+
+

From application data to paper

+

Make the details
look the part.

+

A designed invoice, rendered by Fullbleed and delivered by your Python web framework.

+
Download invoice +

Generated on request · A4 PDF · Fictional sample

+
InvoiceINV-1042
Total dueUSD 1,870.00
+

Make it yours: edit the included HTML and CSS, then download again. The README shows where to change the template and connect your own authorized invoice lookup.

+

Read the Python integration guide

+
+
Northstar Studio invoice with oversized green typography, detailed line items, and an orange-accented total panel.
Included invoice preview. Downloads use your current template; the README explains how to update this saved preview after editing.
+