Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何定义颜色空间并将其设置在PDF中的图像上?_Pdf_Color Space - Fatal编程技术网

如何定义颜色空间并将其设置在PDF中的图像上?

如何定义颜色空间并将其设置在PDF中的图像上?,pdf,color-space,Pdf,Color Space,我使用的应用程序以编程方式生成PDF。我被要求添加设置图像颜色空间的功能,这应该是相同的。目前,我的代码生成的颜色空间如下所示: 3 0 obj << /N 3 /Alternate /DeviceRGB /Length 284 /Filter [/FlateDecode] >> stream 8c``2ptqre``ÈÍ+) rwRˆˆŒR`¿ÀÀÁÀÍ Ì`Ì`˜\\ààà yùy© |»ÆÀ¢/ë‚Ì”Ǹ’ŠJ€ô 6JI-Nf``4 ²³ËK €âŒs€l‘¤

我使用的应用程序以编程方式生成PDF。我被要求添加设置图像颜色空间的功能,这应该是相同的。目前,我的代码生成的颜色空间如下所示:

3 0 obj
<<
/N 3
/Alternate /DeviceRGB
/Length 284
/Filter [/FlateDecode]
>>
stream
8c``2ptqre``ÈÍ+)
rwRˆˆŒR`¿ÀÀÁÀÍ Ì`Ì`˜\\ààà yùy© |»ÆÀ¢/ë‚Ì”Ǹ’ŠJ€ô 6JI-Nf``4 ²³ËK
€âŒs€l‘¤l0{ˆ]äd²ùÒ!ì+ v„ýÄ.zÈþRŸf3q€Í°e@ì’Ô
½Îù•E™é%
F
Ž)ùI©
Á•Å%©¹Å
žyÉùEùE‰%©)@µ÷ D!(Ä4---4Iô7A Šës 8|ÅÎ Ä ¹´¨Êdd2&ÌG˜1G‚Á)Ë„˜I/Ãþ©15C}†}s ïPo
endstream
endobj
4 0 obj
[/ICCBased 3 0 R]
endobj
23 0 obj
<<
/Type /XObject 
/Subtype /Image 
/Name /I5 
/Length 2995953 
/Width 3675 
/Height 3675 
/Filter /DCTDecode 
/ColorSpace 4 0 R
/BitsPerComponent 8
>>
stream
基于扫描另一个带有图像的PDF,这看起来是有效的。如果我不尝试替换颜色空间,而是使用“/Colorspace/DeviceRGB”,则PDF可以正常加载

我知道我可能错过了一些重要的东西,但我不知道是什么


假设您在PDF中有一个有效的图像XObject,该对象当前以特定的颜色空间表示,例如DeviceCMYK。如果您希望更改该图像以使用不同的颜色空间,例如DeviceRGB(我将暂且不谈您这样做的原因),那么通常您必须将图像数据从一个转换到另一个

否则,如果您只是更改所引用的颜色空间,则可能会导致图像未按预期显示(例如,看起来倒置或颜色混淆)。你可能会遇到这样的情况,图像数据看起来没有改变,但是如果你没有正确地改变图像数据,这将是一个非常脆弱的方法


如果您提到您正在使用的API,例如用于处理PDF的API,您可能会得到更有用的答案。

问题在于交叉引用索引,它缺少
4 0 R
对象
[/ICCBased 3 0 R]
的条目

我在使用xpdf打开PDF时注意到了这个问题,它给出了错误:
内部错误:找不到xref num 25,但需要它,请尝试重新构建

在那里,我使用文本编辑器手动对照实际对象交叉检查交叉引用表,以找到丢失的对象

外部参照表需要进行一些小的编辑,如下所示:


外部参照

0 26%%您对在纯二进制数据中使用特殊ASCII字符有信心吗?或者这只是一个模拟视图,而实际数据是压缩颜色空间的正确二进制形式?实际数据确实是压缩颜色空间。如果它能让事情变得不那么混乱,我可以用一个注释代替它,即没有显示数据,就像我对图像数据所做的那样。你对ICC流数据中的数据有信心吗?(正确读取、编码且源ICC为RGB类型)@矮化不是100%。这都是一个有效的ICC配置文件,我可以将其插入ImageMagick以转换图像,但我还没有找到任何关于是否将整个内容转储到PDF中的指导,或者我是否只需要使用其中的一部分,或者以某种方式转换它的指导。在指定颜色配置文件之前,我不会在打开PDF时出错。不确定它是否解释了此问题,但xref缺少一个条目。对于
4 0 R
。已手动添加如下内容:
xref 0 26 0000000000 65535 f 000000000 9 00000 n 0000000 201 00000 n 0000000 253 00000 n 0000000 638 00000 n%图像已以正确的颜色空间输出。我们只想将该颜色空间存储在PDF中,以便打印机可以使用它来调整最终产品。至于API,它是一个自制的API,只写标签。
endstream
endobj