Печать pdf файлов с помощью CUPS

Вопрос или проблема

Как я могу сообщить команде 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.

Оцените материал
Добавить комментарий

Капча загружается...