Загрузить файл
  1. base64hub
  2. Инструменты для файлов
  3. Base64 в PDF

Base64 в PDF

Вставьте Base64 из ответа API, электронного счёта или вложения письма, и PDF откроется на этой странице с кнопкой скачивания. Декодирование и просмотр идут в вашем браузере.

Бесплатно без регистрации и ограничений Локально ничего не загружается Проверяет версию, страницы, заголовок, шифрование Обновлено 27 окт. 2026 г.
Ввод –Результат –Размер –

Обработка идёт в браузере. Эта страница не может никуда отправить ваши данные – откуда мы это знаем

Как декодировать Base64 в PDF

  1. Вставьте строку в поле Base64 или data URI. Подойдёт полный URI data:application/pdf;base64,…, а также переносы строк, кавычки вокруг, URL-safe Base64 (- и _) и отсутствующее дополнение =. Длинную строку, сохранённую в файле, откройте кнопкой Открыть файл .txt или перетащите файл в поле; всё, что больше 4 MB, декодируется без показа в текстовом поле.
  2. Превью откроется под кнопками. Декодирование начинается сразу при вставке; снимите галочку На лету, если хотите нажимать Декодировать сами.
  3. Проверьте Имя файла. Сначала там decoded, но имя берётся из параметра name= в data URI или из открытого текстового файла: invoice.pdf.b64.txt превращается в invoice.pdf.
  4. Нажмите Скачать файл. Ссылка откройте его в новой вкладке под превью покажет тот же PDF в полный размер.

При открытии страницы загружен пример PDF, чтобы вы увидели, как выглядит рабочий результат, ещё до вставки своей строки.

Откуда берутся PDF в Base64

JSON не умеет передавать сырые байты, поэтому сервисы, которые возвращают документы через JSON API, отдают их строкой Base64, часто в поле с названием вроде content, document, file или label.

  • Транспортные этикетки. API этикеток и логистики возвращают этикетку для печати в виде PDF в Base64. Тот же запрос, в зависимости от параметра формата, часто может выдать ZPL или PNG, так что поле «PDF» не всегда содержит PDF (см. таблицу ниже).
  • Сервисы электронной подписи возвращают подписанный документ, а часто и отдельный сертификат аудита, в Base64 в ответе о завершении или в вебхуке.
  • Электронные счета. XML-счета в формате UBL встраивают читаемую PDF-копию в элемент вроде <cbc:EmbeddedDocumentBinaryObject mimeCode="application/pdf" filename="INV-1001.pdf">. Скопируйте текст между тегами; атрибут filename подскажет, что вписать в поле Имя файла.
  • Вложения писем. В исходном коде письма вложение PDF выглядит как MIME-часть с Content-Transfer-Encoding: base64 и строками по 76 символов. Вставьте только закодированный блок или откройте всё письмо в декодере EML, который перечисляет все вложения. Структура объясняется в статье Base64 в электронной почте.
  • Выгрузки из баз данных. Документы из столбцов BLOB часто выгружаются как текст. encode(data, 'base64') в PostgreSQL и TO_BASE64() в MySQL и MariaDB вставляют перенос строки после каждых 76 символов; декодер их пропускает.

Если в JSON-ответе несколько закодированных полей, декодирование Base64 внутри JSON найдёт и декодирует их все сразу. Для обратной задачи, из файла PDF в строку, используйте PDF в Base64.

Что показывает превью

ПолеОткуда берётся
Версия PDFИз строки заголовка, например %PDF-1.7
СтраницыПодсчёт объектов страниц в файле (см. ниже)
ЗаголовокЗаголовок из информации о документе, если он хранится простым текстом
ЗашифрованПоявляется, если в файле есть словарь шифрования: пароль на открытие или только ограничения прав
SHA-256Хеш декодированных байтов. Сравните его с sha256sum invoice.pdf на стороне отправителя, чтобы доказать, что файл дошёл целым

Превью рисует встроенный просмотрщик PDF браузера: он показывает декодированные байты из локального URL blob:. Chrome, Edge, Firefox и Safari на компьютере показывают PDF прямо на странице. Превью остаётся пустым, если браузер настроен скачивать PDF, а не открывать их (Chrome: «Настройки» → «Конфиденциальность и безопасность» → «Настройки сайтов» → «Дополнительные настройки контента» → «PDF-документы»; Firefox: «Настройки» → «Основные» → «Приложения» → «Portable Document Format»), а многие мобильные браузеры вообще не умеют показывать PDF внутри страницы. В таких случаях откройте его в новой вкладке или Скачать файл всё равно работают, а сведения над превью заполняются в любом случае.

Как считаются страницы

Чтобы посчитать страницы, инструмент не отрисовывает PDF. Он считает объекты страниц (/Type /Page) в первых 32 MB файла. Если их не видно, он читает запись /Count в дереве страниц, а если скрыта и она, показывает неизвестно. Две ситуации дают число, отличное от того, что покажет просмотрщик:

  • Слишком много страниц. PDF, который редактировали, аннотировали или подписывали после создания, часто сохраняется инкрементально: изменённые страницы дописываются новыми объектами, а старые версии остаются в файле. В тестовом файле с 2 страницами и одной переписанной страницей счёт даёт 3.
  • Неизвестно. Начиная с PDF 1.5 объекты можно упаковывать в сжатые потоки объектов, и тогда ни объекты страниц, ни дерево страниц нельзя прочитать без распаковки.

