Печать монохромного изображения в цвете разделения в PDF

У меня возникли некоторые проблемы при попытке вставить изображения в 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 до 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
Другие вопросы по тегам