GhostScript生成的PDF显示隐藏文本

时间:2017-07-20 12:45:18

标签: ghostscript

我有一些通过在其上显示白色文字来隐藏文本的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?

亲切的问候, Maarten Coene

1 个答案:

答案 0 :(得分:0)

很明显,文字没有被隐藏,它已经透支了白色。

我可以看到三种可能的可能性而且看不到你做了什么,我无法确定发生了什么。

1)显然,PDF消费者必须将黑白灰色规格转换为“其他”,通常是RGB,但可能是CMYK,具体取决于您是在屏幕上查看PDF文件还是打印它。如果你看到整个纯文本,但是微弱,那就是发生了什么。

2)可能PDF用户没有准确地匹配这两组文本。如果您看到文本的部分轮廓,那就是正在发生的事情。

3)或者(这里是偷偷摸摸的位)可能你的观众使用某种抗锯齿。如果黑色底层文本是消除锯齿的,但白色不是,那么你会看到一种“晕”。文本的整个轮廓将是可见的,可能是微弱的灰色,但内部将是白色。

我拿了你的示例文件,并通过当前的HEAD版本的Ghostscript运行它,编写未压缩的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不会为我显示此行为。