2017-07-20 21 views
0

我有一些附加文本,通過在其上顯示白色文本的附加文件。GhostScript生成的PDF顯示隱藏文本

這是一個非常簡單的例子來說明這個問題:

%! 

/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而不顯示此「隱藏」文本?

親切的問候, 馬騰克納

回答

0

很明顯嘛文本不是隱藏的,在白色的被透支。

我可以看到三種可能的可能性,沒有看到你做了什麼,我不能決定發生了什麼。

1)很顯然,PDF格式的消費者必須將黑白灰規格變成「別的東西」,通常是RGB,但可能是CMYK,這取決於您是在屏幕上查看PDF文件還是打印它。如果你看到整個固體文本,但微弱,那就是發生了什麼。

2)可能PDF使用者並不精確地匹配這兩組文本。如果您看到文本的部分輪廓,那就是發生了什麼。 3)或者(這裏是鬼鬼祟祟的一點)可能你的觀衆使用某種反鋸齒。如果黑底下的文本是反鋸齒的,但白色不是,那麼你會看到一種'暈'。文字的整個輪廓可以看到,可能是灰色的,但內部是白色的。

我把你的示例文件,並運行它通過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不會爲我顯示這種行爲。

+0

感謝您的出色解釋! :-)在Adobe Acrobat Reader中更改「平滑文本」渲染選項後,黑色字體不再顯示......但這說明這種'白色字體'破解隱藏一些文本不是一個非常穩固的解決方案因爲它取決於PDF查看器的設置。你有什麼建議,我們如何能以更好的方式做到這一點? –

+0

使用文本渲染模式3?你確實意識到,你所做的任何涉及文本的事情都可以被像我這樣可以解碼文件的人瞬間擊敗?它也使文本可以在PDF查看器中搜索,並且複製/粘貼將起作用,所以只需「全選」就可以讓用戶查看並複製它。也許你可以解釋爲什麼你想讓文本看不見但仍然存在? – KenS

+0

在我們的postscript文件中,我們有一些邏輯來檢查在最後一頁上的最後一行文本之後總是有一定量的空白空間(以確保有足夠的空間來放置簽名)。因此,在打印最後一行後,我們檢查是否有足夠的可用空間,如果沒有,我們通過使文本不可見再次打印最後一頁,並在該頁面上用較少的文本再次重試,並添加額外頁面,其餘頁面文本。也許有更好的解決方案......?下面是我們的ps文件的一個簡單示例:https://gist.github.com/anonymous/2a01c51c41f513ed4ab88b4c3dc1b063 –