Если числа расходятся, верьте просмотрщику.

Если результат не PDF

Если декодированные байты оказались чем-то другим, над полями появится подсказка с найденным форматом, например «Похоже на HTML, а не на PDF.», и кнопка Скачать как .html. Начало Base64 часто объясняет, что произошло:

Base64 начинается сЧто у вас
JVBERi0PDF (%PDF-)
SlZCRVJpMHPDF, закодированный дважды: Base64 от JVBERi0…
H4sIДанные, сжатые gzip
PCFET0NUWVBF, PCFkb2N0eXBl, PGh0bWwHTML-страница, обычно страница ошибки или входа
eyJJSON, часто сообщение об ошибке вроде {"error":…
XlhBЭтикетка ZPL (^XA) для термопринтеров
iVBORw0KGgoКартинка PNG

Для дважды закодированной строки или данных gzip инструмент покажет вторую подсказку с кнопкой Декодировать ещё раз, которая заменит ввод внутренним слоем; Назад вернёт то, что вы вставили. Для повреждённого или нераспознанного файла подсказка начинается со слов «Не похоже на PDF» и называет определённый тип, а расширение остаётся .pdf, чтобы можно было всё равно скачать байты и попробовать другую программу.

У ошибок до декодирования свои причины:

  • Экранирование из сырого JSON, например \/ (так пишет слеши json_encode в PHP) или буквальный \n между строками, убирается автоматически. Если какое-то другое экранирование с \ всё равно вызывает Недопустимый символ \, используйте починку Base64 или сначала разберите JSON и скопируйте значение.
  • Недопустимый символ % означает, что строку закодировали для URL. Последовательности для +, / и = (%2B, %2F, %3D) исправляются автоматически; для всего остального сначала пропустите строку через URL-декодер.
  • PDF определяется, но ничего не показывает: обычно он обрезан. Заголовок цел, поэтому определение проходит, но конца файла, где лежит таблица перекрёстных ссылок, нет. Другие типичные причины разобраны в статье ошибки Base64.

Как декодировать Base64 в PDF в коде

Python, из JSON-ответа:

import base64, json

with open("response.json") as f:
    b64 = json.load(f)["document"]

if b64.startswith("data:"):
    b64 = b64.split(",", 1)[1]

pdf = base64.b64decode(b64)
if not pdf.startswith(b"%PDF-"):
    raise ValueError(f"not a PDF, starts with {pdf[:16]!r}")

with open("document.pdf", "wb") as f:
    f.write(pdf)

b64decode молча отбрасывает символы вне стандартного алфавита, поэтому URL-safe строка с - и _ без всякой ошибки декодируется в мусор. Для таких строк используйте base64.urlsafe_b64decode. Node.js принимает оба алфавита одним вызовом:

import { readFile, writeFile } from "node:fs/promises";

const { document } = JSON.parse(await readFile("response.json", "utf8"));
const pdf = Buffer.from(document.replace(/^data:[^,]*,/, ""), "base64");

if (pdf.toString("latin1", 0, 5) !== "%PDF-") throw new Error("not a PDF");
await writeFile("document.pdf", pdf);

В командной строке важен jq -r: без -r значение сохраняет кавычки, и base64 -d останавливается с ошибкой «invalid input».

jq -r '.document' response.json | base64 -d > document.pdf

Ключ document взят для примера: в вашем API поле может называться иначе. Больше приёмов в статьях Base64 в Python, Base64 в Node.js и Base64 в Bash.

Вопросы и ответы

Как превратить строку Base64 в файл PDF?

Вставьте строку в поле выше, проверьте превью и нажмите Скачать файл. Из JSON копируйте только значение между кавычками; префикс data:application/pdf;base64, и переносы строк можно оставить.

Почему декодированный PDF открывается как повреждённый или пустой?

Почти всегда строку обрезали (лимит длины строки в логе, столбец базы данных или ограничение при копировании), и конца файла не хватает. Полный PDF заканчивается на %%EOF; сравните декодированный размер с тем, что сообщает отправитель.

Можно ли посмотреть PDF с паролем?

Да. В сведениях будет Зашифрован: да, а встроенные просмотрщики Chrome и Firefox спросят пароль прямо в превью. Скачанный файл не меняется и открывается тем же паролем.

Почему инструмент пишет, что мой Base64 не PDF?

Декодированные байты не начинаются с %PDF-. Чаще всего API прислал страницу ошибки или JSON-сообщение вместо документа; предупреждение назовёт, что найдено, и предложит сохранить файл с этим расширением, чтобы его можно было прочитать.

Безопасно ли декодировать здесь конфиденциальный PDF?

PDF декодируется и показывается внутри браузера, а политика безопасности контента (CSP) страницы не даёт ей выполнять сетевые запросы, кроме счётчика просмотров Cloudflare. Можно даже отключиться от сети после загрузки страницы и продолжать работать.