Xpdf Tools — набор консольных утилит для анализа и преобразования PDF. Он нужен там, где действие должно повторяться без ручного открытия окна: извлечь текст, проверить шрифты, получить изображения, выгрузить вложения, построить PNG-превью или подготовить отчёт о свойствах документа. Базовую страницу Xeon Live, где можно скачать Xpdf Tools бесплатно, удобно использовать как точку входа, а ниже разобрана рабочая схема для версии 4.06 с проверкой результата после каждого шага.
Главное отличие Xpdf Tools от обычного PDF-редактора — отсутствие единого графического окна. Интерфейсом служат команды pdftotext, pdfinfo, pdfimages, pdffonts, pdfdetach, pdftopng, pdftoppm, pdftops и pdftohtml. Такой подход требует аккуратной работы с путями и параметрами, зато хорошо подходит для пакетной обработки, серверных задач и воспроизводимых сценариев. Для понимания ограничений самого формата полезен отдельный материал о том, как устроен PDF и чем просмотр отличается от извлечения данных.
Xpdf Tools решает задачи чтения и преобразования содержимого, но не заменяет редактор. Утилиты не переставляют страницы, не рисуют аннотации, не меняют существующий текст и не выполняют OCR. На практике пакет удобен администраторам, разработчикам, архивистам, издательским командам и аналитикам, которым важно получить машинно обрабатываемый результат из большого числа PDF без ручных действий. Один процесс может сначала узнать число страниц, затем извлечь текст, отдельно проверить шрифты и только после этого запустить рендер нужного диапазона.
Комплект разделён по функциям. pdfinfo выдаёт свойства документа и сведения из информационного словаря; pdffonts перечисляет применённые шрифты; pdfimages извлекает встроенные растровые объекты; pdfdetach работает с файловыми вложениями. Остальные программы создают новое представление: pdftotext — текст, pdftohtml — HTML и ресурсы, pdftopng — PNG, pdftoppm — PBM/PGM/PPM, pdftops — PostScript или EPS в поддерживаемом режиме. Такое разделение снижает риск случайно выполнить не ту операцию: каждая команда имеет узкий результат и не изменяет исходный PDF.
Выбор утилиты начинается с формулировки результата. Для поиска слов нужен pdftotext, для изображения страницы — pdftopng, для исходной фотографии внутри PDF — pdfimages. Эти результаты нельзя считать взаимозаменяемыми: извлечённый JPEG не содержит текст и векторную графику страницы, а отрендеренный PNG уже является новым растром. При работе со сканом отсутствие текста означает необходимость внешнего распознавания, а не неисправность Xpdf Tools.
Рабочий процесс начинается не с массовой конвертации, а с проверки конкретного исполняемого файла. На Windows у Xpdf и Poppler встречаются одинаковые имена команд, поэтому одного сообщения о том, что pdfinfo найден, недостаточно. Версия 4.06 идентифицируется выводом параметра -v, а полный путь фиксируется в сценарии. Это особенно важно для планировщиков, служб и автоматизаторов, где переменная PATH отличается от интерактивного терминала.
Установка в привычном смысле пакету не требуется: это набор исполняемых файлов и документации. На Unix-подобной системе важны права исполнения и реальный путь до бинарника. На Windows после изменения PATH уже открытое окно терминала не получает новое значение автоматически, поэтому его закрывают и открывают заново. Для автоматизации полный путь надёжнее глобального PATH: он делает среду воспроизводимой и устраняет конфликт с Poppler utilities.
Проверка тестового документа должна содержать не только успешный код. Сравните число страниц из pdfinfo с просмотрщиком, затем извлеките текст одной страницы и убедитесь, что кириллица читается правильно. После этого запустите рендер одной страницы в PNG и откройте файл. Такая короткая цепочка подтверждает три независимые части: чтение структуры PDF, текстовый вывод и графический рендер.
Xpdf Tools использует общий файл конфигурации xpdfrc. В Linux, Unix и macOS пользовательский файл называется ~/.xpdfrc; при его отсутствии проверяется системное расположение, обычно /etc/xpdfrc. На Windows файл называется xpdfrc без точки и расширения и располагается рядом с исполняемым файлом. Опция -cfg задаёт другой конфигурационный файл для конкретного запуска.
В рабочем каталоге заранее разделите вход и результат. Например, input хранит исходные PDF, text — TXT, render — PNG, assets — извлечённые картинки, attachments — вложения, logs — журналы. Xpdf не обязан создавать все промежуточные папки. Каталоги формируют до запуска, а готовый файл перемещают из временного имени только после успешной проверки. Такой порядок предотвращает смешивание результатов разных документов и снижает риск принять частично записанный файл за завершённый.
pdftotext читает текстовые объекты PDF и превращает их в обычный текст. Он не распознаёт буквы на изображении. Поэтому правильная инструкция всегда содержит две проверки: наличие текстового слоя и пригодность восстановленного порядка чтения. Цифровой документ из офисной программы обычно даёт текст сразу; скан без OCR создаёт пустой или почти пустой результат.
Для первого запуска лучше указать входной и выходной файлы явно. Базовая команда выглядит как pdftotext "report.pdf" "report.txt". Режим -layout старается сохранить физическое расположение текста пробелами и переводами строк; параметры -f и -l ограничивают диапазон страниц. Специальное имя - в позиции результата направляет текст в стандартный вывод, что удобно для конвейера без промежуточного TXT.
В PDF текст часто хранится отдельными фрагментами с координатами, а не как готовые абзацы. Обычный режим pdftotext старается восстановить порядок чтения, а -layout сохраняет геометрию более буквально. Для отчёта с фиксированными колонками layout обычно полезнее, для полнотекстового поиска — естественный поток. Сложная газетная верстка, повернутые подписи и формы требуют контрольного сравнения нескольких режимов и проверки конкретных полей.
Для отдельной задачи преобразования удобно свериться с инструкцией как преобразовать PDF в TXT. Проблемы с копированием часто имеют ту же природу, поэтому материал почему текст не копируется из PDF помогает отличить защиту, отсутствие текстового слоя и повреждённое сопоставление символов.
Сканированный документ хранит страницу как изображение. При отсутствии скрытого OCR-слоя pdftotext не получает символы. Диагностика строится не вокруг повторного запуска одной и той же команды, а вокруг сопоставления трёх признаков: размер TXT, возможность выделить слова в просмотрщике и наличие полноформатных растров по данным pdfimages -list.
Для сканов важна граница ответственности: Xpdf отвечает за извлечение или рендеринг, распознавание выполняется другим инструментом. Полная последовательность для такого документа разобрана в материале как распознать текст в PDF. Повторное OCR уже распознанного документа способно создать дублирующий слой, поэтому сначала проверяют существующий текст и направляют на распознавание только нужные страницы.
Пакетная обработка не должна останавливаться на первом повреждённом PDF и не должна оставлять частичный TXT под окончательным именем. Безопасная схема создаёт временный результат, проверяет код завершения и размер, после успеха переименовывает файл. Для каждого входа журнал хранит путь, версию Xpdf, код и ограниченный stderr без содержимого документа и паролей.
Пароли не записывают в командные журналы и BAT-файлы общего доступа. В приложении аргументы передают списком без запуска оболочки, а не собирают строку из пользовательского ввода. Для недоверенных документов задают тайм-аут, ограничение памяти и объёма результата. Параллельность настраивают отдельно для лёгкого pdfinfo и тяжёлого рендера: десятки одновременных pdftopng на больших листах быстро расходуют память.
Три экрана в галерее показывают дополнительные интеграционные сценарии вокруг Xpdf: HTML-конвертацию, передачу текста во внешний редактор и предварительную проверку окружения. Это важное архитектурное свойство пакета: Xpdf остаётся небольшим консольным процессом, а выбор файлов, правила именования, фильтрация и бизнес-проверка выполняются вызывающей системой.
Для диагностики PDF полезно разделять четыре слоя: технические свойства документа, шрифты, растровые изображения и файловые вложения. Xpdf Tools даёт отдельную программу для каждого слоя. Последовательность ниже помогает понять структуру файла до конвертации и не смешивать исходный растр со снимком всей страницы.
pdfimages принципиально отличается от pdftopng. Он извлекает растровый объект без применения всех преобразований потока страницы: поворота, обрезки, масок и некоторых цветовых операций. Поэтому извлечённый файл способен выглядеть иначе, чем картинка на готовой странице. Для задачи сохранения исходных фотографий это ожидаемое поведение; для точного снимка композиции нужен рендер страницы.
Практическая проверка изображений состоит из трёх сравнений. Сначала изучите pdfimages -list и найдите ожидаемый объект по странице и размеру. Затем извлеките его и откройте отдельно. После этого отрендерьте ту же страницу pdftopng и визуально сопоставьте. При различии исходный объект используют для архива или дальнейшей обработки, а PNG страницы — для визуального контроля. Подробный разбор этой задачи есть в инструкции как извлечь изображения из PDF.
pdffonts ничего не исправляет; он только показывает состояние шрифтов. Невстроенный шрифт устраняется повторным экспортом из исходной программы или специализированным PDF-процессором. При повреждённом сопоставлении символов смена выходной кодировки pdftotext не восстанавливает смысл. Это видно по сочетанию двух признаков: визуально буквы отображаются правильно, а копирование и pdftotext дают одинаковые неверные символы. Тогда нужна другая стратегия — OCR, другой парсер или восстановление исходного документа.
pdfinfo также не является средством верификации происхождения документа. Поля Author, Creator, Producer и даты — обычные метаданные, которые могут отсутствовать или не соответствовать реальной истории файла. Для аудита сохраняют хэш входного PDF и журнал обработки отдельно. Значения pdfinfo полезны для маршрутизации: большой лист направляют в ограниченный рендер, зашифрованный файл — в ветку с разрешёнными данными доступа, документ с JavaScript — в более жёсткую песочницу.
Конвертеры Xpdf Tools создают новое представление документа. Здесь особенно важно заранее определить цель: PNG нужен для визуальной копии страницы, PPM/PGM/PBM — для технической растровой цепочки, HTML — как промежуточная веб-структура, PostScript — для совместимых печатных процессов. Один формат не заменяет остальные.
По документации 4.06 pdftopng и pdftoppm используют 150 DPI по умолчанию. Повышение разрешения увеличивает число пикселей по обеим осям, поэтому расход памяти и объём несжатых данных растут заметно быстрее самого значения DPI. Для превью разумнее начинать с 150 DPI, а для мелкой типографики или подготовки к OCR увеличивать разрешение только после сравнения тестовой страницы.
В pdftopng доступны режимы монохромного, серого и цветного вывода, а также альфа-канал для PDF с прозрачным фоном. В pdftoppm доступны управление поворотом, сглаживанием шрифтов и векторной графики. Эти параметры влияют на визуальный результат, поэтому менять их следует на контрольной странице, а затем фиксировать в сценарии. Для делового процесса важна не максимальная детализация, а стабильный результат при ограниченном времени и памяти.
Для создания PNG на практике полезно сопоставить команды с отдельной инструкцией как конвертировать PDF в PNG. При проблемном документе сначала проверьте, открывается ли исходный PDF и читается ли его структура; порядок диагностики для повреждённых файлов разобран в материале как открыть повреждённый PDF.
pdftohtml в 4.06 получил современный индекс с боковой панелью и областью просмотра; опция -noframe возвращает простой индекс ссылок на страницы. Это всё равно не редакционный HTML: PDF ориентирован на фиксированную геометрию, поэтому порядок чтения и таблицы требуют ручной проверки. Для миграции контента практичный процесс выглядит так: создать HTML, извлечь текст и изображения, затем заново собрать логическую структуру в CMS, сохраняя исходный PDF как контрольный источник.
pdftops нужен там, где следующий этап действительно принимает PostScript. Версия 4.06 поддерживает уровни PostScript 1, 2 и 3, а также EPS для одного листа. При современном PDF-процессе без требования PS лишнее преобразование только добавляет точку несовместимости. Поэтому перед конвертацией фиксируют требования принимающей системы и проверяют тестовый документ с прозрачностями, встроенными шрифтами и цветной графикой.
Типичные сбои Xpdf Tools хорошо диагностируются по коду завершения и stderr. В актуальной документации семейства используются коды 0 — успех, 1 — ошибка открытия PDF, 2 — ошибка выходного файла, 3 — ограничение разрешений PDF, 98 — нехватка памяти и 99 — прочая ошибка. Код 0 означает, что процесс завершился штатно, но не гарантирует полезность результата: скан без текстового слоя корректно даёт пустой TXT.
При коде 1 проверяют путь, кавычки, доступ к файлу и реальный формат. Расширение .pdf не доказывает, что внутри PDF: загрузчик мог сохранить HTML-страницу ошибки. При коде 2 проверяют существование каталога, права записи, свободное место и блокировку файла. Код 3 требует законных данных доступа к защищённому документу. Код 98 обрабатывают уменьшением диапазона, DPI или параллельности. Код 99 разбирают по stderr и повторяют на контрольной версии с явным xpdfrc.
Отдельная группа проблем связана с текстом. Перемешанные колонки исправляют выбором подходящего режима pdftotext и последующей проверкой конкретных полей. Неверные буквы указывают на кодировку просмотра или плохое сопоставление глифов внутри PDF. Пропавшие слова часто оказываются картинкой или контурами; рендер показывает их визуально, но текстом они становятся только после OCR. Лишние пробелы в -layout нередко передают геометрию колонок, поэтому автоматическое удаление пробелов до анализа структуры ухудшает результат.
Для внешних PDF безопасность важнее удобства. Парсер обрабатывает сложный контейнер, поэтому входящие файлы запускают с минимальными правами, ограничением времени, памяти и числа создаваемых файлов. Извлечённые вложения не открывают автоматически. На 11 сентября 2026 запись CVE-2026-4407 помечает Xpdf 4.06 как затронутый ошибкой проверки ICCBased color spaces; оценка CNA по CVSS 4.0 — 2.1 Low. Это усиливает требование к изоляции недоверенных документов даже при использовании текущей ветки.
Среди консольных альтернатив важно различать задачи. Poppler utilities предлагает родственные команды и особенно распространён в Linux, но совпадение имён не означает полного совпадения параметров и вывода. qpdf сильнее ориентирован на структурные преобразования, шифрование, разделение и объединение. MuPDF полезен для быстрого рендера и собственного набора консольных операций, а Ghostscript логичен в PostScript/PDF-печатных цепочках.
Для ручной работы выбор другой: PDF-XChange Editor предоставляет графическое редактирование и визуальные инструменты, которых у Xpdf Tools нет. Сравнение не сводится к лучшей программе вообще: Xpdf выигрывает в воспроизводимых командах и пакетных заданиях, графический редактор — в интерактивной правке, qpdf — в структурных операциях, Ghostscript — в печатной обработке.
Практическая рекомендация для бизнеса проста: Xpdf Tools стоит использовать как узкий слой обработки PDF, а не как универсальный комбайн. Для цифровых документов связка pdfinfo → pdftotext → проверка текста закрывает индексацию и извлечение данных. Для графики применяют pdfimages или pdftopng в зависимости от цели. Для сканов добавляют отдельный OCR. Для массового процесса фиксируют версию 4.06, полный путь, xpdfrc, код завершения, ограничения ресурсов и контрольный набор документов. Такой конвейер остаётся прозрачным: на каждом шаге понятно, какой слой PDF обработан и чем проверен результат.