Вопрос или проблема
Как я могу сообщить команде lpr (cups), что мой файл на самом деле является PDF?
lpr file.pdf
ничего не печатает.
Существует как минимум два способа конвертировать и напечатать PDF файл.
Первый способ заключается в том, чтобы открыть файл в xpdf (просмотрщик PDF файлов) и затем щелкнуть левой кнопкой мыши по значку принтера. Это на самом деле не отправляет файл на принтер, но создает файл PostScript в той же директории с таким же именем базового файла, как у PDF файла, но с расширением .ps
. Затем вы можете напечатать этот файл с помощью lpr или конвертировать его в другой формат.
Второй способ — использовать pdf2ps, который является частью пакета gs, чтобы конвертировать PDF файл в PostScript (а затем напечатать вывод PostScript, как описано для xpdf выше). pdf2ps принимает два аргумента: имя PDF файла для конвертации и имя файла PostScript, в который нужно записать результат.
Чтобы конвертировать PDF файл `pricelist.pdf`, введите:
$ pdf2ps pricelist.pdf pricelist.ps
Эта команда создает файл PostScript pricelist.ps
в текущей директории.
У меня были похожие проблемы с попытками напечатать PDF файлы на струйном принтере Canon, используя стандартное приложение для просмотра в Mint 17. Я немного разбираюсь в печати через cups, но, как бы там ни было, вот как мне наконец удалось все наладить: 1 – я обновил дистрибутив, установив Mint 17.2, не уверен, было ли это фактом в моем конечном успехе. 2 – Я установил правильный драйвер принтера с помощью онлайн-поиска (Canon MX410). 3 – Теперь я убедился, что принтер включен перед загрузкой Linux, чтобы правильный драйвер принтера был загружен.
Признаю, что это все довольно неудовлетворительно, так как не диагностирован оригинальный problem, но, по крайней мере, теперь я счастлив, что печатаю как обычно!
Что я делаю, чтобы печатать PDF напрямую в командной строке (cli) из этого bash
скрипта:
#!/bin/bash
model=XXX # частичное соответствие
dev=$(lpstat -a | awk -v m="$model" '$1 ~ m{print $1;exit}')
if [[ -z $1 ]]; then
echo >&2 "Требуется PDF файл в качестве аргумента"
exit 1
fi
exec lpr -P $dev -o Resolution=150dpi -o OptionDuplex=False -o PageSize=A4 -o PageRegion=A4 -o Duplex=None -o InputSlot=Auto -o MediaType=Plain -o ColorModel=Gray "$@"
Ответ или решение
Для успешной печати PDF-файлов с использованием системы CUPS (Common UNIX Printing System) существует несколько методов и рекомендаций.
1. Использование команды lpr для печати PDFs
Команда lpr
предназначена для отправки файлов на печать через систему CUPS. Однако, важно помнить, что не все принтеры и драйвера поддерживают печать PDF-файлов напрямую. Если команда:
lpr file.pdf
не производит никаких результатов, это может означать, что драйвер принтера не распознает PDF как допустимый формат. В таких случаях рекомендованы другие способы преобразования PDF в более «понятный» формат, такой как PostScript.
2. Конвертация PDF в PostScript
Способ 1: Использование xpdf
Вы можете использовать программу xpdf
для открытия PDF-файла. При этом, нажав на иконку принтера, xpdf
создаст файл PostScript (.ps) в той же директории. Этот файл можно затем отправить на печать через lpr
:
lpr file.ps
Способ 2: Использование pdf2ps
Другим вариантом является использование утилиты pdf2ps
, которая входит в состав Ghostscript. Эта команда позволяет вам конвертировать PDF-файлы в PostScript:
pdf2ps pricelist.pdf pricelist.ps
После выполнения этой команды файл pricelist.ps
будет создан в текущей директории и готов к печати:
lpr pricelist.ps
3. Правильная установка драйверов
Как показал опыт пользователя, важной частью успешной печати является корректная установка драйверов принтера. Убедитесь, что ваш принтер поддерживается драйверами, установленными в вашей системе. Если используете, например, принтер Canon MX410, выполните поиск и установите соответствующий драйвер с официального сайта.
4. Исходный код для автоматизации
Для более удобной печати PDF-файлов из командной строки можно использовать следующий Bash-скрипт, который автоматически определяет ваш принтер и отправляет PDF на печать с указанными параметрами:
#!/bin/bash
model=XXX # здесь укажите часть названия вашей модели принтера
dev=$(lpstat -a | awk -v m="$model" '$1 ~ m{print $1;exit}')
if [[ -z $1 ]]; then
echo >&2 "Требуется указать PDF файл в качестве аргумента"
exit 1
fi
exec lpr -P $dev -o Resolution=150dpi -o OptionDuplex=False -o PageSize=A4 -o PageRegion=A4 -o Duplex=None -o InputSlot=Auto -o MediaType=Plain -o ColorModel=Gray "$@"
В этом скрипте замените XXX
на часть названия вашей модели принтера. Скрипт проверяет наличие аргумента (PDF-файла) и отправляет его на печать с заданными параметрами.
Заключение
Эти методы помогут вам организовать печать PDF-файлов через систему CUPS. Убедитесь, что все драйвера установлены правильно, и используйте преобразование в PostScript, если ваш принтер не поддерживает PDF-файлы напрямую. Если возникнут дальнейшие вопросы или трудности, могут помочь форумы поддержки пользователей CUPS или документация по Ghostscript.