2015-09-29 4 views
3

Я использую язык PostScript, чтобы описать страницу однородных расположенных точек. Эти точки - 600dpi, а это значит, что 600 точек в дюйме. И я использую один бит для представления каждой точки в PostScript, 1 для пустого и 0 для черной точки.Строка текстуры появляется при печати файла PostScript

Мой PostScript файл единицы точек:

%% SetPageSize 
/setPageSize {<</PageSize [595 842] >> setpagedevice} def 
setPageSize 
%% Dot Code 
gsave 
/mm {2.834645 mul} def 
1 mm 1 mm translate 
5.76 5.76 scale 
48 48 1 [48 0 0 -48 0 48] 
{< 
fff7ff7ff7ff 
ffffffffffff 
ffffffffffff 
fdffffffffff 
ffffffffff7f 
ffffffffffff 
ffffffffffff 
ffffffffffff 
fffff7ffffff 
fffffffdffff 
ffffffffffff 
ffffffffffff 
7ff7ff7ff7ff 
ffffffffffff 
ffffffffffff 
ffffffffffff 
ffffffffffff 
ffffffffffff 
fffefffffeff 
ffffffffffff 
f7ffffff7fff 
ffffffffffff 
ffffffffffff 
ffffffffffff 
7ff7ff7ff7ff 
ffffffffffff 
ffffffffffff 
fffffffdffff 
fffff7ffffff 
ffffffffffff 
ffbfffffffff 
ffffffffffff 
fffffffffff7 
ffffffffffff 
ffffffffffff 
ffffffffffff 
7ff7ff7ff7ff 
ffffffffffff 
ffffffffffff 
ffffffffffff 
f7ffffffffff 
ffffffffffff 
fffffffffffb 
ffffffffffff 
ffffffff7fff 
7fffdfffffff 
ffffffffffff 
ffffffffffff 
>} 
image 
grestore 
  • Код выше представляет собой блок точек, который находится в 600dpi 2.03mm*2.03mm.

  • translate используется для перемещения пользовательского пространства в нужное положение, например:

    • Предполагается, что устройство находится в положении (1mm, 1mm).

    • Его правый блок находится в положении (3.03mm, 1mm).

    • Его устройство находится в положении (1mm, 3.03mm).

  • scale используется для изменения выходной точек на дюйм до 600. Коэффициент рассчитывается путем 72*48/600 = 5.76.

  • Матрица 48 48 1 [48 0 0 -48 0 48] - это пиксели сканирования по вертикали и по горизонтали.

  • Структура image представляет собой двоичное значение точек, которое написано в шестнадцатеричном виде.

Эти точки могут быть открыты с помощью GhostScript или Adobe-Illustrator и отображаются на мониторе очень четко и четко.

Образцы точек увеличены на 4800% в AI.

enter image description here

Однако напечатанные точки появляется текстура полосы. Принтером, который я использую, является струйный принтер Cannon ip2780 и лазерный принтер FX DocuPrint CP105b.

Результат печати 600dpi (лазер). Вертикальная полоса текстуры менее очевидна, чем 800 точек на дюйм. enter image description here

Результат печати 800dpi (лазер). Вертикальная текстурная полоса более очевидна. Линия 2,4,6 легче линии 1,3,5. Однако плотность точек должна быть одинаковой. enter image description here

Результат печати 800dpi (струйный). Появляется горизонтальная и вертикальная полоса текстуры. enter image description here

Может ли кто-нибудь помочь объяснить, как происходит странное поведение принтера? Или то, как я составляю единицу точек, неверно.

  1. Могу ли я использовать translate часто перемещать пользовательское пространство, особенно положение значения с плавающей точкой (делает точность достаточно)?

  2. Могу ли я использовать scale для ручной смены dpi на 600. Есть ли способ изменить входные dpi?

Заранее благодарен!

+1

Мое единственное предположение, что вы сражаетесь с встроенным полутоновым оборудованием. Постскрипт в основном предназначен для абстрагирования от фактических точек. Я не знаю, как обойти это. –

ответ

3

Что вы видите, это наложение вашего сигнала, а точнее - moiré pattern. То, что происходит, - это то, что вы печатаете, не полностью совпадают с матричной матрицей (экраном).

Различные принтеры имеют разные экраны, а ваши пиксели совпадают с ними по-разному. В результате иногда ваша точка распределяется по двум пикселам принтера, а иногда и нет. Если вы действительно хотите это сделать, для использования этого метода каждый прибор должен иметь собственный шаблон полутонов.

дальнейшее чтение:

0

joojaa является правильным, это интерференционная картина между 600 и 800 точек на дюйм. Вам нужно либо найти принтер с более высоким разрешением, либо уменьшить разрешение вашего точечного шаблона. Попробуйте уменьшить число 48 в вашем массиве изображений [48 0 0 -48 0 48] с шагом 5 или 10 или около того и снова распечатать, пока шаблон не исчезнет, ​​что будет лучшим, что может сделать ваш принтер.