Я использую язык 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.
Однако напечатанные точки появляется текстура полосы. Принтером, который я использую, является струйный принтер Cannon ip2780 и лазерный принтер FX DocuPrint CP105b.
Результат печати 600dpi (лазер). Вертикальная полоса текстуры менее очевидна, чем 800 точек на дюйм.
Результат печати 800dpi (лазер). Вертикальная текстурная полоса более очевидна. Линия 2,4,6 легче линии 1,3,5. Однако плотность точек должна быть одинаковой.
Результат печати 800dpi (струйный). Появляется горизонтальная и вертикальная полоса текстуры.
Может ли кто-нибудь помочь объяснить, как происходит странное поведение принтера? Или то, как я составляю единицу точек, неверно.
Могу ли я использовать
translate
часто перемещать пользовательское пространство, особенно положение значения с плавающей точкой (делает точность достаточно)?Могу ли я использовать
scale
для ручной смены dpi на 600. Есть ли способ изменить входные dpi?
Заранее благодарен!
Мое единственное предположение, что вы сражаетесь с встроенным полутоновым оборудованием. Постскрипт в основном предназначен для абстрагирования от фактических точек. Я не знаю, как обойти это. –