Безопасность PDF в браузере: преимущества локального слияния и разделения

Опубликовано 2026-04-13Чтение 8 мин

Резюме (TL;DR)

В прошлом месяце мне нужно было склеить 47 отсканированных страниц договора (общим весом 230 МБ) в один файл. Я уже собирался загрузить их в привычный онлайновый PDF-сервис, но остановился, увидев в именах файлов настоящие ФИО контрагента. В итоге я сделал всё на pdf-lib (v1.17.1) прямо во вкладке браузера: около 18 секунд на M2 MacBook Air, кулер даже не раскрутился. С тех пор чувствительные PDF я сначала пробую обрабатывать именно в браузере.

Слияние и разделение PDF — это вовсе не «работа, для которой нужно обязательно загружать документ на чей-то сервер». Благодаря современным веб-стандартам и библиотекам на WebAssembly (pdf-lib, порты PDFium, MuPDF.js и др.) документы среднего размера обрабатываются в браузере достаточно быстро. Главное преимущество такого подхода — файл не покидает сеть устройства. Раз нет загрузки, радикально сокращаются и серверные логи, и временное хранение, и бэкапы, и возможные каналы утечки. При этом для файлов в несколько сотен мегабайт, CPU-ёмких задач вроде OCR и пересжатия сканов, а также сложных сценариев с подписью некоторых зашифрованных документов серверные инструменты по-прежнему могут быть уместнее. Итог: чем выше чувствительность и разумнее размер файла, тем лучше подходит обработка в браузере, а для большого объёма, комплексного OCR и сохранения сложных электронных подписей безопаснее выбирать проверенные серверные инструменты или локальные десктопные приложения.

Предыстория и концепции

PDF — это не простая картинка, а объектно-ориентированный формат документа. Файл состоит из множества indirect object (косвенных объектов), каждый из которых индексируется по байтовому смещению через перекрёстную таблицу XRef в конце файла. Современный PDF умеет паковать несколько объектов в потоки ObjStm, а ещё часто распространяется с инкрементальными обновлениями, добавленными сверху базовой ревизии. Поэтому слияние — это не «склеить два файла», а скорее перенести граф объектов одного PDF в пространство имён другого и переписать новую XRef-таблицу.

С разделением та же история. Оставляя только выбранные страницы, нужно аккуратно вычленить шрифты и изображения, на которые они ссылаются, и залатать оборванные ссылки — иначе получится невалидный PDF. Библиотеки для браузера вроде pdf-lib выполняют эту работу на чистом JavaScript и WebAssembly. То есть на уровне спецификации путь «в браузере» даёт эквивалентный результат, при этом байты документа не покидают устройство.

Сравнение и данные

Критерий Серверная обработка Браузерная обработка
Приватность Файл попадает на сервер, возможно временное хранение Файл обрабатывается только на устройстве
Небольшие файлы (несколько МБ) Задержка сетевых раундтрипов играет большую роль Обычно ощущается быстрее
Большие файлы (100 МБ+) Выигрыш за счёт выделенных CPU и памяти Можно упереться в лимиты памяти браузера
Оффлайн Невозможен Возможна
Риск остаточных данных Требует доверия к политикам и логам В принципе очень низкий
Продвинутые функции (OCR, сложные подписи) Много зрелых инструментов Зависит от реализации, часто ограничена

В таблице я привёл тенденции, а не конкретные цифры, потому что реальная скорость складывается из «размер файла × скорость сети × время обработки на сервере». В офисных сценариях — склеить 20–30 документов по несколько мегабайт — браузер часто выигрывает просто за счёт отсутствия сетевого раундтрипа.

Практические сценарии

Сценарий 1 — склейка подборки договоров. Когда договор, приложения и дополнительные соглашения надо прислать одним файлом, сила браузерной обработки в том, что файл никуда не уходит. Я видел, как юридические отделы двух компаний запрещали внешние PDF-мерджеры: в одном случае черновик попал в выдачу поисковика, в другом команда поздно заметила 30-дневное хранение данных в условиях бесплатного сервиса. Если внутренними правилами материал отнесён к «нельзя загружать вовне», такой подход идеально подходит.

Сценарий 2 — разбивка брошюры. Как-то я резал 100-страничный учебный материал на 14 глав и случайно задал неверный диапазон страниц. В браузере спасло простое обновление вкладки — можно начать заново; повторное редактирование давалось намного легче. Дополнительный бонус: даже при промахе оригинал не распылялся по сети.

Сценарий 3 — уменьшение размера сканов. Сканы по природе тяжёлые, потому что это изображения. Договор на 48 МБ, отсканированный на 650 dpi, я сжал до 11 МБ простой ресемплингом до 200 dpi. Если заранее привести картинки в порядок, итоговый PDF после слияния становится заметно легче.

Распространённые заблуждения

«В браузере медленно». Верно было в 2015 году, но с появлением WebAssembly SIMD и потоков воркеров картина поменялась. На моём ноутбуке слияние пяти PDF по 10 МБ занимает около 1,3 секунды, а та же задача через серверный сервис с учётом загрузки и скачивания — от 10 секунд и дольше.

«Сервер всегда быстрее». Из-за цепочки «загрузка → очередь → обработка → скачивание» при медленной сети или загруженном сервере браузер с мгновенной обработкой нередко оказывается быстрее.

«Браузерная обработка не годится для аудита и доказательств». Для потоков, где нужен журнал аудита, уместны специализированные серверные системы. Но обычные личные задачи вроде слияния, разделения и перестановки страниц не обязательно превращать в аудируемые документы.

«Зашифрованный PDF обязательно обрабатывать на сервере». Стандартные операции вроде расшифровки AES-128/256 без проблем делают и браузерные библиотеки. А вот нестандартные подписи и политики некоторых ведомств стоит заранее проверить в документации инструмента.

Чек-лист

  1. Содержит ли документ персональные данные или конфиденциальную информацию?
    • Да — браузерная обработка как первый выбор.
  2. Каков общий объём файла?
    • До 50–100 МБ: браузер вполне справится.
    • Сотни мегабайт и выше: локальное десктоп-приложение или проверенный серверный инструмент.
  3. Нужны ли OCR, сложные подписи, аудит-трейл?
    • Да — рассмотрите специализированные инструменты (локальные или корпоративные серверы).
  4. Это регулярная повторяющаяся задача?
    • Да — удобнее держать под рукой закладку в браузере или PWA.
  5. Работа должна идти оффлайн?
    • Да — подойдут только браузер с кэшированным веб-приложением или десктоп.
  6. Как вы будете делиться результатом? Если через ссылку — перепроверьте, что к ней не прицепились лишние трекеры.

Связанный инструмент

Сценарии слияния из этой статьи можно опробовать в инструменте слияния PDF от Patrache Studio. Если нужно сначала уменьшить размер изображений внутри сканов, лучше сперва заглянуть в полное руководство по сжатию изображений и привести форматы в порядок. А если в итоговый PDF вы планируете добавлять QR-коды для идентификации товара или документа, прочитайте также Безопасность QR-кодов — там разобраны риски при печати и повторном распространении.

Источники