use actual temp files instead of StringIO for exports

am hoping this potentially reduces the memory overhead

the calling code all seems designed to work with either paths or buffers

tested with async regular and custom exports, as well as bulk exports and html preview, all seems to work.