Ця сторінка: http://blog.ostermiller.org/convert-java-outputstream-inputstream описує, як створити InputStream з OutputStream:
new ByteArrayInputStream(out.toByteArray())
Інші альтернативи - використання PipedStreams та нових потоків, що є громіздким.
Мені не подобається ідея копіювати багато мегабайт до нового байтового масиву в пам'яті. Чи існує бібліотека, яка робить це ефективніше?
РЕДАГУВАТИ:
За порадою Лоуренса Гонсалвеса, я спробував PipedStreams, і виявилося, що з ними не так складно мати справу. Ось зразок коду в 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))