← Все инструменты
🗜️

Сжать PDF — Уменьшить размер PDF файла онлайн

Оптимизируйте ваши тяжелые PDF документы, уменьшая размер картинок и очищая метаданные. Быстрое сжатие без потери читаемости текста.

+Загрузить PDF или фотоили перетащите файлы сюда🚀 Запустить инструмент бесплатно

Как это работает

01

Загрузите PDF

Откройте тяжёлый PDF-документ в браузере без загрузки на сервер.

02

Выберите уровень сжатия

Укажите баланс между качеством изображений и размером файла.

03

Скачайте сжатый PDF

Оптимизированный файл готов — меньше весит, читается так же.

Почему pdfredX

🔒

Полная конфиденциальность

Файлы не покидают ваш браузер. Никакой загрузки на сторонние серверы.

Обработка на стороне клиента

Все вычисления выполняются локально — быстро, безопасно и бесплатно.

🆓

Без регистрации

Просто откройте браузер и приступайте. Никаких аккаунтов не нужно.

📱

На любом устройстве

Работает на ПК, планшете и смартфоне без установки.

Полезные материалы по теме

Как сжать PDF онлайн и уменьшить размер файла: пошагово, без потери читаемости
Тяжёлый скан на 40 МБ не уходит письмом, презентация не грузится в форму, договор со вложенными фото весит как фотоархив. Чаще всего «похудеть» такому PDF мешают картинки внутри — сканы и фотографии в максимальном разрешении. Инструмент «Сжать» в pdfredX переупаковывает страницы с нужным вам качеством прямо в браузере: вы двигаете один ползунок, видите итоговый размер и скачиваете облегчённый файл. Ничего не загружается на сервер.

Тяжёлый скан на 40 МБ не уходит письмом, презентация не грузится в форму, договор со вложенными фото весит как фотоархив. Чаще всего «похудеть» такому PDF мешают картинки внутри — сканы и фотографии в максимальном разрешении. Инструмент «Сжать» в pdfredX переупаковывает страницы с нужным вам качеством прямо в браузере: вы двигаете один ползунок, видите итоговый размер и скачиваете облегчённый файл. Ничего не загружается на сервер.


Шаг 01. Загрузить PDF

Откройте pdfredx.com и перетащите PDF в зону загрузки — или выберите его через проводник. Файл читается локально: PDF.js рендерит страницы во вкладке, ни один байт не уходит на удалённую машину. Уже загруженный документ можно сразу отправить в сжатие.


Шаг 02. Выбрать уровень сжатия

Откройте панель «Сжать» — здесь три настройки:

  • Ползунок качества. Задаёт качество JPEG для картинок внутри страниц. 90–95% — почти незаметная потеря, файл меньше в разы; 60–70% — максимальная экономия для черновиков и вложений, где важен только текст. Значение видно прямо на ползунке в процентах.
  • ☑ Ограничить 1500 px. Уменьшает разрешение страниц до 1500 px по длинной стороне. Для экранного чтения и печати A4 этого хватает, а «вес» падает сильнее всего — именно избыточное разрешение сканов обычно и раздувает файл.
  • ☑ Очистить метаданные. Убирает служебную информацию документа, чтобы не тащить лишнее в итоговый файл.

Баланс подбирается под задачу: для отправки в ведомство — сильнее сжать, для архива важного документа — оставить качество повыше.


Шаг 03. Скачать сжатый PDF

Нажмите «Сжать PDF». Приложение проходит по страницам, переупаковывает каждую с выбранным качеством и собирает новый файл через jsPDF. После сборки вы увидите итог — на сколько процентов уменьшился размер и сколько мегабайт стало. Готовый документ скачивается напрямую из браузера. Бесплатно, без регистрации, без серверной очереди.


Как это работает технически

Сжатие идёт по растровому пути. Каждая страница уже представлена изображением (PDF.js отрисовал её в Canvas при загрузке). Функция compressImageUrl рисует это изображение на новом холсте нужного размера и переэкспортирует в JPEG с заданным качеством:

