Packages hosted reader assets into a standalone ZIP that opens without a web server.
Source: screencastgen/offline_reader.py
build_offline_reader_archive(manifest_path, output_path) -> strLoads reader_manifest.json, validates that every referenced audio, presenter,
and page-image asset exists beneath the manifest directory, then writes an
archive containing:
index.html with the manifest embedded as JSON, so local playback does not
depend on fetch() or an HTTP serverreader_manifest.jsonreader_audio.mp3presenter.mp4pages/The archive is assembled through a temporary file and atomically moved into place. Assets outside the reader output directory are rejected.
The embedded viewer provides synchronized word highlighting, seeking, playback speed, auto-scroll, document page images, theme selection, and a draggable, resizable presenter.