CUPS-PDF — это системный виртуальный PDF-принтер для Unix/Linux-сред, работающих через Common UNIX Printing System. Программа добавляет в печатную подсистему отдельный принтер, который принимает задание печати и сохраняет результат в PDF-файл. Для пользователя это выглядит как обычная печать: документ открывается в приложении, выбирается принтер CUPS-PDF, после чего готовый PDF появляется в заданной папке.
Главная особенность CUPS-PDF в том, что это не отдельное графическое приложение и не PDF-редактор. Программа работает как backend для CUPS и встраивается в стандартный печатный механизм системы. Благодаря этому PDF можно создать из любого приложения, которое умеет печатать: текстового редактора, браузера, почтового клиента, просмотрщика изображений, CAD-просмотрщика, старой офисной программы или терминальной утилиты. CUPS-PDF предоставляет PDF Writer backend для CUPS и подходит как для безбумажной печати, так и для тестирования CUPS без физического принтера.
Скачать CUPS-PDF
- Редактирование PDF
- Русский интерфейс
- Просто новичкам
- Сложнее новичкам
- Может требовать настройки
- Интерфейс не для всех
В типичном сценарии CUPS-PDF используется так: пользователь нажимает File → Print, выбирает виртуальный принтер PDF, CUPS-PDF или Generic CUPS-PDF Printer, подтверждает печать, а программа автоматически формирует PDF-файл. Имя файла берется из заголовка задания печати, из имени документа или из параметров, переданных через CUPS. Папка вывода задается в конфигурации CUPS-PDF: это может быть пользовательский каталог ~/PDF, серверный каталог /var/spool/cups-pdf/${USER} или другое разрешенное место.
Программа особенно полезна там, где нужен именно системный PDF-принтер, а не кнопка экспорта в отдельном приложении. Встроенный экспорт в PDF в LibreOffice хорошо подходит для офисных документов, а функция Save to PDF в браузере удобна для веб-страниц. CUPS-PDF решает другую задачу: он добавляет единый виртуальный принтер в CUPS, через который PDF создается одинаковым способом из разных программ и с разными источниками печати.
Что делает CUPS-PDF
CUPS-PDF принимает печатное задание, обрабатывает его через печатный pipeline CUPS и создает PDF-файл. Практически это означает, что программа превращает обычную команду печати в сохранение документа на диск. Для приложения-источника нет принципиальной разницы между печатью на физический принтер и печатью в CUPS-PDF: оно отправляет задание в CUPS, а CUPS-PDF вместо вывода на устройство формирует файл.
CUPS-PDF выполняет несколько конкретных задач:
-
добавляет виртуальный принтер в систему печати CUPS;
-
создает PDF из приложений, где есть функция печати;
-
сохраняет результат в настраиваемый каталог;
-
может раскладывать PDF по папкам пользователей;
-
поддерживает добавление job id к имени файла;
-
позволяет задавать версию PDF через параметры;
-
использует Ghostscript для PDF-преобразования;
-
поддерживает post-processing script после создания PDF;
-
позволяет создавать несколько экземпляров backend с разными конфигурациями;
-
подходит для сетевых сценариев, когда PDF-принтер находится на центральном сервере.
CUPS-PDF хорошо раскрывается в рабочей среде, где печать уже централизована через CUPS. Например, на Linux-сервере можно создать виртуальную очередь CUPS-PDF (Virtual PDF Printer), открыть ее пользователям в сети и получать PDF-документы в заранее настроенную директорию. Такая схема удобна для безбумажного документооборота, автоматического архивирования, тестирования печати и сохранения результатов из приложений, которые не имеют нормального собственного экспорта в PDF.
Чем CUPS-PDF отличается от обычного экспорта в PDF
Экспорт в PDF работает внутри конкретной программы. Например, LibreOffice Writer знает структуру документа, стили, закладки, гиперссылки и поля, поэтому может создать PDF напрямую из внутреннего формата. Браузер знает DOM-структуру страницы и может сформировать PDF через собственный print renderer. CUPS-PDF работает ниже уровнем: он не анализирует документ как редактор, а принимает уже подготовленное печатное представление.
Это дает программе сильные и слабые стороны. Сильная сторона — универсальность. Если приложение умеет печатать, оно может отправить документ в CUPS-PDF. Слабая сторона — CUPS-PDF не управляет семантикой документа так глубоко, как родной экспорт. Он не добавляет интерактивное оглавление, не редактирует закладки, не восстанавливает структуру исходного файла и не предназначен для ручной правки PDF.
Поэтому CUPS-PDF нужно рассматривать как системный PDF-принтер Linux, а не как замену PDF-редактору. Его задача — надежно принимать задания печати и превращать их в PDF-файлы через CUPS.
Где CUPS-PDF особенно полезен
CUPS-PDF полезен в рабочих процессах, где PDF должен создаваться одинаково из разных приложений. Его часто выбирают не потому, что в системе нет других способов сохранить PDF, а потому, что нужен единый печатный маршрут.
Рабочая станция Linux
На обычном рабочем месте CUPS-PDF добавляет принтер, который появляется рядом с физическими устройствами. Пользователь может открыть документ, нажать Print, выбрать PDF или CUPS-PDF и получить файл. Это удобно для старых программ, простых текстовых редакторов, просмотрщиков, бухгалтерских приложений, инженерных утилит и других инструментов, где собственного экспорта в PDF нет или он реализован неудобно.
Сервер печати
На сервере CUPS-PDF используется как виртуальная очередь. Пользователи отправляют задания на общий PDF-принтер, а сервер сохраняет файлы в каталогах пользователей или в общей папке. CUPS-PDF изначально ориентирован на создание PDF-файлов в неоднородной сети через PDF-принтер на центральном файловом сервере.
Тестирование CUPS
CUPS-PDF позволяет проверить, работает ли CUPS, принимает ли задания, применяются ли параметры печати и создается ли выходной результат. Для администратора это удобнее, чем проверять печатный pipeline на физическом принтере: задание можно отправить, открыть PDF и увидеть результат без бумаги, тонера и сетевого принтера.
Автоматизация документооборота
CUPS-PDF поддерживает параметр PostProcessing, через который после создания PDF можно вызвать внешний скрипт. Такой сценарий подходит для автоматического перемещения файла, переименования, копирования в сетевую папку, передачи в OCR-обработку, отправки дальше в архив или интеграции с внутренним workflow.
Принцип работы
CUPS-PDF состоит из backend-компонента, PPD-описания и конфигурационного файла. В системе печати CUPS он выглядит как принтер с URI cups-pdf:/. Когда пользователь отправляет документ на этот принтер, CUPS передает задание backend-у CUPS-PDF. Backend определяет пользователя, имя задания, каталог вывода, параметры файла и вызывает Ghostscript для формирования PDF.
В работе участвуют несколько уровней:
| Уровень | Что делает |
|---|---|
| Приложение | Отправляет документ на печать через стандартный диалог |
| CUPS | Принимает задание, применяет очередь, фильтры и параметры |
| CUPS-PDF backend | Получает задание и готовит путь для PDF-файла |
| Ghostscript | Выполняет преобразование в PDF через pdfwrite |
cups-pdf.conf |
Управляет каталогом вывода, именами файлов, логами, PDF-версией и постобработкой |
| PPD-настройки | Позволяют менять часть параметров через CUPS |
lpoptions |
Позволяет задавать отдельные параметры на уровне пользователя или команды |
Важный момент: CUPS-PDF не требует, чтобы каждое приложение умело экспортировать PDF. Программа получает уже сформированный поток печати, поэтому итог зависит от того, как приложение подготовило документ для печати и какие параметры применил CUPS.
Добавление принтера в CUPS
CUPS-PDF управляется через обычные инструменты CUPS. Самый наглядный способ добавить виртуальный принтер — веб-интерфейс CUPS по адресу localhost:631. В нем используются стандартные разделы Administration, Printers, Jobs, Classes и страницы добавления принтера.
На странице Administration нужно выбрать добавление принтера. После этого CUPS показывает доступные локальные устройства. Для CUPS-PDF используется вариант Virtual PDF Printer (CUPS-PDF). В интерфейсе рядом с устройством отображается кнопка Add This Printer.

