Моя практика показывает что в конце концов пользователям нужны обе возможности, как повторная генерация отчета (на основе текущих данных, которые пользователь изменил, даже если это изменения 'задним числом', поверьте, в конце концов вам придется такое делать, если это корпоративное приложение), так и загрузка ранее сгенерированного отчета, потому что у пользователя на компе бардак и он не знает куда его сохранил а нужно еще вчера распечатать...
Поэтому, храните документ на сервере, настоятельно рекомендую хранить в файлах, настоятельно рекомендую имена файлов делать на основе идентификаторов, и раскидывать по подкаталогам (100500 файлов в одном каталоге = плохо), а настоящее имя файла подставлять пользователю во время загрузки (иначе пробелы и нестандартные unicode символы вас и вашего администратора доканают).
Дайте пользователю возможность сгенирировать новый документ и посмотреть список предыдущих сгенерированных, а администратору возможность удалить документ, в идеале полуавтоматические инструменты по пакетному удалению (например по окончанию отчетного периода чистить все сохранения за этот период кроме последнего), но помните про бакапы.