const scale = maxPx ? Math.min(1, maxPx / Math.max(origW, origH)) : 1; // даунскейл до 1500px
c.width  = Math.round(origW * scale);
c.height = Math.round(origH * scale);
ctx.drawImage(img, 0, 0, c.width, c.height);
c.toDataURL('image/jpeg', quality);                                    // переупаковка с качеством

Дальше jsPDF собирает страницы в новый документ — каждая вписывается в лист A4 с сохранением пропорций и центрируется. Итоговый размер сравнивается с исходной оценкой, отсюда и процент экономии.


Известные ограничения

Сжатие с потерями. Понижение качества JPEG и разрешения — необратимые операции. Мелкий текст на сканах при сильном сжатии может стать мягче. Если документ важен, начните с 90% и снижайте, глядя на результат.

Текстовый слой становится растровым. Пайплайн работает с изображениями страниц, поэтому в сжатом файле текст — часть картинки: выделить и скопировать его нельзя. Для документов, где нужен живой текст, это следует учитывать.

Максимальная выгода — на «тяжёлых» сканах. Файл, состоящий в основном из фотографий и сканов, сожмётся сильно. Документ, где и так мало графики, заметно не уменьшится — сжимать в нём почти нечего.


Нужно наоборот — собрать несколько документов в один? Это инструмент Объединить PDF.

Попробуйте прямо сейчас — pdfredx.com, без регистрации, файлы остаются у вас.

PDF не проходит по лимиту: как уменьшить файл для почты и госуслуг, не загружая на сервер
Знакомая стена: письмо не отправляется — «превышен размер вложения»; форма на портале госуслуг не принимает справку — «файл больше допустимого»; в чат поддержки не лезет скан договора. Почтовые сервисы обычно режут вложения на 20–25 МБ, госпорталы и банковские формы — часто ещё жёстче. И почти всегда речь идёт о **конфиденциальном документе**: скан паспорта, справка, выписка, договор. Разберём, как уменьшить такой файл и почему это стоит делать локально, а не через первый попавшийся онлайн-компрессор.

Знакомая стена: письмо не отправляется — «превышен размер вложения»; форма на портале госуслуг не принимает справку — «файл больше допустимого»; в чат поддержки не лезет скан договора. Почтовые сервисы обычно режут вложения на 20–25 МБ, госпорталы и банковские формы — часто ещё жёстче. И почти всегда речь идёт о конфиденциальном документе: скан паспорта, справка, выписка, договор. Разберём, как уменьшить такой файл и почему это стоит делать локально, а не через первый попавшийся онлайн-компрессор.


Почему файл не проходит и что обычно предлагают

PDF раздувают не буквы, а картинки: сканы и фотографии в максимальном разрешении легко дают десятки мегабайт на несколько страниц. Чтобы влезть в лимит, файл нужно переупаковать — понизить качество и разрешение изображений внутри.

Типичный совет — «загрузите PDF в онлайн-компрессор». И вот тут проблема: чтобы сжать документ, обычный сервис просит отправить его целиком на свой сервер. Ради операции, которая по сути сводится к пересохранению картинок, ваш паспорт или банковская выписка уезжает на чужую машину.


Куда уходит документ на серверных компрессорах

Когда вы загружаете PDF в обычный онлайн-сжиматель, файл целиком уходит на удалённую машину. Дальше — по политике сервиса, которую мало кто читает:

  • документ сохраняется во временном хранилище подрядчика (AWS, GCP, Azure);
  • обрабатывается на чужом сервере;
  • хранится от нескольких часов до нескольких суток «для надёжности»;
  • логируется вместе с метаданными — IP, время, имя и размер файла.

Отдельная ирония: вы уменьшаете файл, чтобы отправить его в одно ведомство по защищённому каналу, а по дороге он успевает полежать на сервере постороннего сервиса-компрессора. Для документов с персональными данными это ровно тот риск, которого вы пытались избежать.


Локальная альтернатива: сжатие прямо в браузере

pdfredX сжимает PDF, не загружая его никуда. Это следствие архитектуры, которое можно проверить.

