Безопасность 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-кодов — там разобраны риски при печати и повторном распространении.

Источники