为什么ghost脚本在检测总墨水覆盖率时结果是相同的值CMYK?(PHP)

时间:2017-05-06 03:50:59

标签: php pdf system ghostscript unoconv

我试图将.doc文件转换为pdf文件,引用Convert Word doc, docx and Excel xls, xlsx to PDF with PHP,并成功转换为pdf ,,,当我用ghost脚本检测总墨水覆盖率时,CMYK的结果fil值相同喜欢,,,

  

PAGE 1
0.8557 0.8557 0.8557 0.8557 CMYK OK

正确的结果是

  

PAGE 1
0.0000 0.0000 0.0000 1.0000 CMYK OK   
因为我的文件包含所有黑色字体

`My php script for convert to pdf`

$result = exec('"C:\Program Files (x86)\OpenOffice 4\program\python.exe"
D:\wamp\www\doc_to_pdf\libobasis4.4-pyuno\unoconv -f pdf -o
D:/wamp/www/doc_to_pdf/files/'.$pdf_File_name.'
D:/wamp/www/doc_to_pdf/files/'.$doc_file_name);
  

我的幽灵剧本   
-o - -sDEVICE = inkcov E:/fileconverted.pdf

BTW我使用openoffice和unoconv

1 个答案:

答案 0 :(得分:3)

您可能认为您的文件仅包含黑色文本,实际上它可能在某种意义上确实存在,但是......

因为您使用的是文字处理器而不是图形艺术应用程序,所以文本颜色几乎可以在RGB颜色空间中指定。因此,如果您要求50%绿色文本,您将无法获得50%青色,50%黄色,0%洋红色和0%黑色,您得到的是0%红色,50%绿色和0%蓝色。这是因为毕竟驱动RGB显示器的操作系统在RGB空间中工作。

对于黑色文本(R = G = B = 0),当您将其转换为CMYK时,它变为C = M = Y = 0,K = 1。这是色彩空间转换的众所周知的问题。

简而言之,您所看到的是正确的,问题在于您的期望。

我认为您创建的PDF文件也会指定RGB中文本的颜色。当您使用inkcov设备时,这会导致Ghostswcript使用标准的PostScript / PDF转换算法将RGB转换为CMYK。有关从RGB到CMYK的标准转换,请参阅PostScript语言参考手册的第476页。

还有其他方法可以处理这种转换,但它很复杂,我需要知道为什么在提出任何建议之前你想要CMYK墨水覆盖。

当然,由于你还没有发布一个示例文件来研究,这都是猜测。如果您想提供一个示例,我会查看并检查。

[查看文件后]

是的,所有颜色都在DeviceRGB中指定。

不仅如此,每个页面还定义了一个透明度组,其混合空间为RGB。因此,即使文本是在CMYK中绘制的,也会将其转换为RGB以进行透明度混合。是的我知道该文件没有任何透明对象,但很多不太明亮的PDF生产者发出透明组,即使他们实际上并没有使用任何透明内容。使用开罗的任何东西都特别容易受此影响。

基本上,Ghostscript的inkcov设备告诉你的是正确的,这是因为你的内容是RGB格式的结果。

现在,如果您告诉我为什么这是一个问题,我可能能够提供帮助。虽然存在透明度组,但这可能很困难。