将单色图像打印为PDF中的分离色

时间:2018-06-25 10:38:48

标签: pdf printing color-space monochrome

在更改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)

您已经很接近了。您错过了将告诉您将零视为透明的image属性,并且使分隔色空间的备用空间比所需的复杂得多。我本来希望您编写的内容(如果编码正确)能够以青色和白色显示图形并覆盖所有基础材料。

在图像上添加“遮罩”属性,表示将遮罩0到0之间的所有值。这将使零位透明。

我不会将白色用作分隔色名称,因为这会引起混淆,除非您确实将1位绘制为白色,而未绘制0位。这将是不寻常的,但我可以看到它的发生。除非您要绘制的颜色无法用灰度表示,否则我将使用设备灰度的非常简单的替代颜色。您说图像是黑色且透明的,因此使用DeviceGray是一个不错的选择。

从分色(未绘制0,黑色为1)转换为备用颜色空间(DeviceGray)就像将值Input 1转换为DeviceGray 0,将输入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