gpt4 book ai didi

linux - 将 RGB PDF 转换为 CMYK 在 Linux 上保持 100% K(黑色)和 100% M(洋红色)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:04:41 25 4
gpt4 key购买 nike

这与:

Converting (any) PDF to black (K)-only CMYK

你好

首先请原谅我的英语。

这个相关链接对我的问题有 50% 的解决方案。唯一剩下的就是我还需要洋红色为 100% 洋红色。

这里是场景:

我有一个这样的 html:

<font color="magenta">Hello </font>
<font color="#000000"> World </font>

1- 我将其转换为:

/usr/bin/wkhtmltopdf file.html output1.pdf

2 - 将黑色文本转换为 100% k:

gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=ps2write \
-sOutputFile=output1.ps \
output1.pdf

# PS to PDF using replacement function in HackRGB-cmyk-inv.ps
gs \
-dNOPAUSE \
-dBATCH \
-sDEVICE=pdfwrite \
-sOutputFile=output2.pdf \
/HackRGB-cmyk-inv.ps \
output1.ps

现在我有一个 output2.pdf,其中黑色文本是 100% K 但洋红色不是 100% M...

这里是HackRGB-cmyk-ink.ps(postscript)的内容供引用:

%!
/oldsetrgbcolor /setrgbcolor load def
/setrgbcolor {
(in replacement setrgbcolor\n) print
%% R G B
1 index 1 index %% R G B G B
eq { %%
2 index 1 index %% R G B R B
eq {
%% Here if R = G = B
pop pop %% remove two values
% setgray % "replace the 'setgray' with":
0 0 0 4 -1 roll % setcmykcolor
-1 mul %% obtain -R on top of stack
1 add %% obtain 1-R on top of stack
setcmykcolor %% now set(cmykcolor) K (as 1-R)
} {
oldsetrgbcolor %% set the RGB values
} ifelse
}{
oldsetrgbcolor %% Set the RGB values
}ifelse

} bind def
/oldsetgray /setgray load def
/setgray {
(in replacement setgray\n) print
% == % debug: pop last element and print it
% here we're at a gray value;
% http://www.tailrecursive.org/postscript/operators.html#setcymkcolor
% setgray: "gray-value must be a number from 0 (black) to 1 (white)."
% setcymkcolor: "The components must be between 0 (none) to 1 (full)."
% so convert here again:
0 0 0 4 -1 roll % push CMY:000 after Gray and roll down,
% so top of stack becomes
% ...:C:M:Y:Gray
-1 mul %% obtain -Gray on top of stack
1 add %% obtain 1-Gray on top of stack
setcmykcolor %% now set(cmykcolor) K (as 1-Gray)
} bind def


%~ # test: rgb2gray
%~ gs -dNOPAUSE -dBATCH -sDEVICE=ps2write -sOutputFile=./blah-slide-hackRGB-gray.ps ./HackRGB.ps ./blah-slide-gsps2w.ps
%~ # gray2cmyk
%~ gs -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sOutputFile=./blah-slide-hackRGB-gray-ci.pdf ./HackRGB-cmyk-inv.ps ./blah-slide-hackRGB-gray.ps
%~ # check separations - looks OK
%~ gs -sDEVICE=tiffsep -dNOPAUSE -dBATCH -dSAFER -dFirstPage=1 -dLastPage=1 -sOutputFile=p%02d.tif blah-slide-hackRGB-gray-ci.pdf && eog p01.tif 2>/dev/null

关于如何做的一些想法?

问候。

最佳答案

这是一个快速破解的技巧。在 oldsetrgbcolor 之后,您可以检查 cmyk 颜色并修改它。也许今晚我可以制作一个更通用的模块,将其剪切以检查 50% 洋红色并将其更改为 100%。 (cmyk-) print pstack 行将显示找到的 cmyk 颜色,如果计算出的颜色不完全是 .5,您可能需要它,就像它可能是 .49,所以一旦您看到这些值, 删除线。

  }{
oldsetrgbcolor %% Set the RGB values
}ifelse

  }{
oldsetrgbcolor %% Set the RGB values
currentcmykcolor %puts 4 numbers on the stack
(cmyk-) print pstack %display the colors (remove when things work correctly)
3 -1 roll %put magenta on top of stack
dup %make copy of magenta value
.5 %put magenta test value on stack (then may not be exactly .5, see pstack)
eq %see of magenta is equal to test value (.5)
{pop 1}if %if it is equal, pop off the .5 and put a 1 onto the stack
3 1 roll %put magenta back where it belongs in the stack
setcmykcolor %reset the cmyk to have new magenta value
}ifelse

关于linux - 将 RGB PDF 转换为 CMYK 在 Linux 上保持 100% K(黑色)和 100% M(洋红色),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15115990/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com