2017-07-20 2 views
0

Ich habe einige Postscript-Dateien, die Text verstecken, indem sie weißen Text darüber anzeigen.GhostScript generierte PDF zeigt versteckten Text

Hier ist ein sehr einfaches Beispiel, das Problem zu veranschaulichen:

%! 

/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 

Wenn ich diese Datei direkt an den Drucker senden, der versteckte Text wird nicht gedruckt.

Allerdings, wenn ich GhostScript (Version 9.21) verwenden, um dieses PS in ein PDF zu konvertieren, kann ich immer noch den Umriss des Textes ein wenig sehen. Dies war der Befehl, den ich verwenden:

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

Ich habe auch versucht, die Farben-Einstellung mit in CMYK, aber das hat nicht geholfen.

Wie kann ich mit GhostScript eine PDF erstellen, ohne diesen "versteckten" Text anzuzeigen?

freundlichen Grüßen Maarten Coene

Antwort

0

Nun offensichtlich der Text nicht verborgen ist, seine in weiß überzogenen gewesen.

Ich kann drei wahrscheinliche Möglichkeiten sehen und ohne zu sehen, was Sie tun, kann ich nicht entscheiden, was passiert.

1) Offensichtlich muss der PDF-Konsument die schwarz-weiß-grauen Spezifikationen in "etwas anderes" umwandeln, normalerweise RGB, aber möglicherweise CMYK, je nachdem, ob Sie die PDF-Datei auf dem Bildschirm betrachten oder drucken. Wenn Sie den gesamten durchgehenden Text sehen, aber schwach, dann passiert das.

2) Möglicherweise entspricht der PDF-Consumer nicht genau den beiden Textsätzen. Wenn Sie Teile des Textes sehen, dann ist das genau so.

3) Oder (hier ist das hinterhältige Bit) möglicherweise verwendet Ihr Betrachter eine Art von Anti-Aliasing. Wenn der zugrunde liegende schwarze Text Anti-Aliasing ist, das weiße aber nicht, dann wird eine Art "Halo" angezeigt. Der gesamte Umriss des Textes wird sichtbar sein, wahrscheinlich in einem schwachen Grau, aber das Innere wird weiß sein.

habe ich Ihre Beispieldatei, und es lief durch die aktuelle HEAD-Version von Ghostscript, die PDF unkomprimierten Datei zu schreiben und die resultierende Seiteninhalt ist:

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 

Wie Sie sehen können, das die reine schwarz unterhält und reine weiße Farbspezifikationen für den Text (der ExtGState setzt den Überdruckmodus einfach auf 1) und positioniert jeden Text an genau derselben Stelle.

Meine Vermutung ist, dass Ihr Betrachter Anti-Aliasing verwendet, um den schwarzen Text, aber nicht den weißen Text zu zeichnen. FWIW Adobe Acrobat zeigt dieses Verhalten nicht für mich.

+0

Danke für Ihre ausgezeichnete Erklärung! :-) Nachdem ich die Renderoption 'Smooth Text' in Adobe Acrobat Reader geändert habe, wird die schwarze Schrift nicht mehr angezeigt ... aber das zeigt, dass diese 'weiße Schrift', um Text zu verbergen, keine sehr solide Lösung ist da es auf Einstellungen des PDF-Viewers ankommt. Hast du irgendwelche Vorschläge, wie wir das besser machen könnten? –

+0

Verwenden Sie Text-Rendering-Modus 3? Sie erkennen, dass alles, was Sie tun, was Text beinhaltet, sofort von jemandem wie mir besiegt werden kann, der die Datei entschlüsseln kann? Es lässt den Text auch in einem PDF-Viewer durchsuchbar, und Kopieren/Einfügen funktioniert, also einfach "Alles auswählen" würde dem Benutzer erlauben, es zu sehen und zu kopieren. Vielleicht könnten Sie erklären, warum Sie möchten, dass der Text unsichtbar ist, aber immer noch vorhanden ist? – KenS

+0

In unseren Postscript-Dateien haben wir eine Logik, um zu überprüfen, dass nach der letzten Textzeile auf der letzten Seite immer ein leerer Platz vorhanden ist (um sicherzustellen, dass genug Platz ist, um eine Signatur darauf zu setzen). Nach dem Drucken der letzten Zeile prüfen wir, ob genügend Speicherplatz verfügbar ist. Wenn nicht, wird die letzte Seite mit dem Text "unsichtbar" wiederhergestellt, mit weniger Text auf der Seite und mit dem Rest eine weitere Seite hinzugefügt der Text. Vielleicht gibt es bessere Lösungen ...? Hier ist ein vereinfachtes Beispiel unserer ps-Datei: https://gist.github.com/anonymous/2a01c51c41f513ed4ab88b4c3dc1b063 –

Verwandte Themen