Добавьте просмотрщик документов в ваше собственное приложение ASP.NET
01.08.2023

Добавьте просмотрщик документов в ваше собственное приложение ASP.NET

Вы открывали файлы здесь. Помещение того же рендерера в ваше собственное приложение ASP.NET меняет одну важную вещь: куда отправляется документ.

Вы загружали файлы на этот сайт, чтобы их читать. В какой‑то момент кто‑то задаётся вопросом, можно ли разместить тот же функционал внутри приложения, над которым вы работаете — дело, иск, чертёж, открытые на вашей собственной странице вместо скачивания. Это возможно, и решение проще, чем кажется, потому что меняется лишь одна вещь.

ASP.NET ПРОСМОТРЩИК ДОКУМЕНТОВ
ASP.NET ПРОСМОТРЩИК ДОКУМЕНТОВ

Одна вещь, которая меняется: куда уходит файл

Здесь вы загружаете документ к нам, он рендерится, и удаляется, когда вы закрываете его. Это правильный компромисс для файла, который вам один раз отправили и который вы хотите прочитать сейчас.

Это неправильный компромисс для документа, который не ваш для перемещения. Медицинская карта, подписанный контракт, чертёж под NDA — они не могут покидать вашу инфраструктуру, и обещание об удалении этого не решает, потому что файл всё равно был передан. Встраивание рендерера меняет ситуацию: документ открывается вашим сервером, внутри вашей сети, а в браузер попадает уже отрисованное представление. Файл никогда не перемещается.

Вот почему стоит встраивать. Всё остальное — детали.

Это компонент, а не виджет

Часть, которую люди часто понимают неправильно: это не JavaScript, открывающий файл в браузере. Это нативный .NET‑компонент, который вы подключаете к своему проекту, а рендеринг происходит на сервере. Ваша страница получает готовый результат.

Следуют два последствия. Хорошее: браузер ничего не устанавливает — ни плагинов, ни ActiveX, ни читателей — поэтому всё работает одинаково как на закрытом рабочем столе, так и на телефоне. Что нужно учитывать: ваш сервер делает работу, поэтому 200‑страничный PDF и 40‑МБ чертёж — это разные запросы. Подбирайте мощность машины под самый большой файл, который вы будете принимать, и отклоняйте всё, что больше.

Что нужно решить перед началом

Три вопроса, и ни один из них не о просмотрщике:

  • Откуда поступают документы — из базы данных, файловой шаре, блоб‑хранилища?
  • Кто имеет право видеть этот документ, и проверяет ли URL просмотрщика это или просто предполагает? Конечная точка рендеринга, отвечающая любому, кто знает ID документа, — классическая уязвимость.
  • Что происходит с временными файлами, которые создаёт рендер, и когда.

Ответьте на эти вопросы, и интеграция будет короткой. Оставьте их на потом, и вам придётся «добавлять» авторизацию к уже работающему просмотрщику, что хуже.

Где это работает

.NET Framework 4.0 и выше, а также .NET Standard 2.0 и выше — значит WebForms, MVC, ASP.NET Core, Blazor Server и Linux‑контейнеры. Office не требуется устанавливать на сервер; рендерер читает форматы напрямую.

Если вам сегодня нужно просто открыть один файл, для этого существуют PDF просмотрщик и остальные просмотрщики здесь. Если речь идёт о вашем приложении, компонент, его пакеты и API‑документация находятся на Doconut.com.