Назад | Перейти на главную страницу

CUPS печатает очень сложные файлы PDF

Одним из источников PDF-файлов, которые нам необходимо периодически распечатывать, являются спецификации. У PDF-файлов очень сложный фон и медленный рендеринг. Но проблема в том, что документ оказывается размером от 80 до 100 МБ, а иногда и больше.

До сих пор я обнаружил, что принтер может всегда печатать одну страницу, если она растеризована и выгружена на принтер таким образом. Итак, в нормальном режиме я бы распечатал только одну страницу и выбрал бы вариант растеризации вывода. Этот подход сработал безупречно, но для больших PDF-файлов требуется ручное вмешательство.

Итак, мои вопросы:

  1. Кто-нибудь решил эту проблему и создал скрипт или плагин, который печатает по одной странице за раз в растровой форме.

  2. Какие подходы и инструменты могут помочь мне создать сценарий для этого, при условии, что я не могу его использовать.

Мы используем среду Slackware 14.2. Кроме того, поскольку принтер подключен к сети, мы попытались распечатать его с компьютера с Windows 10, и с тех пор возникла та же проблема. Эта печать была направлена ​​прямо на принтер. Решение действительно должно быть в пространстве Linux, поскольку мы вообще не используем Windows.

Вы можете печатать из командной строки примерно так:

#!/bin/bash

FLAGS="" # whatever you need to make the output suitable for the printer

PAGES=$(pdfinfo file.pdf | grep Pages: | awk '{print $2}')


for i in $(seq 1 $PAGES)
do
  lp $FLAGS -P $i file.pdf
done

Вместо прямого использования lp вы также можете перенаправить файл file.pdf через pdftopdf, pdf2ps или одно из этих преобразований (также создавать изображения с pdftoppm | ... ). Эти фильтры могут упростить file.pdf до того, как он попадет в фильтр cupfs и на принтер.