GhostScript 生成的 PDF 显示隐藏文本

GhostScript generated PDF shows hidden text

我有一些 postscript 文件通过在其顶部显示白色文本来隐藏文本。

这里有一个非常简单的例子来说明这个问题:

%!

/Times-Roman findfont
20 scalefont
setfont

newpath
0 setgray
72 72 moveto
(Hello, world!) show   % Show some text
72 72 moveto
1 setgray
(Hello, world!) show   % Hide some text

showpage

如果我将此文件直接发送到打印机,则不会打印隐藏文本。

但是,当我使用GhostScript(9.21版)将这个PS转换为PDF时,我还是能看到一点点文字的轮廓。这是我使用的命令:

gswin32.exe -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=C:\temp\output.pdf test.ps

我也尝试过将颜色设置为 CMYK,但这没有帮助。

如何配置 GhostScript 生成 PDF 而不显示此 'hidden' 文本?

亲切的问候, 马丁·科恩

显然文本没有被隐藏,它被白色透支了。

我可以看到三种可能的可能性,但在没有看到你所做的情况下,我无法决定发生了什么。

1) 显然,PDF 用户必须将黑白灰度规范转换为 'something else',通常是 RGB,但也可能是 CMYK,具体取决于您是在屏幕上查看 PDF 文件还是打印它。如果您看到整个实心文本,但模糊不清,那就是正在发生的事情。

2) PDF 用户可能没有准确匹配两组文本。如果您看到文本的部分轮廓,那么就是这样。

3) 或者(这是偷偷摸摸的一点)您的观众可能使用了某种抗锯齿功能。如果黑色的底层文本是抗锯齿的,但白色的不是,那么你会看到一种 'halo'。文本的整个轮廓将可见,可能呈淡灰色,但内部为白色。

我拿了你的示例文件,运行它通过当前的 Ghostscript HEAD 版本,写入未压缩的 PDF 文件,结果页面内容是:

5 0 obj
<</Length 6 0 R>>
stream
q 0.1 0 0 0.1 0 0 cm
/R7 gs
0 g
q
10 0 0 10 0 0 cm BT
/R8 20 Tf
1 0 0 1 72 72 Tm
(Hello, world!)Tj
ET
Q
1 g
q
10 0 0 10 0 0 cm BT
/R8 20 Tf
1 0 0 1 72 72 Tm
(Hello, world!)Tj
ET
Q
Q
endstream
endobj

如您所见,这保持了文本的纯黑色和纯白色颜色规范(ExtGState 只是将套印模式设置为 1)并将每段文本精确地定位在相同的位置。

我的猜测是您的查看器正在使用消除锯齿来绘制黑色文本,而不是白色文本。 FWIW Adob​​e Acrobat 不会为我显示此行为。