Серверный PDF-инструмент загружает ваш файл на компьютеры владельца сервиса, обрабатывает его там и присылает результат обратно. Клиентский инструмент, наоборот, загружает программу в ваш браузер, и она обрабатывает файл на вашем же устройстве. В первом случае путешествует ваш документ, во втором — только код.

Именно эта разница решает, кто вообще может увидеть ваш файл. Она же объясняет, почему два вида инструментов ощущаются по-разному, ломаются по-разному и подходят для разных задач. Ниже шаг за шагом разобрано, что на самом деле происходит в каждом из них.

Что происходит в серверном инструменте

  1. Вы выбираете файл. Страница отправляет его через интернет на сервер владельца, обычно как загрузку по HTTPS.
  2. Сервер сохраняет его, как минимум на диске или в памяти на время задачи, часто в очереди вместе с файлами других людей.
  3. Работу выполняет программа на сервере: PDF-библиотека, конвертер или движок распознавания текста.
  4. Результат тоже сохраняется, и страница даёт вам ссылку для скачивания.
  5. Оба файла позже удаляются по собственным правилам хранения владельца сервиса.

Раньше это было единственное практичное устройство. Браузеры были медленными, а библиотеки, умеющие читать и переписывать PDF, работали только на серверах. Современные браузеры быстро выполняют сложный код, а открытые PDF-библиотеки на JavaScript справляются с большинством повседневных задач прямо во вкладке.

HTTPS защищает шаг 1 от перехвата. Шаги 2–5 зависят от владельца сервиса: его защиты, доступа сотрудников, резервных копий и юридических обязательств в стране, где стоят серверы. Большинство владельцев относятся к этому ответственно, но вы полагаетесь на то, что они так и делают.

Что происходит в клиентском инструменте

  1. Вы открываете страницу инструмента. Браузер загружает страницу и её JavaScript, как у любого сайта.
  2. Вы выбираете файл. File API браузера читает его с диска в память вкладки. Ничего не отправляется.
  3. Работу выполняет код, запущенный во вкладке. Тяжёлые части часто работают в Web Worker, фоновом потоке, чтобы страница не подвисала.
  4. Результат собирается в памяти и отдаётся вам как скачивание по временной ссылке, указывающей на память вашего же браузера.
  5. Когда вы закрываете вкладку, память освобождается. Удалять где-то ещё нечего, потому что ничего не отправлялось.

Так работают PDF-инструменты Kopitiam. Для чтения и отрисовки страниц они используют pdf.js, открытый PDF-движок от Mozilla, парсер которого работает в Web Worker. Для сборки нового PDF — pdf-lib, ещё одну открытую библиотеку. Обе работают внутри вашей вкладки.

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

Почему клиентские инструменты могут работать без интернета

Когда программа уже в браузере, сеть ей для работы не нужна. Поэтому тест без интернета и срабатывает: откройте инструмент, выключите Wi-Fi, и он продолжит работать. Если бы он на самом деле загружал файл, то сразу выдал бы ошибку.

Есть детали, которые стоит знать. Kopitiam запускает воркер своего PDF-движка сразу при открытии страницы инструмента, а не когда вы перетаскиваете файл, поэтому инструменты продолжают работать, если связь пропадёт после загрузки страницы. Некоторые редкие функции при первом использовании подгружают дополнительный код, например шрифтовой движок для текста не на латинице. Это код приходит к вам, а не ваш файл уходит наружу.

Реальные ограничения обработки на стороне клиента

У работы на вашем устройстве есть цена, и честный инструмент должен о ней говорить.

  • Память. Весь файл находится в памяти вкладки, во время обработки часто в нескольких копиях. Скану на 200 МБ может понадобиться в несколько раз больше. Браузеры ограничивают память на вкладку, а телефоны — жёстче всего.
  • Скорость. Работу делает ваш ноутбук или телефон, а не дата-центр. Отрисовка 400 страниц в картинки или пересжатие каждого фото в длинном скане на старом устройстве идёт заметно дольше.
  • Батарея и нагрев. Долгая задача на телефоне какое-то время сильно нагружает процессор.
  • Сложные задачи. Некоторые задачи гораздо проще решать серверным ПО, например распознавание текста в больших архивах сканов или конвертацию сложных файлов Office с точной вёрсткой. Многие инструменты, в остальном клиентские, отправляют именно такие задачи на сервер.

На практике предел размера у клиентского инструмента задаёт ваше устройство, а не цифра на странице с тарифами. В коде Kopitiam нет ограничения на размер файла, поэтому очень большой файл либо обработается, либо упрётся в нехватку памяти. Обычно помогает сначала разделить большой файл или воспользоваться браузером на компьютере, а не на телефоне.

Возьмём скан на 40 МБ, который нужно уменьшить для письма, при медленном мобильном интернете. Серверному инструменту нужно сначала загрузить все 40 МБ, а потом вы скачиваете результат, так что большая часть ожидания уходит на сеть. Клиентский инструмент обходится без обеих передач, но сжимает ваш телефон сам, и на длинном скане это может занять время. Ни один вариант не быстрее всегда: всё зависит от связи и устройства.

Гибриды и обещания, которые стоит читать внимательно

Не каждый инструмент только одного вида. Встречается несколько схем:

  • В основном локально, кое-что на сервере. Простые задачи выполняются в браузере, а конвертация или распознавание текста загружаются на сервер. Ищите заявление для каждого инструмента, а не общее для всего сайта.
  • Зашифрованная загрузка. Файл загружается, но шифруется при передаче и хранении. Это лучше, чем ничего, но сервер всё равно расшифровывает его, чтобы с ним работать.
  • Локально с сохранением в облако. Работа локальная, но результат хранится в вашем аккаунте, чтобы его можно было открыть позже. Это копия на сервере, так задумано.
  • Программы для компьютера. Установленная программа тоже клиентская, но может отправлять файлы или данные об использовании своим разработчикам. Её политика конфиденциальности по-прежнему важна.

Как проверить, каким инструментом вы пользуетесь

Откройте инструменты разработчика в браузере (в большинстве браузеров на компьютере — F12), перейдите на вкладку «Сеть» и прогоните через инструмент тестовый файл. У серверного инструмента при запуске уходит запрос примерно размером с ваш файл. У клиентского видны только мелкие запросы, например реклама или сигналы аналитики, и ни один не растёт вместе с файлом. Та же задача с выключенным Wi-Fi — быстрая версия этого теста.

Что выбрать

Для договоров, расчётных листков, медицинских заключений и сканов документов лучший выбор по умолчанию — клиентский инструмент: нигде нет копии, которая может утечь или остаться. Для публичной брошюры или меню годится любой. Если нужно то, с чем браузер плохо справляется, например распознавание текста в архиве на 2 000 страниц, разумно выбрать надёжный серверный инструмент с понятной политикой хранения — для этого файла, а не по привычке.