Ссылка на изображение:
Типичная последовательность действий в веб-интерфейсе CUPS выглядит так:
-
Открыть
. -
Перейти в раздел Administration.
-
Нажать Add Printer.
-
В списке Available Printers выбрать Virtual PDF Printer (CUPS-PDF).
-
Нажать Add This Printer.
-
Указать имя очереди, например
CUPS-PDFилиPDF. -
В поле Description можно оставить
Virtual PDF Printer. -
В поле Location можно указать
Local Printerили оставить пустым. -
На этапе выбора производителя выбрать Generic.
-
В списке моделей выбрать Generic CUPS-PDF Printer (w/ options).
-
Нажать Add Printer.
-
При необходимости открыть Set Printer Options и проверить параметры по умолчанию.
В интерфейсе CUPS модель Generic CUPS-PDF Printer (w/ options) важна потому, что она использует PPD-файл с доступными настройками. Через него можно управлять частью параметров прямо из CUPS: размером страницы, разрешением, PDF-версией, обрезкой длинных имен, добавлением job id, источником заголовка и уровнем логирования. CUPS-PDF использует PPD-файл CUPS-PDF_opt.ppd для настройки таких опций через веб-интерфейс CUPS.
После добавления очереди CUPS показывает сообщение, что принтер CUPS-PDF успешно добавлен. На этой же странице доступна кнопка Set Printer Options, через которую задаются параметры по умолчанию для очереди.

Ссылка на изображение:
Интерфейс программы
У CUPS-PDF нет отдельного окна с панелью инструментов, вкладками редактирования и кнопками вроде Open PDF или Save As. Интерфейс программы распределен между несколькими системными местами:
-
веб-интерфейсом CUPS;
-
системным окном Printers или Printer Properties;
-
диалогом печати конкретного приложения;
-
конфигурационным файлом
/etc/cups/cups-pdf.conf; -
командными утилитами CUPS.
В графической оболочке Linux принтер CUPS-PDF обычно виден как обычная печатная очередь. В свойствах принтера отображаются поля Description, Location, Device URI, Make and Model, Printer State. Для CUPS-PDF ключевой признак — Device URI: cups-pdf:/ и модель Generic CUPS-PDF Printer.

