Задача: имеем лист наклеек, 5 столбцов в 16 строках. Нужно в эти наклейки точненько выводить некоторые данные из записей. 1 запись - 1 наклейка. Попробовал было через GDI - что-то получается, но нужно обязательно учитывать поля принтера. Решил попробовать через постскрипт. Дома у меня крутится сервер на Linux, а на десктопе лежат рядом Win2000 и Linux.
Вчера сидел в SSH на сервере (там без графики, так что результаты на экране не посмотришь), ваял тестовые файлы. Начал с
самого простого. Набил файл, попытался вывести через lp test.ps, получил на принтере исходник. Ладно, думаю, переведу в PDF. ps2pdf test.ps test.pdf работает прекрасно, lp test.pdf выдает то, что и намечалось. Нарисовал три прямоугольника, на месте левой верхней, левой нижней и правой нижней наклейки. Тоже все совпало, с точностью до полумиллиметра, ввел поправки - совпадение практически идеально.
Сегодня пробовал на десктопе, под KDE. Принтер расположен на сервере, расшарен под CUPS. Так вот, если я печатаю из PDF-вьюера, то картинка скалируется с учетом каких-то полей. Но lp -d
test.pdf работает так же идеально, как и для локального принтера (вчера). В причинах не разбирался, поскольку результат с использованием lp меня вполне устраивает.
Краткие выводы:
1) Postscript-ом можно выводить весьма точно, причем левый нижний угол бумажного листа действительно является началом координат.
2) Возможно, есть какой-то способ распечатать Postscript напрямую на принтер (тем более, что мой HP 1320 по спецификации Postscript понимает), но перевод ps в pdf точность позиционирования не меняет.
3) Программировать Postscript мне показалось куда более простым, чем программировать графику для принтера под GDI.