☰ Оглавление

Подготовка документов к печати в Linux

Печатаем брошюру с двух сторон

Нам понадобится PostScript-принтер (не обязательно физически понимающий PostScript) и два скрипта.

Вспомогательный скрипт на перле:

#!/usr/bin/perl

$tumble = 'false';
$cookie = <<"END_OF_COOKIE";
%%BeginFeature: *Duplex DuplexTumble
mark
{
  (<<) cvx exec /Duplex (true) cvx exec /Tumble ($tumble) cvx exec (>>) cvx exec
  systemdict /setpagedevice get exec
} stopped
cleartomark
%%EndFeature
END_OF_COOKIE

$ps = '';
while (<>) {
  $ps .= $_;
}

$nsubs = ($ps =~ s/(?:\n|\r)(%%EndSetup)/\n$cookie$1/);
unless ($nsubs) {
  $nsubs = ($ps =~ s/(?:\n|\r)(%%EndProlog)(?:\n|\r)/\n$1\n$cookie/);
}
unless ($nsubs) {
  $nsubs = ($ps =~ s/(?:\n|\r)(%%Page:\s)/\n$cookie$1/);
}
unless ($nsubs) {
  die "ERROR";
}
print $ps;

Скрипт на шеле:

#!/bin/sh

cat "$1" |
  psbook |
  psnup -Pa4 -2 |
  pstops -b "2:0,1U(21cm,29.7cm)" |
  ~/bin/mkbook-duplex.pl > "$1-booklet.ps"
  #pstops "2:0U(8.5in,11.7in),1"
  #pstops "2:0U(8.5in,11.7in),1(-.025in,0in)" |

Теперь преобразуем исходные файл и печатаем его:

$ mkbook text.ps
$ lpr text.ps-booklet.ps

Русификация a2ps

Утилита a2ps очень полезна, если у вас PostSctipt-принтер и вы часто печатаете не-форматированные тексты типа листингов программ. Кстати, a2ps умеет подсвечивать синтаксис многих языков программирования.

Исходные данные

Вам понадобятся шрифты i18n-fonts-0.1.tar.gz или более новые. С ними всё время происходят какие-то лицензионные напряги, но гугл помогает их найти во множестве по всему интернету. Последний раз я брал отсюда ftp://ftp.padua.org/pub/misc/a2ps/i18n-fonts-0.1.tar.gz (если ссылка устарела — жалуйтесь).

Подключение русских шрифтов

cd /tmp
wget ftp://ftp.padua.org/pub/misc/a2ps/i18n-fonts-0.1.tar.gz
tar xzf i18n-fonts-0.1.tar.gz
cd i18n-fonts-0.1
mkdir ~/.a2ps
cp fonts/ afm/ ~/.a2ps
cp make_fonts_map.sh ~/.a2ps
cd ~/.a2ps
./make_fonts_map.sh
mv fonts.map.new fonts.map

Настраиваем a2ps на русский язык

echo 'Options: --encoding=KOI8-R' >>~/.a2psrc

Туда же можно внести и другие полезные опции. Например:

Options: --medium=A4