Когда ты шестой раз пытаешься загрузить PDF-документ в онлайн-систему, а она отвечает “файл слишком большой”, ты сначала злишься. Потом грустишь. Потом начинаешь гуглить. А потом – если ты разработчик – просто идешь и пишешь свой инструмент.
Собственно, привет. Я сделал bfit.ru – сервис для сжатия PDF прямо в браузере. Без регистрации, загрузок на сервер и прочего. Просто потому, что мне надоело страдать.
История начинается с фото паспорта
Если ты хоть раз пытался загрузить отсканированный документ – будь то паспорт, диплом или справка с работы – то ты уже в этой истории.
Я лично столкнулся с этим, когда фоткал бумаги на телефон, собирал из них PDF, а в итоге получал файл на 40+ мегабайт. А система загрузки – будь она неладна – принимала только до 10 МБ.
И таких систем много. Я не шучу:
- Бюджетные ситемы
- Старые бухгалтерские порталы
- Официальные сайты посольств
- Образовательные платформы
Это всё реальность, где размер PDF имеет значение.
Почему PDF такой огромный?
Чтобы понять, откуда у PDF такая склонность к ожирению, стоит на пару минут углубиться в его природу. Формат PDF появился в начале 90-х, когда в Adobe решили сделать что-то вроде «бумаги, которую можно пересылать по интернету». Идея была простая: ты создаешь документ, и он у любого пользователя на любом устройстве выглядит одинаково — с теми же шрифтами, отступами, картинками, как на печати.
С этой задачей PDF справляется на отлично. Он действительно сохраняет внешний вид документа как есть, причём независимо от платформы. Но плата за это удобство – то, что PDF всё в себя тащит. Шрифты, изображения, иногда даже CSS-стили и JavaScript (да, PDF может содержать код – привет, интерактивные формы). Это как будто ты пересылаешь не письмо, а сразу целую почтовую станцию.
А теперь представь, что в PDF – не текст, а сканы
Когда мы говорим о «тяжёлых» PDF, почти всегда речь идёт не о текстовых документах, а о тех, которые были сделаны из изображений. Самый частый сценарий – сфоткал документы на телефон, собрал их в PDF через любое приложение – и получил файл, который весит, как если бы ты попытался запихнуть туда целый выпуск журнала в высоком разрешении.
Почему так происходит? Потому что каждое изображение сохраняется, как правило, в максимальном качестве. Телефон щёлкает на 12 мегапикселей, сохраняет в JPEG (или HEIC) без особого сжатия, и вот у тебя одна страничка – это 5-6 мегабайт. Умножь на 5–6 страниц – и получаешь PDF весом 30–40 МБ.
В отличие от Word, PDF не думает за тебя
Word умеет сжимать изображения при сохранении – если вставил фото в документ, он может автоматически его уменьшить. PDF – нет. Он считает, что раз ты положил в него картинку такого качества, значит, тебе это зачем-то нужно. И будет хранить её бережно, с почётом. Даже если это просто фото справки с грязным фоном и тенью от телефона.
Плюс, в PDF может добавиться «мусор» – метаданные, встроенные миниатюры, неиспользуемые шрифты, которые зачем-то заинклюдились при экспорте. Всё это не видно, но весит.
PDF не устарел, но его никто не адаптировал под реальную жизнь
Формат сам по себе мощный и гибкий. Он отлично подходит для печати, архивирования, юридических документов. Но вот в реальности, особенно когда речь про документы, собранные на лету с телефона, он не всегда оптимален. Люди не сидят и не подбирают параметры экспорта. Они просто нажимают «сохранить как PDF» – и получают монстра.
Парадоксально, но в 2025 году, когда всё сжимается, упрощается и летает, PDF-файл из шести фото может оказаться неподъёмной глыбой, которую ты не можешь ни загрузить, ни переслать.
А ограничения-то почему такие?
И вот ты сидишь с этим здоровенным PDF на 42 мегабайта и думаешь – почему вообще это проблема? Почему нельзя просто взять и загрузить? Ответ на удивление банален: большинство систем – это динозавры. Им по 10, а то и 20 лет, и за всё это время никто особо не пересматривал технические ограничения.
Исторически лимиты на размер файлов выставлялись из соображений экономии ресурсов: меньше нагрузки на сервер, меньше риск засыпаться от большого количества запросов. В эпоху, когда интернет ещё звенел модемом, 10 мегабайт считались роскошью. А потом эти лимиты просто перекочевали в современные интерфейсы – и остались там.
Другой момент – безопасность и контроль. Чем меньше файл, тем проще его обрабатывать, проверять, хранить. Большие файлы – потенциальный источник проблем: могут содержать вирусы, перегрузить парсеры, вызвать ошибки при обработке. Поэтому в госструктурах, в зашитых под ключ системах или у админов «старой школы» проще всё просто ограничить.
В итоге получается как в том анекдоте: технологии развиваются, телефоны снимают в 4K, а ты не можешь загрузить PDF с фото справки, потому что «максимум 9.8 МБ, извините».
Что, нельзя было просто загуглить «сжать PDF онлайн»?
Первое, что делает любой нормальный человек (и я в том числе) – идёт в Google. И да, сервисов по сжатию PDF – хоть отбавляй. Но стоило мне открыть парочку таких «онлайн-компрессоров», как начали закрадываться сомнения.
Во-первых, почти все они требуют загрузки файла на сервер. А это значит, что твой документ (паспорт, справка, диплом, трудовая, что угодно) уходит куда-то «в облако». А потом тебе либо дают скачать результат, либо – как это бывает чаще – предлагают оставить почту, заплатить, или подождать 60 секунд «в очереди». И это ещё если сервис не начал пихать рекламу или не предложил подписку на 3 дня с автосписанием через неделю.
Во-вторых, ты не знаешь, что с файлом будет дальше. Удалят ли его? Используют ли для обучения чего-нибудь? Хранят ли вообще? Особенно это критично, если ты работаешь с чувствительными данными – как юрист, бухгалтер, HR, врач или просто параноик, вроде меня.
И в-третьих, качество у многих таких сервисов страдает. Иногда сжатие идёт агрессивное – вплоть до того, что текст превращается в мыльную кашу. Иногда ничего не меняется вовсе. Иногда вообще выдают ошибку на ровном месте – особенно если PDF нестандартный.
И всё-таки – сделал своё
В итоге я решил не пользоваться готовыми решениями. Не потому что они ужасные. Нет, некоторые из них вполне рабочие. Но мне хотелось чего-то, за что я отвечаю сам. Где я понимаю, что происходит с файлом. Где можно не волноваться, не ждать, не кликать по рекламе. Где просто – открыл вкладку, перетащил файл, и ушёл с готовым результатом.
Решил сделать всё на стороне клиента – чтобы файл не покидал пределы браузера. Для этого выбрал стек чисто фронтовый: pdf-lib для работы с PDF-документами, canvas для рендеринга изображений и несколько вспомогательных штук вроде UPNG.js для дополнительного сжатия PNG и манипуляций с картинками.
По сути, это просто: ты читаешь PDF, берёшь каждую страницу, рендеришь её в изображение, сжимаешь это изображение, собираешь новый PDF и отдаёшь пользователю. Не ракетостроение. Я Америку не открыл. Но это честная инженерная работа: отладить все косяки, уложиться в память браузера, не зависнуть на больших файлах.
Внутри всё просто, почти примитивно
Серьёзно, там нет какого-то супер-алгоритма. Всё работает предельно наивно.
Скрипт берёт документ, выдирает страницы, превращает их в изображения, сжимает, и снова собирает в новый файл. Я не реализовал интеллектуальное определение текста, не умею отделять изображения от текста, не строю деревья шрифтов – просто делаю «быстрее, проще, легче».
Можно сказать, это инженерный минимализм. Такой, каким бы я хотел видеть интерфейс для самого себя. Без слоёв абстракции, без загрузки на сервер, без шагов «вводи почту и получай по ссылке».
Зато теперь это работает
Пока что – без изысков, но вполне надёжно. Начинал я всё с PDF, потому что именно он был «камнем преткновения» в моих задачах. Но по дороге стало ясно, что точно такая же боль встречается и с изображениями. Особенно когда нужно отправить скан какого-нибудь договора, фото диплома или справку в формате JPG или PNG – а весит она под 10 мегабайт, потому что снимал на телефон с высоким разрешением. И да, не все умеют это делать штатными средствами. Ну просто не нужно это умение нормальному человеку.
Так что теперь сервис работает не только с PDF, но и с JPG, PNG и даже HEIC (это то что айфон делает). Точно по тому же принципу: без сервера, без отправки куда-то. Всё обрабатывается в браузере, сжимается, и отдаётся обратно. Никакой магии – просто честное перекодирование, иногда с уменьшением разрешения, иногда с более плотной компрессией. И чаще всего – с результатом, которого вполне хватает, чтобы пройти любые «допотопные» лимиты на загрузку файлов.
Да, там пока нет настройки качества, нет предпросмотра, нет расширенной логики – но основа есть. А для повседневных задач её, честно говоря, хватает.
Сделал для себя – может, и вам пригодится
Я не ставил задачу создать очередной стартап. Это не продукт, не бизнес и даже не кандидат на хакатон. Это просто инструмент, который я сделал потому, что сам столкнулся с проблемой, разозлился, закопался в ресёрч, и в какой-то момент понял: проще написать своё.
Сервис называется bfit.ru. Там можно сжать PDF, JPG, PNG или HEIC прямо в браузере. Без регистрации, рекламы и ожидания. Открываешь вкладку, перетаскиваешь файл – получаешь обратно версию в несколько раз легче.
Это первая версия. Минимум интерфейса. Минимум контроля.
Но за ней – реальные файлы, которые больше не отлетают на загрузке из-за 10 мегабайт.
Что дальше?
Я не планирую останавливаться. В ближайших планах:
- предпросмотр страниц в PDF до сжатия
- выбор качества для изображений
- работа с другими форматами (включая DOCX, PPTX, аудио и, возможно, видео)
- офлайн-режим через PWA
- может быть, батчевый режим – чтобы можно было перетащить сразу 10 файлов
Пока всё это варится и дорабатывается в свободное время. Поэтому, если найдёте баг или что-то не сработает – не судите строго. Лучше напишите, чем не понравилось.
А если всё заработало – пользуйтесь на здоровье. Я буду только рад.