File Viewer: браузерный рендерер для просмотра документов и архивов

File Viewer — это браузерный рендерер для предварительного просмотра офисных документов, PDF, CAD и архивов без серверной конверсии. Он решает проблему отображения различных форматов файлов в веб-приложениях без необходимости дополнительных серверов для обработки, что позволяет ускорить загрузку и сэкономить ресурсы.

Отличается от аналогичных инструментов тем, что работает напрямую в браузере, используя Web Workers и WASM, что исключает задержки при загрузке. Подходит для разработчиков, которым нужен легкий, гибкий и эффективный способ интеграции просмотра файлов в свои внутренние приложения на Vue, React, Svelte или jQuery.

Чтобы запустить, нужно просто подключить @file-viewer/core, как указано в документации. Однако имей в виду, что проект еще может находиться на ранней стадии развития, и, возможно, некоторые форматы могут отображаться некорректно. Подходит для проектов с открытым исходным кодом, лицензия Apache 2.0.

Проект File Viewer предоставляет возможность просмотра различных файлов в браузере без редактирования. Это касается таких форматов, как документы Office, PDF, CAD, архивы, электронные письма и других типов файлов. Все встроенные рендереры работают без необходимости в сервере для конвертации, и возможность использования Workers, WASM и шрифтов может быть реализована на самоуправляемом решении.

Быстрый старт

Чтобы начать использовать File Viewer, достаточно установить нужный пакет с помощью npm:

npm install @file-viewer/web-full

Затем можно подключить его к своему проекту:

import { mountViewer } from '@file-viewer/web-full'

mountViewer(document.querySelector('#viewer'), {
  url: '/documents/handbook.pdf',
  filename: 'handbook.pdf'
})

Обязательно установи высоту для элемента с идентификатором #viewer. Если файл находится на другом домене, нужно убедиться, что он доступен с соответствующими заголовками CORS. Также можно передать объект File вместо URL.

Поддерживаемые форматы и ограничения

В проекте есть матрица форматов, которая описывает поддерживаемые расширения файлов и уровни поддержки. Важно отметить, что не каждое файл данного типа обладает одинаковой точностью отображения. Существуют *-full пакеты, которые поддерживают 221 расширение во множестве потоков предварительного просмотра. Для установки более легкого пакета можно использовать варианты, такие как @file-viewer/preset-lite, @file-viewer/preset-office и другие.

File Viewer не предназначен для редактирования файлов. Ограничения могут возникнуть при работе со шрифтами, специфичными для определённых производителей функциями или при открытии очень больших файлов. Рекомендуется проверять матрицу форматов перед использованием специфичных форматов в рабочих процессах.

Установка и управление активами

Полные пакеты включают в себя соответствующие Workers, WASM, шрифты и другие активы, однако их необходимо обслуживать наряду с приложением. По умолчанию активы размещаются по пути <deployment-base>/file-viewer/. В зависимости от системы сборки, существуют разные способы установки активов:

  • Для Vite необходимо установить @file-viewer/vite-plugin и настроить fileViewerRenderers({ copyAssets: true }).
  • Для Webpack, Rspack, Rollup и других — запустить npx --no-install file-viewer-copy-assets ./public/file-viewer.
  • Для Web Full IIFE/CDN нужно раздать всю директорию dist/, а не только входной JavaScript файл.

Если какой-либо Worker или файл WASM отсутствует, это может привести к недоступности формата, даже если его JavaScript пакет установлен.

Вклад в проект и поддержка

Если возникла проблема с форматами, ты можешь предоставить упрощённый пример или ссылку на публичное воспроизведение, указать версию браузера и ожидаемый результат. Прежде чем открывать pull request, ознакомься с CONTRIBUTING.md.

Поддержка проекта осуществляется через GitHub Sponsors. Для частных развертываний или проектов, требующих обязательств по отклику, существует возможность получить корпоративную поддержку.

Лицензия

Исходный код проекта лицензирован по Apache-2.0, в то время как поддержка форматов DWG/DWF/DWFX требует соблюдения лицензии AGPL-3.0-only.

Открыть на GitHub: flyfish-dev/file-viewer →

Что нового на GitHub — короткие обзоры на русском Новые обзоры приходят в Telegram. Без спама, по делу.
Подписаться

Похожие статьи

Популярные темы на сайте