Печать монохромного изображения в цвете разделения в PDF - PullRequest
0 голосов
/ 25 июня 2018

У меня возникли проблемы при попытке вставить изображения в PDF при изменении его цветового пространства. Прямо сейчас у меня есть png монохромное изображение (8 бит, глубина 1 бит), где 1 - черный, а 0 - прозрачный (что-то вроде маски). Я хочу вставить это изображение в файл PDF и изменить цветовое пространство на разделение, потому что оно должно быть напечатано с использованием плашечного цвета. Есть ли способ сделать это?

В настоящее время я пробовал это:

<</Type /XObject
/Subtype /Image
/Width 800
/Height 600
/ColorSpace <</CS0 6 0 R>>
/BitsPerComponent 1
/Filter /FlateDecode
/DecodeParms <</Predictor 15 /Colors 1 /BitsPerComponent 1 /Columns 800>>

Существо это разделение цветового пространства:

6 0 obj
[/Separation /White 10 0 R
<<
/FunctionType 2
/N 1
/Range [0 1 0 1 0 1 0 1]
/C1 [1 0 0 0]
/Domain [0 1]
/C0 [0 0 0 0]

Я также попытался добавить встроенное определение цветового пространства, но не получилось.

1 Ответ

0 голосов
/ 27 июня 2018

Вы уже достаточно близко.Вы пропустили атрибут изображения, который скажет, что ноль считается прозрачным, и вы сделали альтернативное пространство для цветового пространства разделения немного более сложным, чем было необходимо.Я ожидал бы, что вы написали (если бы он был правильно закодирован), чтобы отобразить графику в голубом и белом цветах и ​​наложить на любой материал, лежащий в основе.

Добавьте атрибут маски к изображению, сказав, что все значения от 0 до0 должны быть замаскированы.Это сделает прозрачными нулевые биты.

Я бы не использовал белый в качестве названия цвета разделения, поскольку это может привести к путанице, если вы действительно не рисуете 1 бит белым, а нулевые биты не вынимаете.Это было бы необычно, но я вижу, как это происходит.Если цвет, который вы хотите нарисовать, не может быть выражен в серой шкале, я бы использовал очень простой альтернативный цвет устройства серый.Вы говорите, что изображение черное и прозрачное, поэтому использование DeviceGray было бы хорошим выбором.

Преобразование цвета разделения (0 не выделен, 1 черный) в альтернативное цветовое пространство (DeviceGray) так же просто, какинвертируя значение Input 1, которое становится DeviceGray 0, а input 0 становится DeviceGray 1. Таким образом, функция postscript является самой быстрой для написания.{1 sub} это все, что нужно.

<</Type /XObject
/Subtype /Image
/Width 800
/Height 600
/ColorSpace <<6 0 R>>
/BitsPerComponent 1
/Mask [0 0]
/Filter /FlateDecode
/DecodeParms <</Predictor 15 /Colors 1 /BitsPerComponent 1 /Columns 800>>
stream
………
endstream
endobj

6 0 obj
[/Separation /White /DeviceGray 7 0 R]
endobj

7 0 0bj
<< 
/FunctionType 4
/Range [0 1]
/Domain [0 1]
/length 7
>> 
Stream
{1 sub}
endstream
endobj
...