Одним из источников PDF-файлов, которые нам необходимо периодически распечатывать, являются спецификации. У PDF-файлов очень сложный фон и медленный рендеринг. Но проблема в том, что документ оказывается размером от 80 до 100 МБ, а иногда и больше.
До сих пор я обнаружил, что принтер может всегда печатать одну страницу, если она растеризована и выгружена на принтер таким образом. Итак, в нормальном режиме я бы распечатал только одну страницу и выбрал бы вариант растеризации вывода. Этот подход сработал безупречно, но для больших PDF-файлов требуется ручное вмешательство.
Итак, мои вопросы:
Кто-нибудь решил эту проблему и создал скрипт или плагин, который печатает по одной странице за раз в растровой форме.
Какие подходы и инструменты могут помочь мне создать сценарий для этого, при условии, что я не могу его использовать.
Мы используем среду 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 и на принтер.