This is an example of how to modify dl-repo so it can serve a entry from a zip file on the fly without creating temporary files. It compiles but I haven't tested it. It also obviously needs error handling added, for when an entry with the given path doesn't exist.
The idea is you can make requests like:
GET /dl-repo/unzip/copy/nla.obj-12345/OEBPS/chapter-001-chapter-i.html
Note: The JVM's builtin ZipFile class kinda sucks because it can only take a file path not a channel so can only be used on local files not files in the repository. I suggest using an alternative implementation that abstracts the I/O calls through an interface. TrueZip is one such implementation, I'm sure there's others.