Серверний 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 запускає worker свого рушія PDF одразу, щойно відкривається сторінка інструмента, а не тоді, коли ви перетягуєте файл, тож інструменти продовжують працювати, якщо з’єднання зникне після завантаження сторінки. Деякі рідше вживані функції довантажують додатковий код під час першого використання, як-от рушій шрифтів для тексту нелатинськими письмами. Це код, що надходить до вас, а не ваш файл, що йде назовні.

Реальні обмеження обробки на клієнті

Робота на вашому пристрої має свою ціну, і чесний інструмент мав би про неї казати.

  • Пам’ять. Увесь файл перебуває в пам’яті вкладки, під час обробки часто в кількох копіях. Скан на 200 МБ може потребувати в кілька разів більше. Браузери обмежують пам’ять на вкладку, а телефони обмежують її найсильніше.
  • Швидкість. Роботу виконує ваш ноутбук чи телефон, а не центр обробки даних. Перетворення 400 сторінок на зображення чи повторне стиснення кожного фото в довгому скані на старішому пристрої триває помітно довше.
  • Акумулятор і нагрівання. Довге завдання на телефоні якийсь час навантажує процесор на повну.
  • Складні завдання. Деякі задачі значно простіше виконати серверним програмним забезпеченням, як-от розпізнавання тексту у великих архівах сканів чи конвертацію складних файлів Office із точним макетом. Багато інструментів, які в іншому працюють на клієнті, надсилають саме такі завдання на сервер.

На практиці обмеження розміру в клієнтського інструмента визначає ваш пристрій, а не число на сторінці з цінами. У коді Kopitiam немає обмеження на розмір файлу, тож дуже великий файл або обробиться, або вичерпає пам’ять. Зазвичай допомагає спершу розділити великий файл або скористатися браузером на комп’ютері замість телефона.

Візьмімо скан на 40 МБ, який треба зменшити для email, на повільному мобільному з’єднанні. Серверний інструмент мусить завантажити всі 40 МБ, перш ніж почати, а потім ви завантажуєте результат, тож більшість очікування припадає на мережу. Клієнтський інструмент пропускає обидві передачі, але стискає файл сам ваш телефон, і для довгого скану це може зайняти деякий час. Жоден не завжди швидший: усе залежить від вашого з’єднання й пристрою.

Гібриди й твердження, які варто читати уважно

Не кожен інструмент є суто одним чи іншим. Ви побачите кілька схем:

  • Здебільшого локально, частково на сервері. Прості завдання виконуються в браузері, а для конвертації чи розпізнавання тексту файл завантажується на сервер. Шукайте заяву для кожного інструмента окремо, а не для всього сайту.
  • Зашифроване завантаження. Файл завантажується на сервер, але зашифрований під час передачі й зберігання. Це краще, ніж нічого, але сервер однаково розшифровує його, щоб із ним працювати.
  • Локально зі збереженням у хмарі. Робота локальна, але результат зберігається у вашому обліковому записі, щоб ви могли відкрити його пізніше. Це копія на сервері, так задумано.
  • Програми для комп’ютера. Встановлена програма теж клієнтська, але вона може надсилати файли чи дані про використання розробнику. Її політика конфіденційності так само має значення.

Як перевірити, яким із них ви користуєтеся

Відкрийте інструменти розробника браузера (F12 у більшості браузерів на комп’ютері), перейдіть на вкладку «Мережа» й обробіть інструментом тестовий файл. Серверний інструмент на початку покаже вихідний запит приблизно такого розміру, як ваш файл. Клієнтський покаже лише дрібні запити, як-от рекламу чи сигнали аналітики, і жодного, що зростає разом із вашим файлом. Те саме завдання з вимкненим Wi-Fi — швидка версія цього тесту.

Що вибрати

Для договорів, розрахункових листів, медичних листів і сканів документів клієнтський варіант — кращий вибір за замовчуванням: деінде немає копії, яка може витекти чи зберігатися. Для публічної брошури чи меню підійде будь-який. Коли потрібне те, що браузер робить погано, як-от розпізнавання тексту в архіві на 2 000 сторінок, надійний серверний інструмент із чіткою політикою зберігання — розумний вибір для цього файлу, а не звичка.