[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Печать для бедных: как сделать duplex + n-up printing удобным?



On 2013-02-04, Dmitry Nezhevenko wrote:

> А если сначала четные напечатать, а потом нечетные, поменяв порядок? Для
> лазерных и струйных принтеров порядок разный.
>
> Я когда-то давно так делал (для струйника):
>
> pdftops -paper A4 -expand $1 - | psbook | psnup -2 -pA4 > tmp_book.ps
> psselect -o tmp_book.ps | ps2pdf14 - tmp_odd.pdf
> psselect -r -e tmp_book.ps | ps2pdf14 - tmp_even.pdf
> lpr tmp_odd.pdf
> read -p "Press enter to print even pages"
> lpr tmp_even.pdf
> read -p "Press enter to done"
> rm -f tmp_odd.pdf
> rm -f tmp_even.pdf

Теперь я понял что это полноценное решение! Для печати в виде как книжка, т.е.
по средине нужно подшивать. Я так никогда не печатал.

Я практикую по другому: сшиваю листы слева, листаю как альбом, страницы слева
направо. В отличии от книжек не нужно обрезать края, после сгибания, но и
размер А4 вместо А5...

Вот рецепт по альбомному способу (отточил, протестировал, каждый шаг
понятный). Я печатал:

  http://people.debian.org/~dburrows/model.pdf
                Modelling and Resolving Software Dependencies

Мой принтер печатает по верху листа, поднимая стопку из лотка в верх, попутно
переворачивая лист, ложа свеже-напечатаные листы поверх отпечатаных.

Что бы с чет/нечет правильно печатать на моем принтере нужно: отпечатать
*четные* страницы в *обратном* порядке (начинаем с четных, т.к. их может быть
на 1 *меньше* нечетных!!) и без изменения *ориентации* и не *переворачивая*
вернуть отпечатаную стопку в лоток и распечатать нечетные страницы в *прямом*
порядке.

При этом способе после первого прогона сверху будет лежать листок с
отпечатаной снизу 2th страницей, поверх которой мы напечатаем первую во втором
прогоне и т.д. + если нечетных на 1 больше, в конце потянется чистая страница.

Теперь рецепт как делать альбом. У меня была pdf, получаем ps:

  $ pdftops -paper A4 -expand model.pdf base.ps

Т.к. статья набиралась как "\documentclass{article}", у нас немного текста
посрединке страницы и куча гуляющих полей в base.ps. При преобразовании в 2-up
будет крайне мелкий текст на буквально чистых листах. Потому методом подбора:

  $ pstops "0@1.4(-3cm,-7cm)" base.ps good-size.ps

Формат опции команды немного "криптографический":

  [-]pageno[L][R][U][H][V][@scale][(xoff,yoff)]

Я увеличил размер и опустил содержимое на странице. Далее делаем 2-up:

  $ psnup -2 good-size.ps 2up.ps

Далее (из-за того что потребуется обратный порядок для четных страниц):

  $ psselect -o 2up.ps odd.ps
  $ psselect -e -r 2up.ps even.ps

Далее:

  $ lp even.ps

Опускаем отпечатаную бумагу обратно в лоток и:

  $ lp odd.ps

Как видно в принципе можно все проделать без красивых кнопочек (или обвязать
последовательность сомманд TK/GTK в неком скрипте).

Просто мне пришлось подбирать параметры для pstops "вручную", пока не стал
доволен результатом (предпросмотром 2up.ps в "gv").

================================================================

Было тяжело понять какой же "родной" формат для UNIX-принтеров, даже задал
безответный вопрос:

  http://superuser.com/questions/546526/input-file-formats-for-lp-printing-command

Судя по содержимому /etc/cups/mime.convs это PostScript и некий
application/vnd.cups-postscript.

Т.е. выпонлять манипуляции c PostScript - хорошо, т.к. нативный формат. И
вроде текст+фонты там имеют "нативное" представление, т.е. операция
маштабирования будет без потерь качества.

Правда под вопросом как быть с djvu (в топик-старте я конвертил djvu => pdf =>
ps).

-- 
Best regards!


Reply to: