Diese Seite: http://blog.ostermiller.org/convert-java-outputstream-inputstream beschreibt, wie ein InputStream aus OutputStream erstellt wird:
new ByteArrayInputStream(out.toByteArray())
Andere Alternativen sind die Verwendung von PipedStreams und neuen Threads, was umständlich ist.
Ich mag die Idee nicht, viele Megabyte in ein neues Speicherbyte-Array zu kopieren. Gibt es eine Bibliothek, die dies effizienter erledigt?
BEARBEITEN:
Auf Anraten von Laurence Gonsalves habe ich PipedStreams ausprobiert und es stellte sich heraus, dass es nicht so schwer ist, mit ihnen umzugehen. Hier ist der Beispielcode 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))