Narzędzie PDF działające po stronie serwera przesyła Twój plik na komputery operatora, tam go przetwarza i odsyła wynik. Narzędzie po stronie klienta pobiera zamiast tego program do Twojej przeglądarki, a program przetwarza plik na Twoim własnym urządzeniu. W pierwszym przypadku podróżuje Twój dokument, w drugim tylko kod.

Ta jedna różnica decyduje o tym, kto w ogóle może zobaczyć Twój plik. Wyjaśnia też, dlaczego oba rodzaje narzędzi działają inaczej, zawodzą w inny sposób i pasują do innych zadań. Ten przewodnik pokazuje krok po kroku, co naprawdę dzieje się w każdym z nich.

Co dzieje się w narzędziu po stronie serwera

  1. Wybierasz plik. Strona wysyła go przez internet na serwer operatora, zwykle jako przesyłanie przez HTTPS.
  2. Serwer go przechowuje, przynajmniej na dysku lub w pamięci na czas zadania, często w kolejce razem z plikami innych osób.
  3. Pracę wykonuje program na serwerze, na przykład biblioteka PDF, konwerter albo silnik rozpoznawania tekstu.
  4. Wynik też jest przechowywany, a strona daje Ci link do jego pobrania.
  5. Oba pliki są później usuwane, zgodnie z własnymi zasadami przechowywania operatora.

Kiedyś był to jedyny praktyczny projekt. Przeglądarki były wolne, a biblioteki, które potrafiły czytać i przepisywać PDF-y, działały tylko na serwerach. Dzisiejsze przeglądarki szybko wykonują złożony kod, a biblioteki PDF o otwartym kodzie napisane w JavaScripcie radzą sobie z większością codziennych zadań w karcie.

HTTPS chroni krok 1 przed podsłuchem. Kroki 2–5 zależą od operatora: jego zabezpieczeń, dostępu pracowników, kopii zapasowych i obowiązków prawnych w kraju, w którym stoją serwery. Większość operatorów podchodzi do tego odpowiedzialnie, ale musisz im w tym zaufać.

Co dzieje się w narzędziu po stronie klienta

  1. Otwierasz stronę narzędzia. Przeglądarka pobiera stronę i jej JavaScript, tak jak przy każdej witrynie.
  2. Wybierasz plik. File API przeglądarki wczytuje go z dysku do pamięci karty. Nic nie jest wysyłane.
  3. Pracę wykonuje kod działający w karcie. Cięższe części często działają w Web Workerze, czyli wątku w tle, żeby strona reagowała płynnie.
  4. Wynik powstaje w pamięci i trafia do Ciebie jako pobranie, przez tymczasowy link wskazujący na pamięć Twojej własnej przeglądarki.
  5. Gdy zamkniesz kartę, pamięć zostaje zwolniona. Nigdzie indziej nie ma czego usuwać, bo nic nie zostało wysłane.

Narzędzia PDF Kopitiam działają właśnie tak. Używają pdf.js, silnika PDF o otwartym kodzie od Mozilli, do odczytu i rysowania stron, a jego parser działa w Web Workerze. Do budowania nowego PDF używają pdf-lib, kolejnej biblioteki o otwartym kodzie. Obie działają w Twojej karcie.

Po stronie klienta nie znaczy, że strona nie wysyła żadnych żądań sieciowych. Nadal ładuje kod, czcionki, a na darmowej stronie także reklamy. Liczy się to, że bajty Twojego pliku nigdy nie są częścią żadnego żądania.

Dlaczego narzędzia po stronie klienta działają offline

Gdy program jest już w przeglądarce, do działania nie potrzebuje sieci. Dlatego test offline działa: załaduj narzędzie, wyłącz Wi-Fi, a narzędzie działa dalej. Gdyby naprawdę przesyłało plik, od razu by się wyłożyło.

Warto znać kilka szczegółów. Kopitiam uruchamia workera swojego silnika PDF od razu po otwarciu strony narzędzia, a nie po upuszczeniu pliku, więc narzędzia działają dalej, jeśli połączenie zerwie się po załadowaniu strony. Niektóre rzadziej używane funkcje przy pierwszym użyciu ładują dodatkowy kod, na przykład silnik czcionek do tekstu w pismach innych niż łacińskie. To kod przychodzący do Ciebie, a nie Twój plik wychodzący na zewnątrz.

Prawdziwe ograniczenia przetwarzania po stronie klienta