Файл читается локально. PDF.js открывает документ во вкладке и рисует страницы на Canvas. Сетевого запроса с вашим файлом нет.

Переупаковка идёт в памяти вкладки. Понижение качества JPEG, даунскейл до 1500 px, очистка метаданных, сборка нового PDF через jsPDF — всё это операции над уже загруженными данными. Ничего не отправляется.

Готовый файл собирается на клиенте. Сжатый PDF формируется прямо во вкладке и отдаётся браузеру на скачивание — в папку «Загрузки», а не на сервер и обратно.

Работает офлайн. Загрузите файл, отключите интернет и сожмите документ — всё продолжит работать. Сеть нужна только чтобы один раз загрузить приложение.

Практично: откройте панель «Сжать», подберите ползунком качество (для вложений обычно хватает 70–80% + ограничение 1500 px), скачайте файл и проверьте, что он влезает в лимит. Не влез — снизьте качество ещё на шаг.


Что мы гарантировать не можем — честный дисклеймер

Клиентская обработка защищает документ от ухода на внешние серверы, но это не щит от всех угроз, и обещать обратное было бы нечестно.

Вредоносное ПО или кейлоггер на устройстве. Если машина скомпрометирована, программа может читать файлы с диска в обход браузера.

Браузерные расширения с широкими правами. Расширение с доступом «читать данные на всех сайтах» теоретически видит содержимое вкладки. Для чувствительных документов работайте в профиле без сторонних расширений или в приватном окне.

Сохранённый файл остаётся на вашем диске. Если устройство не защищено шифрованием, конфиденциальные файлы могут быть прочитаны третьими лицами при физическом доступе.

Мы обеспечиваем изоляцию на уровне браузерной вкладки. Остальное — на стороне пользователя.


Уменьшите документ под лимит без загрузки на сервер — pdfredx.com, бесплатно, без регистрации.

Как устроено сжатие PDF в браузере: canvas-перекодирование JPEG, downsampling и почему не FlateDecode
Сжать PDF на сервере можно «по-взрослому»: разобрать структуру, пройтись по потокам изображений, передискретизировать их, при желании перепаковать без потерь через FlateDecode, пересобрать документ. В браузере, без бэкенда и без отправки файла, набор ограничений другой — и архитектурный выбор не очевиден. Разберём, как устроен инструмент `compress` в pdfredX: почему растровое перекодирование через Canvas вместо структурной оптимизации, как считается экономия и где проходят границы подхода.

Сжать PDF на сервере можно «по-взрослому»: разобрать структуру, пройтись по потокам изображений, передискретизировать их, при желании перепаковать без потерь через FlateDecode, пересобрать документ. В браузере, без бэкенда и без отправки файла, набор ограничений другой — и архитектурный выбор не очевиден. Разберём, как устроен инструмент compress в pdfredX: почему растровое перекодирование через Canvas вместо структурной оптимизации, как считается экономия и где проходят границы подхода.


Архитектурный вызов: структурная оптимизация против растрового пути

Как сжимают PDF «по учебнику». Классический оптимизатор работает со структурой файла: находит потоки изображений (XObject), понижает их разрешение (downsampling), переупаковывает JPEG-объекты с новым качеством, применяет FlateDecode (то самое zlib/deflate) к текстовым и векторным потокам без потерь, чистит дубликаты шрифтов и метаданные. Это точный, но сложный путь: нужен полноценный парсер PDF и аккуратная работа с бинарным графом объектов.

Почему pdfredX идёт растровым путём. Инструмент встроен в общий пайплайн приложения, где страница любого документа уже приведена к изображению: PDF.js отрисовал её в Canvas ещё при загрузке. Поэтому сжатие не парсит структуру PDF заново, а переупаковывает готовые растры. Плюсы — предсказуемость (если PDF.js показал страницу, она сожмётся) и приватность (парсинг и переупаковка идут во вкладке, файл никуда не уходит). Плата — результат растровый: текстовый слой не сохраняется, а сжатие получается с потерями. Для типового сценария (тяжёлые сканы и фото) это оправданный компромисс: именно картинки и составляют почти весь «вес».