Ссылка на изображение:
В окне свойств также доступны кнопки обслуживания:
-
Print Test Page — печать тестовой страницы;
-
Print Self-Test Page — самотестирование, если функция поддерживается интерфейсом;
-
Clean Print Heads — стандартная кнопка принтерного интерфейса, которая для виртуального PDF-принтера практического смысла не имеет;
-
Apply — применение изменений;
-
Cancel — отмена;
-
OK — закрытие окна с сохранением изменений.
Для CUPS-PDF наиболее полезна кнопка Print Test Page. Она отправляет в очередь тестовое задание, после чего в папке вывода появляется PDF-файл с тестовой страницей. Так можно быстро проверить, что backend работает, Ghostscript вызывается корректно, права доступа настроены правильно, а файл сохраняется в ожидаемое место.
Печать документа в PDF
CUPS-PDF используется через обычную печать. В большинстве приложений порядок действий одинаковый:
-
Открыть документ.
-
Выбрать File → Print или нажать
Ctrl+P. -
В списке принтеров выбрать PDF, CUPS-PDF, Generic CUPS-PDF Printer или название очереди, заданное при добавлении.
-
Проверить размер бумаги, ориентацию, диапазон страниц и количество копий.
-
Нажать Print.
-
Открыть папку вывода и проверить созданный PDF.
В LibreOffice Writer CUPS-PDF работает как обычный принтер. Пользователь открывает File → Print, выбирает нужную очередь в поле принтера, при необходимости задает диапазон страниц, ориентацию и параметры макета. После нажатия Print документ уходит в CUPS, а CUPS-PDF сохраняет результат в PDF.
В браузерах CUPS-PDF можно использовать через системный диалог печати. Это полезно, когда нужен не встроенный Save to PDF, а именно общий CUPS-принтер с заданной папкой вывода и серверной обработкой. Например, если в организации все PDF должны сохраняться в одну сетевую структуру или проходить через скрипт постобработки, CUPS-PDF оказывается удобнее встроенного сохранения браузера.
Из терминала печать выполняется через обычные команды CUPS. CUPS поддерживает команды lp и lpr, а также печать файлов PDF, PostScript, изображений и текстовых файлов напрямую.
Пример печати файла на очередь CUPS-PDF:
lp -d CUPS-PDF document.ps
Пример с указанием имени задания:
lp -d CUPS-PDF -t "invoice-march" document.ps
Пример с параметрами страницы:
lp -d CUPS-PDF -o media=A4 document.ps
Для просмотра очередей используется:
lpstat -p
Для просмотра заданий:
lpstat -o
Если CUPS-PDF настроен как принтер по умолчанию, можно печатать без указания -d:
lp document.ps
Где CUPS-PDF сохраняет файлы
Место сохранения PDF зависит от конфигурации. В разных дистрибутивах значения по умолчанию могут отличаться, но логика остается одинаковой: CUPS-PDF получает имя пользователя, формирует каталог вывода и сохраняет туда PDF-файл.
На настольных Linux-системах часто используется пользовательская папка ~/PDF. В серверной схеме часто встречается каталог вида:
/var/spool/cups-pdf/${USER}
Здесь ${USER} заменяется именем пользователя, от имени которого пришло задание печати. Если пользователь не определен, CUPS-PDF может использовать анонимный каталог. В конфигурации предусмотрены специальные подстановки ${HOME} и ${USER}, а значение Out задает каталог вывода PDF.
Примеры настройки Out:
Out ${HOME}/PDF
Out /var/spool/cups-pdf/${USER}
Out /srv/pdf-output/${USER}
Для рабочей станции удобен вариант Out ${HOME}/PDF: каждый пользователь получает свои PDF-файлы в домашнем каталоге. Для сервера удобнее централизованный путь, например /var/spool/cups-pdf/${USER} или /srv/pdf-output/${USER}, потому что администратор может управлять правами, резервным копированием и доступом к файлам.
Если CUPS-PDF не может определить пользователя, используется режим anonymous output. За него отвечают параметры AnonUser и AnonDirName. Типовой анонимный каталог выглядит так:
/var/spool/cups-pdf/ANONYMOUS
Такой режим особенно важен для сетевых клиентов, которые отправляют задания с именами пользователей, не совпадающими с локальными учетными записями сервера.
Конфигурационный файл cups-pdf.conf
Главный файл настройки CUPS-PDF — /etc/cups/cups-pdf.conf. Он управляет путями, именами файлов, пользователями, безопасностью, логированием, вызовом Ghostscript, PDF-версией и постобработкой. Важная особенность CUPS-PDF: изменения в cups-pdf.conf применяются без перезапуска служб, если параметр читается backend-ом при новом задании. В конфигурационном файле также указано, что приоритет настроек идет в таком порядке: lpoptions, затем PPD settings, затем сам config file, затем default values.
Out
Out задает каталог, куда сохраняются готовые PDF-файлы. Это один из самых важных параметров.
Out ${HOME}/PDF
или:
Out /var/spool/cups-pdf/${USER}
Если в пути используется ${HOME}, CUPS-PDF подставляет домашнюю папку пользователя. Если используется ${USER}, подставляется имя пользователя. Для сервера это удобно: одна настройка создает отдельные каталоги для разных людей.
Практический выбор:
| Сценарий | Рекомендуемый подход |
|---|---|
| Один пользователь на рабочей станции | Out ${HOME}/PDF |
| Несколько пользователей на одном Linux-компьютере | Out ${HOME}/PDF или /var/spool/cups-pdf/${USER} |
| Сервер печати | /var/spool/cups-pdf/${USER} или /srv/pdf-output/${USER} |
| Общая папка для всех PDF | отдельный каталог с аккуратно настроенными правами |
| Интеграция с workflow | каталог, который отслеживает внешний скрипт или сервис |
AnonDirName
AnonDirName задает абсолютный путь для PDF-файлов, созданных в анонимном режиме. Он используется, когда CUPS-PDF не может сопоставить пользователя задания с локальным пользователем системы или когда задание приходит из сетевой среды с нестандартным именем пользователя.
AnonDirName /var/spool/cups-pdf/ANONYMOUS
Этот параметр особенно важен при работе с Windows-клиентами, Samba, доменными именами и сетевыми принтерами. Если PDF внезапно появляется не в пользовательской папке, а в ANONYMOUS, значит CUPS-PDF не распознал владельца задания так, как ожидалось.
Spool
Spool задает рабочий каталог CUPS-PDF для временной обработки заданий.
Spool /var/spool/cups-pdf/SPOOL
Эта папка не является итоговым местом хранения PDF. Она нужна backend-у для промежуточной работы. Менять Spool стоит только тогда, когда есть понятная причина: особая файловая структура сервера, ограничения места, отдельный быстрый диск или требования безопасности.
Truncate
Truncate ограничивает длину имени файла. Это полезно, когда приложения передают слишком длинные заголовки документов. Параметр не учитывает полный путь, а относится к имени файла без расширения .pdf и без job id.
Truncate 64
Если значение слишком маленькое, имена будут слишком короткими и менее информативными. Если слишком большое, могут появиться неудобные длинные имена, особенно при работе с сетевыми папками или старыми клиентами.
Cut
Cut управляет удалением расширения из исходного имени перед добавлением .pdf.
Cut 3
Например, если приложение передало имя report.doc, CUPS-PDF может убрать .doc и создать report.pdf, а не report.doc.pdf. В смешанных средах это удобно, потому что пользователи ожидают нормальное PDF-имя. В чисто Unix-среде иногда лучше отключить обрезку, чтобы имя задания сохранялось максимально буквально.
Label
Label добавляет job id к имени файла, чтобы избежать перезаписи документов с одинаковыми именами.
Варианты:
| Значение | Поведение |
|---|---|
0 |
job id добавляется только к документам без названия |
1 |
job id добавляется в начало имени: job_#-filename.pdf |
2 |
job id добавляется в конец имени: filename-job_#.pdf |
Параметр полезен на сервере, где разные пользователи могут печатать документы с одинаковым названием, например document.pdf, print.pdf, invoice.pdf или Untitled.pdf.
TitlePref
TitlePref определяет, откуда брать название для выходного файла: из %Title внутри PostScript-файла или из заголовка, переданного через команду печати.
TitlePref 0
При значении 0 предпочтение отдается заголовку из PS-файла. При значении 1 — названию задания, переданному командой или приложением. Этот параметр влияет не на содержимое PDF, а на имя выходного файла.
AnonUser
AnonUser задает пользователя для анонимного создания PDF. Обычно используется nobody.
AnonUser nobody
Если значение оставить пустым, анонимный режим отключается. Это повышает предсказуемость безопасности, но может привести к тому, что задания от неизвестных пользователей не будут сохраняться.
LowerCase
LowerCase помогает сопоставлять имена пользователей в средах, где клиент передает имя в верхнем регистре. Это типично для некоторых Windows-сценариев.
LowerCase 1
При включении CUPS-PDF проверяет не только имя как передано, но и его вариант в нижнем регистре. Это удобно, если в системе локальный пользователь называется ivan, а клиент передает IVAN.
UserPrefix, DirPrefix и RemovePrefix
Эти параметры предназначены для доменных и смешанных сетей.
UserPrefix добавляет префикс к имени пользователя. DirPrefix определяет, включать ли этот префикс в имя выходной директории. RemovePrefix удаляет ненужную часть имени, если клиент передает пользователя с доменным префиксом.
Пример ситуации: Windows-клиент отправляет пользователя как DOMAIN\ivan, а на сервере нужен просто ivan. Тогда администратор настраивает удаление доменной части, чтобы PDF попадал в правильный каталог.
UserUMask и AnonUMask
UserUMask и AnonUMask управляют правами создаваемых файлов. Это один из наиболее важных блоков с точки зрения безопасности.
UserUMask 0077
0077 означает, что созданный PDF будет доступен только владельцу, а группа и остальные пользователи не получат прав. Для конфиденциальных документов это нормальное поведение.
Для общей папки иногда нужны более открытые права, но менять UserUMask нужно аккуратно. PDF может содержать счета, договоры, кадровые документы, отчеты и персональные данные. Ошибка в umask способна сделать файлы доступными другим пользователям системы.
Grp
Grp задает группу, от имени которой CUPS-PDF работает при создании каталогов и логов.
Grp lp
Обычно менять этот параметр не нужно. Он важен в системах, где права на печатные каталоги, логи и серверные директории управляются через группы.
AllowUnsafeOptions
AllowUnsafeOptions разрешает пользователям переопределять расширенный набор параметров через lpoptions.
AllowUnsafeOptions 0
Значение 0 безопаснее. Значение 1 открывает больше возможностей, но создает риски, потому что пользователи могут менять параметры, влияющие на безопасность. В обычной рабочей станции и на сервере общего доступа этот параметр лучше держать выключенным.
Log
Log задает каталог логов CUPS-PDF.
Log /var/log/cups
Если значение пустое, логирование отключается. Для диагностики лучше оставить логирование включенным, особенно на этапе настройки. После стабилизации системы можно уменьшить детализацию через LogType.
LogType
LogType управляет уровнем логирования.
| Значение | Режим |
|---|---|
1 |
ошибки |
2 |
статусная активность |
4 |
debug |
3 |
ошибки + статус |
7 |
полное логирование |
Для обычной работы достаточно 3. Для поиска сложной ошибки временно используют 7, но такой режим создает много записей. На сервере с большим объемом печати debug-логирование быстро засоряет журнал.
GhostScript
GhostScript задает путь к бинарному файлу Ghostscript.
GhostScript /usr/bin/gs
CUPS-PDF использует Ghostscript для создания PDF через устройство pdfwrite. Если путь указан неверно или Ghostscript недоступен, PDF не будет создан.
GSTmp
GSTmp задает временный каталог для Ghostscript.
GSTmp /var/tmp
Этот каталог должен быть доступен для записи. Если временный каталог недоступен, CUPS-PDF может принять задание, но не сформировать итоговый PDF.
GSCall
GSCall задает строку вызова Ghostscript. Это один из самых технически важных параметров.
Типовая логика вызова включает:
-
quiet mode;
-
compatibility level;
-
режим без пауз;
-
пакетное завершение;
-
безопасный режим;
-
устройство
pdfwrite; -
путь выходного файла;
-
автоматический поворот страниц;
-
настройки фильтрации изображений;
-
PDFSETTINGS.
В обычном использовании GSCall лучше не менять. Этот параметр влияет на качество PDF, совместимость, обработку изображений, размер файла и стабильность. Его меняют только при конкретной задаче: например, когда нужно изменить профиль качества, совместимость PDF или поведение Ghostscript.
PDFVer
PDFVer задает версию создаваемого PDF.
PDFVer 1.4
Параметр можно задавать через конфигурацию, PPD или lpoptions, если эта возможность разрешена. В практическом смысле он влияет на совместимость с просмотрщиками, архивами или внутренними системами.
PostProcessing
PostProcessing задает скрипт, который вызывается после создания PDF.
PostProcessing /usr/local/bin/cups-pdf-postprocess
Скрипту передаются данные о созданном файле и пользователе. Это сильная функция CUPS-PDF, потому что она превращает виртуальный PDF-принтер в элемент автоматизации. Через post-processing можно реализовать:
-
переименование файла по шаблону;
-
перенос PDF в сетевую папку;
-
копирование в архив;
-
запуск OCR;
-
отправку уведомления;
-
загрузку в систему документооборота;
-
распределение по папкам в зависимости от пользователя;
-
удаление временных файлов;
-
проверку размера и имени.
Скрипт выполняется с пользовательскими привилегиями, поэтому его нужно писать осторожно: проверять входные данные, не использовать опасные подстановки без экранирования и не открывать доступ к системным каталогам.
DecodeHexStrings
DecodeHexStrings пытается декодировать hex-строки в заголовке. Это нужно для интернационализированных названий, особенно когда задания приходят из клиентов, передающих заголовки не в ожидаемой кодировке.
DecodeHexStrings 0
Параметр экспериментальный и применяется только в специфичных средах.
FixNewlines
FixNewlines пытается исправлять необычные разделители строк, например form feed. Это полезно для файлов, созданных не в Linux-среде.
FixNewlines 0
Включать его стоит только при наличии конкретной проблемы с входными заданиями.
Приоритет настроек
CUPS-PDF использует несколько уровней параметров. Это важно, потому что администратор может изменить cups-pdf.conf, но получить прежнее поведение из-за более высокого приоритета PPD или пользовательских lpoptions.
Приоритет такой:
| Приоритет | Источник настроек | Что это значит |
|---|---|---|
| 1 | lpoptions |
Пользовательские или командные параметры имеют наивысший приоритет |
| 2 | PPD settings | Настройки очереди из CUPS перекрывают конфиг |
| 3 | cups-pdf.conf |
Основной конфигурационный файл |
| 4 | Default values | Встроенные значения по умолчанию |
Практический пример: если в cups-pdf.conf задан PDFVer 1.4, но через CUPS в Set Default Options установлено другое значение PDF version, будет применена настройка из PPD. Если пользователь печатает через lp с параметрами, часть настроек может быть переопределена еще выше.
Поэтому диагностику нужно начинать не только с cups-pdf.conf. Нужно проверить:
lpoptions -p CUPS-PDF
и параметры очереди в веб-интерфейсе CUPS через:
Printers → CUPS-PDF → Administration → Set Default Options
Настройки через CUPS Web Interface
Через веб-интерфейс CUPS удобнее менять параметры очереди, которые доступны через PPD. Для этого нужно открыть страницу принтера:
Далее используется меню Administration и пункт Set Default Options. В зависимости от PPD и окружения там могут быть доступны параметры:
-
размер бумаги;
-
разрешение;
-
PDF version;
-
truncate output file names;
-
labelling with jobid;
-
title source preference;
-
log level.
Эти настройки применяются к очереди и могут перекрывать значения из cups-pdf.conf. Поэтому, если CUPS-PDF ведет себя не так, как ожидается, нужно смотреть и файл конфигурации, и параметры очереди.
Для проверки состояния очереди используется страница Printers. Там отображаются:
-
имя принтера;
-
описание;
-
состояние;
-
список активных заданий;
-
команды обслуживания;
-
ссылка на задания;
-
возможность напечатать тестовую страницу.
Кнопка Print Test Page полезна после любой настройки. Если тестовая страница появилась в каталоге вывода, backend работает. Если задание попало в очередь, но PDF не создан, нужно проверять права, путь вывода, Ghostscript и логи.
Проверка работы CUPS-PDF
Проверять CUPS-PDF лучше по шагам. Сначала нужно убедиться, что очередь существует:
lpstat -p
Если очередь называется CUPS-PDF, в списке должен быть принтер с таким именем. Далее можно проверить, принимает ли он задания:
lpstat -o
Затем стоит отправить тестовую печать из графического интерфейса или через CUPS. В графическом окне свойств для этого есть кнопка Print Test Page. После отправки задания нужно проверить папку вывода.
Если используется Out ${HOME}/PDF, файл ищется здесь:
/home/имя_пользователя/PDF
Если используется серверная схема:
/var/spool/cups-pdf/имя_пользователя
Если пользователь не определился:
/var/spool/cups-pdf/ANONYMOUS
Для быстрой проверки можно выполнить:
find ~/PDF -type f -name "*.pdf" -maxdepth 1
или:
find /var/spool/cups-pdf -type f -name "*.pdf"
Если файл создан, его нужно открыть в любом PDF-просмотрщике. На тестовой странице обычно видны название принтера, описание, драйвер, размер страницы и графические элементы проверки цвета или оттенков. Для CUPS-PDF это подтверждает, что очередь не просто принимает задания, а действительно формирует PDF.
Создание PDF из LibreOffice
LibreOffice имеет собственный экспорт в PDF, но CUPS-PDF полезен тогда, когда нужно использовать именно печатный pipeline. Например, если документ должен пройти через те же настройки страницы, что и печать, или если все PDF в организации должны сохраняться в одну серверную папку.
Порядок работы:
-
Открыть документ в LibreOffice Writer, Calc или Impress.
-
Перейти в File → Print.
-
В списке принтеров выбрать CUPS-PDF или PDF.
-
Проверить вкладки с параметрами печати.
-
Указать нужные страницы.
-
Проверить ориентацию страницы.
-
Нажать Print.
-
Открыть каталог вывода CUPS-PDF.
В Writer важно проверить ориентацию страницы и размер бумаги. Если документ создан в A4, а очередь по умолчанию использует Letter, разметка может отличаться. Это не ошибка CUPS-PDF как PDF-принтера: он печатает то, что получил от приложения и CUPS. Поэтому перед массовой печатью офисных документов стоит задать правильный media size в очереди CUPS.
Создание PDF из браузера
В браузерах есть встроенное сохранение в PDF, но CUPS-PDF дает другой уровень контроля. Если пользователь выбирает системный принтер CUPS-PDF, задание идет через CUPS и попадает в общий каталог вывода. Это удобно, если PDF нужно сохранять автоматически, а не каждый раз выбирать имя и папку.
Порядок действий:
-
Открыть страницу.
-
Нажать
Ctrl+P. -
Выбрать системный диалог печати, если браузер сначала показывает собственный интерфейс.
-
В списке принтеров выбрать CUPS-PDF.
-
Проверить масштаб, поля, ориентацию и диапазон страниц.
-
Нажать Print.
-
Проверить готовый PDF в папке вывода.
Веб-страницы часто имеют сложную верстку, поэтому итоговый PDF зависит от печатных CSS-стилей сайта. CUPS-PDF не исправляет верстку страницы, а сохраняет печатный результат, сформированный браузером.
Создание PDF из терминала
CUPS-PDF хорошо подходит для консольных сценариев. Если файл уже в формате, который CUPS умеет обрабатывать, его можно отправить прямо через lp.
Пример:
lp -d CUPS-PDF report.pdf
Пример с PostScript:
lp -d CUPS-PDF report.ps
Пример с текстовым файлом:
lp -d CUPS-PDF notes.txt
Пример с именем задания:
lp -d CUPS-PDF -t "monthly-report" notes.txt
Имя, переданное через -t, может участвовать в формировании имени выходного PDF, если параметры CUPS-PDF настроены на использование title from command line.
Для автоматизации удобно сочетать lp с post-processing. Например, приложение генерирует PostScript, отправляет его на CUPS-PDF, а после создания PDF запускается скрипт, который переносит файл в архивную папку.
Практические задачи в CUPS-PDF
Создать PDF из программы без экспорта
Это базовая задача CUPS-PDF. Нужно открыть документ, выбрать печать и отправить его на PDF-принтер. Такой способ работает даже с программами, где нет пункта Export as PDF.
Сохранять PDF в домашнюю папку
Для персонального компьютера удобно использовать:
Out ${HOME}/PDF
Тогда каждый пользователь получает свою папку PDF в домашнем каталоге. Это простой и понятный вариант: после печати файл ищется рядом с документами пользователя.
Сохранять PDF на сервере
Для сервера удобен путь:
Out /var/spool/cups-pdf/${USER}
или:
Out /srv/pdf-output/${USER}
Так администратор может настроить централизованное хранение. При этом нужно заранее продумать права доступа: пользователи не должны видеть чужие PDF, если документы конфиденциальны.
Не перезаписывать файлы с одинаковыми именами
Для этого используется Label.
Label 2
При таком варианте job id добавляется в конец имени файла. Это удобно, когда пользователи часто печатают документы с названием Untitled, document, print, invoice или report.
Ограничить длину имен файлов
Для этого используется:
Truncate 64
Если приложения передают длинные заголовки, CUPS-PDF обрежет имя до заданного лимита. Это полезно для сетевых каталогов и систем, где длинные имена неудобны.
Убрать исходное расширение
Если приложение передает имя contract.docx, CUPS-PDF может создать contract.pdf, а не contract.docx.pdf. За это отвечает Cut.
Cut 3
Для расширений длиной до трех символов это работает ожидаемо: .doc, .xls, .odt могут быть обрезаны перед добавлением .pdf.
Задать PDF version
Параметр:
PDFVer 1.4
используется, когда нужно контролировать совместимость PDF с просмотрщиками, архивами или внутренними системами.
Запустить скрипт после создания PDF
Для автоматизации используется:
PostProcessing /usr/local/bin/pdf-after-print
Сценарий может переносить файл, добавлять дату, менять права, отправлять уведомление или передавать PDF в систему обработки документов.
Создать несколько PDF-принтеров с разными настройками
CUPS-PDF поддерживает несколько экземпляров backend с разными конфигурациями. Для этого создаются разные конфигурационные файлы с уникальным идентификатором, после чего в CUPS можно выбрать соответствующий URI при создании новой очереди. Эта возможность полезна, когда нужны разные очереди:
-
PDF-Private— сохраняет в личную папку; -
PDF-Archive— сохраняет в архив; -
PDF-OCR— запускает OCR после печати; -
PDF-Shared— сохраняет в общую папку; -
PDF-Test— используется для проверки печатных заданий.
Работа в сети
CUPS-PDF хорошо подходит для сетевой печати. На центральном сервере создается виртуальный PDF-принтер, а клиенты отправляют задания как на обычный принтер. В смешанной инфраструктуре это особенно удобно: Linux-клиенты, Unix-клиенты, Windows-клиенты и другие системы могут использовать один серверный PDF-маршрут.
Для Unix/Linux-клиентов можно создавать очередь с PostScript-драйвером. Для клиентов через Samba или netatalk могут использоваться raw queues, а на стороне клиента выбирается PostScript-драйвер. В сетевых сценариях CUPS-PDF может создавать PDF на сервере и раскладывать их по папкам пользователей.
Особое внимание нужно уделить именам пользователей. Если клиент передает пользователя как DOMAIN\User, а на сервере локальная учетная запись называется user, PDF может попасть не в ту папку или уйти в anonymous directory. Для таких случаев в cups-pdf.conf есть LowerCase, UserPrefix, DirPrefix и RemovePrefix.
Сетевые сценарии требуют аккуратной настройки прав. Если PDF сохраняется в /srv/pdf-output, нужно определить:
-
кто владеет каталогом;
-
какая группа имеет доступ;
-
может ли пользователь читать только свои файлы;
-
кто может удалять PDF;
-
как работает резервное копирование;
-
что происходит с файлами anonymous users;
-
как очищаются старые документы.
Безопасность
CUPS-PDF часто работает с документами, которые нельзя случайно открыть другим пользователям. Поэтому безопасность в этой программе связана прежде всего с правами на файлы, каталогами вывода, post-processing и ограничениями системы.
Права backend
CUPS-PDF требует повышенных привилегий, потому что backend должен менять владельцев файлов и создавать каталоги для разных пользователей. Backend должен принадлежать root и иметь права 0700, чтобы CUPS-PDF запускался с нужными полномочиями.
Это не значит, что пользователям нужно давать root-доступ. Это означает, что системная часть CUPS-PDF должна быть установлена и настроена корректно, а пользователь взаимодействует с ней через очередь печати.
Umask
UserUMask 0077 — безопасное значение для персональных PDF. Оно ограничивает доступ к файлу владельцем. Для общих папок можно использовать другие значения, но только после оценки рисков.
Пример безопасного персонального режима:
UserUMask 0077
Пример более открытого режима для групповой папки требует дополнительной настройки владельца, группы и прав каталога. Нельзя просто открыть umask, не проверив, кто сможет читать созданные PDF.
AppArmor и SELinux
На некоторых системах CUPS ограничивается профилями безопасности. Если изменить каталог вывода CUPS-PDF на нестандартный, PDF может не создаваться, даже если путь в cups-pdf.conf выглядит правильно. AppArmor может блокировать вывод PDF в нестандартные директории и требует изменения соответствующего профиля при смене каталога.
Практический симптом: задание уходит в очередь, ошибок в приложении нет, но PDF в новой папке не появляется. В такой ситуации нужно проверять не только cups-pdf.conf, но и системные ограничения AppArmor или SELinux.
PostProcessing
PostProcessing дает мощную автоматизацию, но это также зона риска. Скрипт получает путь к PDF и данные пользователя. Если скрипт написан небрежно, возможны проблемы:
-
некорректная обработка пробелов в именах файлов;
-
опасные shell-подстановки;
-
запись в неправильный каталог;
-
раскрытие файлов другим пользователям;
-
перезапись чужих документов;
-
выполнение лишних команд.
Безопасный post-processing должен использовать полные пути, экранирование аргументов, проверку входных данных и ограниченные права.
AllowUnsafeOptions
AllowUnsafeOptions 1 не стоит включать на общих системах. Этот параметр разрешает пользователям переопределять больше опций, включая потенциально рискованные. Для серверного PDF-принтера нормальное значение — 0.
Качество PDF
Качество PDF в CUPS-PDF зависит от трех факторов:
-
Как исходное приложение подготовило печатное задание.
-
Какие параметры CUPS применил к очереди.
-
Как Ghostscript обработал поток и создал PDF.
CUPS-PDF использует Ghostscript с устройством pdfwrite. В конфигурации GSCall задает параметры совместимости, обработки изображений, автоматического поворота страниц и профиля PDFSETTINGS. Для большинства пользователей менять этот параметр не нужно.
Текст
Если приложение передает текст как текст, итоговый PDF может сохранять выделяемый и searchable text. Если приложение или драйвер передает страницу как изображение, PDF получится визуально похожим, но текст может стать невыделяемым. Это зависит от источника печати и пути фильтрации, а не только от CUPS-PDF.
Изображения
Изображения проходят через Ghostscript. Параметры фильтрации и PDFSETTINGS влияют на размер и качество. В стандартной конфигурации CUPS-PDF ориентируется на качественный результат. Если нужно создавать очень маленькие PDF, придется менять Ghostscript-параметры, но это уже компромисс между размером и качеством.
Шрифты
Шрифты зависят от того, как приложение передает печатное представление и как Ghostscript обрабатывает их в PDF. Если в итоговом PDF проблемы с символами, нужно проверять не только CUPS-PDF, но и исходное приложение, локали, шрифты системы и кодировки заголовков.
Размер страницы
Один из частых источников проблем — несовпадение A4 и Letter. Если документ создан под A4, а очередь CUPS-PDF использует Letter, могут появиться сдвиги, поля или изменение масштаба. Поэтому в Set Default Options стоит задать правильный размер бумаги для очереди.
Типичные проблемы и решения
PDF не появляется
Проверить нужно по порядку:
-
Существует ли очередь CUPS-PDF.
-
Принимает ли она задания.
-
Не зависло ли задание в очереди.
-
Правильно ли задан
Out. -
Создан ли каталог вывода.
-
Есть ли права на запись.
-
Не блокирует ли путь AppArmor или SELinux.
-
Доступен ли Ghostscript.
-
Есть ли ошибки в логах CUPS-PDF.
Команды:
lpstat -p
lpstat -o
Поиск PDF:
find ~/PDF -type f -name "*.pdf"
find /var/spool/cups-pdf -type f -name "*.pdf"
PDF появляется не в той папке
Частая причина — другое значение Out, другой пользователь задания или anonymous mode. Нужно проверить:
Out
AnonDirName
AnonUser
LowerCase
RemovePrefix
Если задание пришло от сетевого клиента, CUPS-PDF может определить пользователя иначе, чем ожидает администратор.
Изменили Out, но ничего не создается
Если путь вывода изменен на нестандартный, нужно проверить права каталога и профили безопасности. На системах с AppArmor часто требуется разрешить CUPS запись в новый путь. Само изменение cups-pdf.conf недостаточно, если системная политика запрещает доступ.
Имя файла странное
CUPS-PDF формирует имя из заголовка задания или данных внутри печатного потока. На имя влияют:
-
TitlePref; -
Cut; -
Truncate; -
Label; -
имя документа в приложении;
-
параметр
-tв командеlp; -
заголовок
%Titleв PostScript.
Если имя получается вроде Untitled-job_45.pdf, нужно проверить, передает ли приложение нормальный title и как настроен Label.
Файлы перезаписываются
Включить добавление job id:
Label 1
или:
Label 2
Для серверного сценария лучше Label 2, потому что имя остается читаемым, а уникальный номер добавляется в конец.
Неверная ориентация страницы
Проверить нужно не только CUPS-PDF, но и приложение-источник. Ориентация задается в документе, в диалоге печати и в настройках очереди. Если один уровень говорит Portrait, а другой Landscape, результат может отличаться от ожиданий.
Принтер не виден в приложении
Проверить:
lpstat -p
Если очередь есть, но приложение ее не показывает, нужно перезапустить приложение. Иногда GUI-приложения считывают список принтеров при запуске. Также нужно проверить, работает ли служба CUPS и доступен ли пользовательскому сеансу системный print dialog.
Печать идет в очередь, но задание зависает
Проверить состояние CUPS:
lpstat -t
Затем открыть веб-интерфейс CUPS, раздел Jobs, и посмотреть ошибку задания. Если ошибка связана с backend, путями или Ghostscript, она будет видна в логах.
Не работает post-processing
Проверить нужно:
-
существует ли скрипт;
-
есть ли право на выполнение;
-
указан ли полный путь;
-
корректно ли скрипт обрабатывает пробелы;
-
может ли пользователь писать в целевую папку;
-
не блокирует ли выполнение политика безопасности;
-
видны ли ошибки в логах.
Минимальный post-processing лучше сначала проверить вручную, а уже потом подключать к CUPS-PDF.
CUPS-PDF и командные утилиты CUPS
CUPS-PDF полностью вписывается в стандартные команды CUPS. Это делает его удобным для администраторов и автоматизации.
| Команда | Задача |
|---|---|
lpstat -p |
показать принтеры |
lpstat -o |
показать задания |
lpstat -t |
показать полное состояние CUPS |
lp -d CUPS-PDF file |
отправить файл на CUPS-PDF |
lp -d CUPS-PDF -t "name" file |
отправить файл с именем задания |
lpoptions -p CUPS-PDF |
посмотреть параметры очереди |
cancel job-id |
отменить задание |
lpadmin |
управлять очередями из командной строки |
Эти команды особенно полезны на сервере, где графического интерфейса нет. CUPS-PDF можно проверить, настроить и использовать полностью из терминала.
Логирование и диагностика
CUPS-PDF ведет логирование в каталог, заданный параметром Log. Обычно это /var/log/cups. Уровень детализации задается LogType.
Для нормальной эксплуатации подходит:
LogType 3
Для диагностики:
LogType 7
После включения полного логирования нужно воспроизвести проблему: отправить задание, дождаться ошибки и посмотреть записи. Затем debug лучше отключить, чтобы не перегружать логи.
При диагностике важно разделять уровни:
| Где проблема | Как проявляется |
|---|---|
| Приложение | не отправляет задание или передает неправильный формат |
| CUPS | очередь не принимает задание, задание зависает |
| CUPS-PDF | задание принято, но PDF не создается |
| Ghostscript | ошибка преобразования |
| Права | PDF не может быть записан в каталог |
| AppArmor/SELinux | путь разрешен в конфиге, но запрещен системой |
| PostProcessing | PDF создан, но дальнейшая обработка не сработала |
Такой подход быстрее, чем хаотично менять параметры.
Несколько экземпляров CUPS-PDF
CUPS-PDF может использовать разные конфигурационные файлы для разных очередей. Это полезно, когда один и тот же сервер должен обслуживать разные сценарии печати в PDF.
Пример структуры:
/etc/cups/cups-pdf.conf
/etc/cups/cups-pdf-archive.conf
/etc/cups/cups-pdf-private.conf
/etc/cups/cups-pdf-ocr.conf
Очереди могут отличаться:
| Очередь | Назначение |
|---|---|
PDF |
обычное сохранение в папку пользователя |
PDF-Archive |
сохранение в общий архив |
PDF-OCR |
запуск OCR после печати |
PDF-Temp |
временные PDF для тестов |
PDF-Accounting |
отдельный каталог для бухгалтерских документов |
Такой подход удобен в организациях: пользователю не нужно выбирать папку, он просто выбирает нужный PDF-принтер.
CUPS-PDF в графических окружениях
В разных Linux-окружениях CUPS-PDF может отображаться немного по-разному. В GNOME, KDE Plasma, Cinnamon, Xfce и других окружениях список принтеров строится поверх CUPS, но графические панели отличаются.
Обычно CUPS-PDF виден как:
-
PDF;
-
CUPS-PDF;
-
Virtual PDF Printer;
-
Generic CUPS-PDF Printer;
-
очередь с именем, заданным администратором.
В свойствах принтера главное проверять:
Device URI: cups-pdf:/
Make and Model: Generic CUPS-PDF Printer
Printer State: Idle
Если эти значения есть, система видит CUPS-PDF как принтерную очередь. Дальше пользователь может печатать из приложений обычным способом.
Сценарии для администратора
Быстрая проверка CUPS без физического принтера
CUPS-PDF можно использовать как тестовый принтер. Администратор отправляет пробное задание и проверяет, что CUPS принимает файлы, применяет настройки очереди и передает данные backend-у.
Серверный PDF-принтер для отдела
Создается очередь PDF-Department, выходной каталог задается в /srv/pdf-output/${USER}, права ограничиваются по пользователям или группам. Пользователи печатают на сетевой PDF-принтер, а документы автоматически появляются на сервере.
Архивирование отчетов
Приложение генерирует отчет и отправляет его на CUPS-PDF. Post-processing переносит PDF в архив с именем по дате и пользователю.
PDF-принтер для старого ПО
Старые приложения часто умеют только печатать. CUPS-PDF позволяет получать из них PDF без изменения самого приложения.
Тестирование прав доступа
Администратор может проверить, какие пользователи могут создавать PDF, куда попадают anonymous jobs и какие права получают файлы.
Сценарии для обычного пользователя
Сохранить чек, страницу или документ
Пользователь открывает документ, нажимает Print, выбирает PDF и получает файл в папке PDF.
Сделать PDF из программы без экспорта
Если приложение умеет только печатать, CUPS-PDF становится универсальным выходом в PDF.
Напечатать только часть документа
Через диалог печати можно выбрать диапазон страниц, например 1–3 или только текущую страницу. CUPS-PDF создаст PDF только из выбранной части.
Создать PDF с нужной ориентацией
Пользователь выбирает Portrait или Landscape в диалоге печати. При правильных настройках приложения и очереди CUPS-PDF сохранит результат в нужной ориентации.
Создать PDF из нескольких источников одинаковым способом
Если разные приложения используют одну очередь CUPS-PDF, результат сохраняется по единому правилу. Это удобно, когда пользователь не хочет каждый раз искать разные кнопки экспорта.
Ограничения CUPS-PDF
CUPS-PDF не является универсальным инструментом для всех PDF-задач. У него четкая область применения: печать в PDF через CUPS.
Программа не предназначена для:
-
редактирования PDF;
-
объединения PDF вручную;
-
удаления и перестановки страниц в графическом режиме;
-
добавления комментариев;
-
заполнения PDF-форм;
-
подписания PDF электронной подписью;
-
создания закладок и структуры документа;
-
настройки тегированного PDF;
-
интерактивного выбора имени файла при каждой печати;
-
визуального предпросмотра перед созданием файла.
Если нужна ручная работа с PDF, нужен PDF-редактор или отдельная утилита. Если нужен системный PDF-принтер, CUPS-PDF подходит лучше.
Сильные стороны CUPS-PDF
Системная интеграция
CUPS-PDF работает на уровне CUPS. Это его главное преимущество. Он доступен не только в одном приложении, а во всей печатной подсистеме.
Универсальность
Любая программа, умеющая печатать, может использовать CUPS-PDF. Это особенно полезно для старого ПО и специализированных приложений.
Серверное использование
CUPS-PDF хорошо подходит для центрального PDF-принтера. Он может работать на файловом сервере, сохранять файлы по пользователям и участвовать в сетевой печати.
Настраиваемая папка вывода
Параметр Out позволяет гибко задавать каталог. Можно сохранять PDF в домашнюю папку, spool-каталог, общий архив или директорию обработки.
Автоматизация
PostProcessing позволяет подключать скрипты и строить рабочие процессы вокруг факта создания PDF.
Минимальный пользовательский сценарий
Пользователю не нужно изучать отдельное приложение. Достаточно выбрать принтер и нажать Print.
Удобство для тестирования
CUPS-PDF позволяет проверять печатную подсистему без физического устройства.
Слабые стороны CUPS-PDF
Нет отдельного удобного GUI
Для обычного пользователя отсутствие отдельного окна может быть минусом. Настройка выполняется через CUPS, системные свойства принтера и конфигурационный файл.
Нет интерактивного выбора имени
CUPS-PDF сам формирует имя файла. Это удобно для автоматизации, но непривычно для пользователей, которые хотят при каждой печати видеть окно Save As.
Нужна аккуратная настройка прав
На сервере CUPS-PDF требует внимания к правам, umask, группам, AppArmor/SELinux и каталогам вывода.
Результат зависит от приложения
Если исходное приложение плохо формирует печатное задание, CUPS-PDF сохранит именно такой результат. Он не исправляет верстку, шрифты и структуру документа.
Не заменяет экспорт в PDF
Для офисных документов с закладками, ссылками и формами родной экспорт LibreOffice часто дает более управляемый результат. CUPS-PDF нужен для печати, а не для интеллектуального экспорта структуры документа.
Сравнение с аналогами
CUPS-PDF и Boomaga
Boomaga — виртуальный принтер с графическим окном предпросмотра. Он удобен, когда нужно визуально собрать задание, изменить порядок страниц, подготовить буклет или проконтролировать печать перед выводом. CUPS-PDF работает иначе: он принимает задание и сразу сохраняет PDF по заданным правилам.
| Критерий | CUPS-PDF | Boomaga |
|---|---|---|
| Основной подход | системная печать в PDF через CUPS | виртуальный принтер с GUI-предпросмотром |
| Предпросмотр | нет отдельного окна предпросмотра | есть графический предпросмотр |
| Автоматизация | сильная через PostProcessing |
ориентирован больше на интерактивную работу |
| Серверное использование | сильная сторона | не главный сценарий |
| Пользовательский комфорт | зависит от настроек CUPS | удобнее для ручной подготовки |
| Выбор имени файла | автоматический | интерактивный сценарий удобнее |
CUPS-PDF лучше подходит для серверной и автоматизированной печати. Boomaga удобнее, если пользователю нужно видеть страницы перед сохранением или печатью.
CUPS-PDF и LibreOffice Export as PDF
LibreOffice имеет мощный экспорт в PDF. Он лучше понимает структуру документа: заголовки, ссылки, закладки, формы, изображения, стили. CUPS-PDF, напротив, работает как принтер и получает печатное представление.
| Критерий | CUPS-PDF | LibreOffice Export as PDF |
|---|---|---|
| Область работы | любое приложение с печатью | документы LibreOffice |
| Структура документа | зависит от печатного потока | сохраняется глубже |
| Закладки и ссылки | не главный сценарий | доступны через настройки экспорта |
| Автоматизация через CUPS | сильная | не связана с CUPS-принтером |
| Серверный PDF-принтер | да | нет |
| Простота для офисного файла | нормальная | часто выше |
Для документов Writer, Calc и Impress лучше использовать родной экспорт, если важны ссылки, структура и специальные PDF-параметры. CUPS-PDF лучше, когда нужен единый PDF-принтер для разных приложений.
CUPS-PDF и Chromium/Chrome Save to PDF
Браузеры Chromium и Chrome умеют сохранять страницы в PDF через встроенную функцию. Это удобно для веб-страниц: пользователь видит параметры, выбирает Save to PDF и получает файл. CUPS-PDF полезен, когда веб-страница должна пройти через системный CUPS-принтер и попасть в заранее настроенную папку.
| Критерий | CUPS-PDF | Chromium/Chrome Save to PDF |
|---|---|---|
| Тип решения | системный CUPS-принтер | функция браузера |
| Работает из других приложений | да | нет |
| Автоматическая папка вывода | да | обычно пользователь выбирает вручную |
| Серверное применение | да | нет |
| Удобство для одной веб-страницы | нормальное | высокое |
| Единый workflow | сильный | ограничен браузером |
Для разового сохранения страницы проще встроенный Save to PDF. Для системного маршрута печати лучше CUPS-PDF.
CUPS-PDF и GTK/Qt Print to File
Многие Linux-приложения на GTK и Qt имеют вариант Print to File. Он позволяет сохранить PDF или PostScript без отдельного CUPS-PDF. Это удобно на рабочей станции, но не заменяет серверную очередь.
| Критерий | CUPS-PDF | GTK/Qt Print to File |
|---|---|---|
| Уровень интеграции | CUPS-принтер | функция диалога печати |
| Нужен серверный workflow | подходит | не подходит |
| Общая очередь для всех приложений | да | зависит от приложения |
| Централизованная папка | да | обычно нет |
| PostProcessing | да | нет |
| Простота для одного пользователя | средняя | высокая |
Print to File удобен, если пользователь работает локально и хочет вручную сохранить PDF. CUPS-PDF лучше, если нужен единый виртуальный PDF-принтер Linux на уровне системы.
CUPS-PDF и PDFCreator
PDFCreator — популярный виртуальный PDF-принтер для Windows. Он рассчитан на настольный пользовательский сценарий с графическим интерфейсом, профилями, сохранением и дополнительными действиями. CUPS-PDF решает похожую задачу в мире CUPS, но делает это иначе: через Linux/Unix backend, конфигурационный файл и системную очередь.
| Критерий | CUPS-PDF | PDFCreator |
|---|---|---|
| Основная платформа | Unix/Linux через CUPS | Windows |
| Интерфейс | CUPS + конфиг | графический интерфейс |
| Сервер CUPS | естественный сценарий | нет |
| Автоматизация | через скрипты и CUPS | через функции приложения |
| Настройка папки | через Out |
через профиль сохранения |
| Типичный пользователь | Linux-пользователь, администратор CUPS | Windows-пользователь |
PDFCreator удобнее для Windows-рабочей станции. CUPS-PDF естественнее для Linux-серверов, CUPS-инфраструктуры и системной печати.
CUPS-PDF и встроенный Microsoft Print to PDF
Microsoft Print to PDF встроен в Windows и удобен для локального сохранения PDF. CUPS-PDF находится в другой экосистеме и рассчитан на CUPS. Его сила — серверность, Unix-права, автоматический вывод в каталоги и интеграция с CUPS-командами.
| Критерий | CUPS-PDF | Microsoft Print to PDF |
|---|---|---|
| Экосистема | CUPS, Unix/Linux | Windows |
| Серверная настройка | сильная | ограниченная |
| Папка вывода без диалога | да | обычно нет |
| PostProcessing | да | нет в таком виде |
| Управление через конфиг | да | нет |
| Простота для домашнего пользователя | средняя | высокая |
Для Windows-пользователя встроенный принтер проще. Для CUPS-сервера CUPS-PDF гораздо гибче.
Кому подойдет CUPS-PDF
CUPS-PDF подходит администраторам и пользователям, которым нужен не редактор, а надежный PDF-принтер.
Программа хорошо подходит:
-
администраторам Linux-серверов;
-
пользователям рабочих станций Linux;
-
организациям с CUPS-сервером;
-
средам с сетевой печатью;
-
системам без физического принтера;
-
пользователям старых приложений;
-
тем, кто хочет печатать в PDF из любого приложения;
-
тем, кому нужен автоматический вывод в заданную папку;
-
тем, кто строит workflow на основе печатных заданий.
Особенно хорошо CUPS-PDF показывает себя там, где важна предсказуемость: пользователь выбирает один и тот же принтер, а файлы всегда появляются в одном месте по одним правилам.
Кому лучше выбрать другой инструмент
CUPS-PDF не будет лучшим выбором, если нужно визуально редактировать PDF или вручную управлять готовым файлом. Для таких задач лучше использовать PDF-редактор, утилиту объединения страниц или родной экспорт приложения.
Другой инструмент лучше выбрать, если нужно:
-
редактировать текст внутри PDF;
-
менять порядок страниц;
-
объединять несколько PDF вручную;
-
добавлять комментарии;
-
ставить подписи;
-
создавать интерактивные формы;
-
добавлять закладки;
-
настраивать PDF/A;
-
получать структурированный PDF из офисного документа;
-
каждый раз выбирать имя и папку через окно сохранения;
-
видеть предпросмотр перед созданием файла.
CUPS-PDF силен не в ручном редактировании, а в системной печати в PDF.
Лучшие практики настройки
Для персональной рабочей станции
Оптимальная схема:
Out ${HOME}/PDF
Label 0
UserUMask 0077
LogType 3
AllowUnsafeOptions 0
Так пользователь получает PDF в домашнюю папку, файлы закрыты от других пользователей, а логирование достаточно для диагностики.
Для общего сервера
Более подходящая схема:
Out /var/spool/cups-pdf/${USER}
Label 2
UserUMask 0077
LogType 3
AllowUnsafeOptions 0
Дополнительно нужно проверить права на /var/spool/cups-pdf, работу anonymous mode и профили безопасности.
Для общего архива
Если PDF должны попадать в общий архив, лучше использовать post-processing, а не просто открывать права всем пользователям. Безопаснее сначала создать PDF в пользовательском каталоге, затем скриптом перенести копию в архив с нужными правами.
Для сетевых клиентов
Нужно заранее настроить:
-
сопоставление имен пользователей;
-
LowerCase; -
RemovePrefix; -
anonymous directory;
-
права на выходной каталог;
-
уникальные имена через
Label; -
размер бумаги по умолчанию;
-
PostScript-драйвер на клиентской стороне, если используется raw queue.
Рекомендации по эксплуатации
CUPS-PDF не требует постоянного внимания, если настроен правильно. Но на сервере стоит периодически проверять:
-
размер каталога вывода;
-
количество старых PDF;
-
права на пользовательские папки;
-
логи CUPS-PDF;
-
зависшие задания CUPS;
-
корректность post-processing;
-
свободное место в
Spool; -
доступность Ghostscript;
-
профили AppArmor/SELinux после изменения путей.
Для каталога с PDF желательно настроить политику хранения. Иначе серверная папка будет расти бесконечно. В организациях обычно задают срок хранения, архивирование или автоматическую очистку временных PDF.
Итоговая оценка
CUPS-PDF — практичный виртуальный PDF-принтер для систем на базе CUPS. Его задача конкретна: принимать задания печати и сохранять их в PDF-файлы. Программа хорошо подходит для Linux-рабочих станций, серверов печати, безбумажных процессов, тестирования CUPS и автоматизации документооборота.
Главная сила CUPS-PDF — системная интеграция. Он не зависит от одного приложения, работает через стандартную печатную подсистему, поддерживает централизованную папку вывода, умеет использовать пользовательские каталоги и позволяет запускать post-processing после создания PDF. Для администратора это удобный backend, для пользователя — обычный принтер, который вместо бумаги создает файл.
Главные ограничения тоже понятны: нет отдельного графического интерфейса, нет ручного редактирования PDF, нет интерактивного выбора имени файла в стиле Save As, а качество и структура результата зависят от исходного печатного задания. CUPS-PDF лучше всего использовать там, где нужен надежный PDF-принтер CUPS, а не визуальный PDF-редактор.
Для персонального Linux-компьютера CUPS-PDF удобен как универсальная печать в PDF из любых приложений. Для сервера он особенно ценен: можно создать централизованный виртуальный PDF-принтер, разложить документы по пользователям, добавить job id к именам, настроить права и подключить автоматическую обработку.