2017-07-20 25 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に色を設定しようとしましたが、それは助けになりませんでした。

「隠された」テキストを表示せずにPDFを生成するようにGhostScriptを構成するにはどうすればよいですか?

種類について、 マールテンCoene明らか

答えて

0

まあテキストが隠されていない、その白に誇張されて。

私は3つの可能性のある可能性を見ることができ、あなたが何をしているのか分からずに、私は何が起こっているのか判断できません。

1)明らかに、PDFコンシューマは、PDFファイルを画面上に表示しているか印刷しているかによって、モノクログレーの仕様を「何か他のもの」、通常はRGBですがCMYKにする必要があります。ソリッドテキスト全体がぼんやりと見える場合は、それは起こっていることです。

2)おそらくPDFコンシューマは、2つのテキストセットを正確に一致させません。テキストの部分的なアウトラインが表示された場合は、そのことが起こります。

3)または(ここでは卑劣なビットです)、視聴者が何らかのアンチエイリアスを使用する可能性があります。黒色の下にあるテキストがアンチエイリアス処理されていても、白ではない場合は、一種の「ハロー」が表示されます。テキストの全体の輪郭が見えますが、おそらく薄い灰色ですが、インテリアは白です。

私はあなたの例のファイルを取って、PDFは圧縮されていないと、結果のページの内容をファイルに書き込み、Ghostscriptの現在のHEADバージョンを通してそれを走っている:あなたが見ることができるように、これは純粋な黒を維持

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

あなたの優れた説明をありがとう! :-) Adob​​e Acrobat Readerの「スムーズテキスト」レンダリングオプションを変更した後、黒いフォントは表示されなくなりました...しかし、これはテキストを隠すためのこの「白いフォント」ハックが非常に固い解決策ではないことを示していますpdfビューアの設定に依存するからです。私たちがこれをより良いやり方でやり遂げる方法を提案していますか? –

+0

テキストレンダリングモード3を使用しますか?あなたは、ファイルを解読できる私のような人がテキストを含む何かを即座に破ることができることを認識していますか?また、PDFビューアでテキストを検索することができ、コピー/ペーストが機能するので、単に「すべてを選択」を選択すると、ユーザはそれを見たりコピーしたりすることができます。なぜあなたはテキストを見えないようにしたいのかという理由を説明できますか? – KenS

+0

ポストスクリプトファイルでは、最後のページの最後のテキスト行の後に空きスペースがあることを確認するロジックがあります(署名を入れるのに十分なスペースがあることを確認するため)。最後の行を印刷した後、十分なスペースがあるかどうかチェックし、そうでない場合は、最後のページを非表示にして印刷し直して、そのページの文字数を減らしてもう一度やり直して残りのページを追加しますテキストおそらくもっと良い解決策があるのでしょうか? psファイルの簡単な例を次に示します:https://gist.github.com/anonymous/2a01c51c41f513ed4ab88b4c3dc1b063 –

関連する問題