Разбор реализации

Переупаковка страницы: Canvas → JPEG

Ядро сжатия — функция compressImageUrl. Она рисует изображение страницы на новом холсте (при необходимости уменьшенном) и переэкспортирует в JPEG с заданным качеством:

async function compressImageUrl(url, origW, origH, maxPx, quality) {
  const scale = maxPx ? Math.min(1, maxPx / Math.max(origW, origH)) : 1; // downsampling
  const img = new Image();
  img.src = url;
  // ...onload:
  const c = document.createElement('canvas');
  c.width  = Math.max(1, Math.round(origW * scale));
  c.height = Math.max(1, Math.round(origH * scale));
  const ctx = c.getContext('2d');
  ctx.fillStyle = '#fff';                    // белая подложка вместо прозрачности
  ctx.fillRect(0, 0, c.width, c.height);
  ctx.drawImage(img, 0, 0, c.width, c.height);
  return c.toDataURL('image/jpeg', quality); // единственная точка потерь
}

Здесь два независимых рычага. Downsampling (scale) включается галочкой «Ограничить 1500 px»: если сторона больше порога, изображение физически уменьшается — это и даёт основную экономию, потому что убирает избыточные пиксели. Качество JPEG (quality, 0–1 из ползунка) регулирует силу сжатия при том же разрешении. Белая подложка нужна, потому что JPEG не хранит альфа-канал: без неё прозрачные области стали бы чёрными.

Почему именно JPEG, а не FlateDecode здесь

FlateDecode — сжатие без потерь; на фотографическом растре оно почти бесполезно (шумную картинку deflate ужимает слабо). Реальную экономию на сканах даёт именно лоссовый JPEG плюс понижение разрешения. Поэтому в растровом пайплайне выбран JPEG: он бьёт точно в то, что раздувает файл. FlateDecode остаётся сильным приёмом для *структурного* сжатия (текст, вектор), но это уже другой, не растровый путь.

Сборка и подсчёт экономии

Переупакованные страницы собираются в новый документ тем же способом, что и при объединении: jsPDF, лист A4, ориентация по пропорциям, каждая страница вписывается с сохранением пропорций (contain) и центрируется. Экономия считается сравнением реального размера результата с оценкой исходного:

let origEstimate = 0;
for (const p of items) origEstimate += Math.ceil(p.editUrl.length * 0.75); // base64 → байты
// ...после сборки:
const compressedSz = pdf.output('arraybuffer').byteLength;
const savedPct = Math.max(0, Math.round((1 - compressedSz / origEstimate) * 100));

Коэффициент 0.75 переводит длину base64-строки dataURL в оценку числа байт (base64 раздувает данные примерно на треть). Точное сравнение возможно только после сборки — поэтому процент показывается в конце, а не предсказывается заранее.


Компромиссы и границы подхода

Потери необратимы. И понижение качества, и даунскейл срезают информацию навсегда. Повторное сжатие уже сжатого файла быстро деградирует картинку — компрессировать стоит из оригинала.

Пик памяти при обработке. Каждая страница на время держит в памяти декодированный битмап (лист A4 при 150 DPI — это ~8,7 МБ RGBA), новый холст и итоговую JPEG-строку. На больших подборках между тяжёлыми шагами вставлен tick(), чтобы не морозить вкладку и обновлять прогресс.

На «лёгких» документах выгода мала. Если в PDF почти нет растровой графики, переупаковывать нечего — размер заметно не изменится.


Что дальше

Гибридный режим для цифровых PDF — сохранять текст и вектор как есть (структурный путь с FlateDecode), а лоссовое сжатие применять только к растровым объектам. Это дало бы «сжатие без потери текста» там, где исходник это позволяет.

Предпросмотр «до/после» на одной странице — оценить качество на глаз до обработки всего документа, чтобы не подбирать ползунок вслепую.


Хотите проверить на своём файле — загрузите тяжёлый скан на pdfredx.com и подберите баланс качества и размера. Без регистрации, без загрузки файла на сервер.

🚀 Запустить инструмент бесплатно