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

why ghost script in detect total ink coverage the result was same value CMYK?(PHP)

我试图将 .doc 文件转换为 pdf 文件(参考 Convert Word doc, docx and Excel xls, xlsx to PDF with PHP,并成功转换为 pdf,,,当我用幽灵脚本检测到总墨水覆盖率时,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
because my file contain all black font

`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);

my ghost script
-o - -sDEVICE=inkcov E:/fileconverted.pdf

顺便说一句,我使用 openoffice 和 unoconv

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

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

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

所以总之,你看到的是对的,问题出在你的期望上。

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

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

当然,既然你没有贴出示例文件来研究,这都是猜测。如果您愿意提供示例,我会查看并检查。

[查看文件后]

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

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

所以基本上,Ghostscript 的 inkcov 设备告诉你的是正确的,这是因为你的内容是 RGB。

现在,如果您告诉我为什么这是个问题,我可能 可以提供帮助。尽管考虑到透明组的存在,这可能很困难。