Почему я создал локальный PDF-... Заметка
DEV Community на русском

Почему я создал локальный PDF-инструментарий на Nuxt и OPFS

Основные PDF-инструменты требуют от пользователей загрузки конфиденциальных документов на удаленные серверы, что вызывает опасения по поводу конфиденциальности и регулирования, несмотря на шифрование при передаче. Для решения этой проблемы beePDF, 100% клиентское прогрессивное веб-приложение, обрабатывает документы полностью в браузере, никогда не загружая их. Его технологический стек включает Nuxt, @vite-pwa/nuxt, pdf-lib, PDF.js и Pico CSS. Ключевым нововведением является использование Origin Private File System (OPFS) для локального хранения данных. OPFS предоставляет частную файловую систему, ограниченную источником, с быстрым доступом на уровне байтов, что идеально подходит для больших бинарных файлов, таких как PDF. Она устраняет запросы на разрешение и обеспечивает синхронный доступ в Web Workers для повышения производительности. Конвейер обработки считывает файлы в память, сохраняет их в OPFS и переносит тяжелые задачи в Web Workers. Метаданные и миниатюры хранятся в IndexedDB. Изменения документов инициируют прямую загрузку на клиент, обеспечивая автономную работу. Проблемы включают ограничения оперативной памяти браузера для очень больших файлов и необходимость переноса интенсивных задач в Web Workers для предотвращения блокировки пользовательского интерфейса.