首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在PDF中将单色图像打印为分色

在PDF中将单色图像打印为分色
EN

Stack Overflow用户
提问于 2018-06-25 18:38:48
回答 1查看 419关注 0票数 2

我遇到了一些麻烦,当我尝试在pdf中插入图像时,同时更改其色彩空间。现在我有一个png单色图像(8位,1位深),其中1是黑色的,0是透明的(有点像蒙版)。我想将此图像插入到pdf文件中,并将色彩空间更改为分色,因为它需要使用专色打印。有什么方法可以做到这一点吗?

目前,我尝试了以下方法:

代码语言:javascript
运行
复制
<</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>>

这就是分离色彩空间:

代码语言:javascript
运行
复制
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]

我还尝试添加内联的colorspace定义,但不起作用。

EN

回答 1

Stack Overflow用户

发布于 2018-06-28 01:29:36

你们已经很接近了。您错过了将其视为透明的image属性,并且您使分色空间的备用空间比所需的更复杂。我希望你写的东西(如果编码正确)能以青色和白色显示图形,并覆盖任何底层材料。

向图像添加一个Mask属性,说明要对0到0之间的所有值进行掩码。这将使零位变得透明。

我不会使用白色作为分色名称,因为它可能会导致混淆,除非您真的将1位绘制为白色,而将0位保留为未绘制。这将是不寻常的,但我可以看到它的发生。除非你想要绘制的颜色不能用灰度表示,否则我会使用设备灰色这一非常简单的替代颜色。您说图像是黑色和透明的,所以使用DeviceGray将是一个很好的选择。

从分色(0表示未绘制,1表示黑色)转换到交替颜色空间( DeviceGray )与将1的值Input转换为DeviceGray 0,将input 0转换为DeviceGray 1一样简单。因此,编写postscript函数是最快的。{1 sub}就足够了。

代码语言:javascript
运行
复制
<</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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51021506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档