Praca na Twoim urządzeniu ma swoje koszty, a uczciwe narzędzie powinno o nich mówić.

  • Pamięć. Cały plik siedzi w pamięci karty, podczas przetwarzania często w więcej niż jednej kopii. Skan o rozmiarze 200 MB może potrzebować kilka razy więcej. Przeglądarki ograniczają pamięć na kartę, a telefony najmocniej.
  • Szybkość. Pracę wykonuje Twój laptop lub telefon, a nie centrum danych. Renderowanie 400 stron do obrazów albo ponowna kompresja każdego zdjęcia w długim skanie trwa na starszym urządzeniu zauważalnie dłużej.
  • Bateria i ciepło. Długie zadanie na telefonie mocno obciąża procesor przez jakiś czas.
  • Trudne zadania. Niektóre rzeczy są dużo łatwiejsze z oprogramowaniem serwerowym, na przykład rozpoznawanie tekstu w dużych archiwach skanów albo konwersja złożonych plików Office z dokładnym układem. Wiele narzędzi, które poza tym działają po stronie klienta, wysyła właśnie te zadania na serwer.

W praktyce limit rozmiaru w narzędziu po stronie klienta wyznacza Twoje urządzenie, a nie liczba w cenniku. Kopitiam nie ma w kodzie limitu rozmiaru pliku, więc bardzo duży plik albo zadziała, albo zabraknie pamięci. Wcześniejsze podzielenie dużego pliku albo użycie przeglądarki na komputerze zamiast telefonu zwykle pozwala go przetworzyć.

Weźmy skan o rozmiarze 40 MB, który trzeba zmniejszyć do maila, przy wolnym połączeniu komórkowym. Narzędzie po stronie serwera musi przesłać całe 40 MB, zanim zacznie, a potem pobierasz wynik, więc większość czekania to sieć. Narzędzie po stronie klienta pomija oba transfery, ale kompresję wykonuje sam Twój telefon, co przy długim skanie może chwilę potrwać. Żadne nie jest zawsze szybsze: zależy to od połączenia i urządzenia.

Rozwiązania mieszane i deklaracje, które trzeba czytać uważnie

Nie każde narzędzie jest wyłącznie jednym lub drugim. Spotkasz kilka wzorców:

  • Głównie lokalnie, trochę na serwerze. Proste zadania działają w przeglądarce, a konwersja lub rozpoznawanie tekstu są przesyłane. Szukaj deklaracji dla każdego narzędzia, a nie jednej dla całej strony.
  • Szyfrowane przesyłanie. Plik jest przesyłany, ale szyfrowany w drodze i w spoczynku. To lepsze niż nic, ale serwer i tak go odszyfrowuje, żeby na nim pracować.
  • Lokalnie z zapisem w chmurze. Praca jest lokalna, ale wynik jest przechowywany na Twoim koncie, żebyś mógł go później otworzyć. To kopia na serwerze, z założenia.
  • Aplikacje na komputer. Zainstalowany program też działa po stronie klienta, ale może także wysyłać pliki lub dane o użyciu do producenta. Jego polityka prywatności nadal ma znaczenie.

Jak sprawdzić, z którego korzystasz

Otwórz narzędzia deweloperskie przeglądarki (F12 w większości przeglądarek na komputerze), przejdź do karty Sieć i przepuść przez narzędzie testowy plik. Narzędzie po stronie serwera pokazuje na starcie wychodzące żądanie o rozmiarze zbliżonym do Twojego pliku. Narzędzie po stronie klienta pokazuje tylko małe żądania, takie jak reklamy czy pingi analityki, i żadnego, które rośnie razem z plikiem. Wykonanie tego samego zadania z wyłączonym Wi-Fi to szybka wersja tego samego testu.

Co wybrać

Przy umowach, paskach wypłat, pismach medycznych i skanach dowodów lepszym domyślnym wyborem jest przetwarzanie po stronie klienta: nigdzie indziej nie ma kopii, która mogłaby wyciec lub zostać zatrzymana. Przy publicznej broszurze lub menu oba się sprawdzą. Gdy potrzebujesz czegoś, z czym przeglądarka słabo sobie radzi, na przykład rozpoznawania tekstu w archiwum liczącym 2000 stron, renomowane narzędzie po stronie serwera z jasną polityką przechowywania to rozsądny wybór, użyty do tego pliku, a nie z przyzwyczajenia.