Questa pagina: http://blog.ostermiller.org/convert-java-outputstream-inputstream descrive come creare un InputStream da OutputStream:
new ByteArrayInputStream(out.toByteArray())
Altre alternative consistono nell'usare PipedStreams e nuovi thread che sono ingombranti.
Non mi piace l'idea di copiare molti megabyte in un nuovo array di byte di memoria. Esiste una libreria che lo faccia in modo più efficiente?
MODIFICARE:
Su consiglio di Laurence Gonsalves, ho provato PipedStreams e si è scoperto che non sono così difficili da affrontare. Ecco il codice di esempio in clojure:
(defn #^PipedInputStream create-pdf-stream [pdf-info]
(let [in-stream (new PipedInputStream)
out-stream (PipedOutputStream. in-stream)]
(.start (Thread. #(;Here you write into out-stream)))
in-stream))