2012-04-11 10 views
1

Ich habe einen Dienst, der Druckerdaten über TCP/IP empfängt. Wenn die Daten empfangen werden, gibt es eine zuverlässige, effiziente Möglichkeit, den Datenstrom zu untersuchen und festzustellen, ob es sich um PostScript- oder PCL-Daten handelt? Gibt es zum Beispiel Zeichen, nach denen ich am Anfang des Datenstroms suchen könnte, um das Format anzugeben?Ermitteln, ob die empfangenen Daten PostScript oder PCL sind

+0

Sind Ihre Druckclients in ihren übermittelten PostScript- und/oder PCL-Datenstrukturen irgendwie "konsistent"? Wenn ja, kann es sehr einfach sein, den Dateityp zu bestimmen. Wenn nein, erfordert es viel mehr Aufwand ... –

+0

Ja, sie sind konsistent. Ich habe am Ende eine Kombination der Informationen in der Antwort unten verwendet. Ich suche zuerst nach dem Befehl PJL ENTER LANGUAGE. Wenn ich das finde, mache ich die Bestimmung auf der Grundlage dieses Wertes. Ansonsten suche ich nach%! PS, weil alle PostScript-Daten den DSC-Konventionen entsprechen sollten. Wenn ich die Entscheidung immer noch nicht treffen kann, setze ich mich einfach auf PCL, weil das die große Mehrheit der Kunden verwendet. – NYSystemsAnalyst

Antwort

-1

Postscript-Daten müssen mit "%! Ps" oder "%! PS" beginnen - es kann eine länger lesbare Zeichenfolge wie "%! PS-Adobe-3.0" sein - aber das ist im Grunde genommen das.

Am wahrscheinlichsten PCL haben eine ähnliche Signatur - ich erinnere mich, es in der Vergangenheit zu sehen.

+3

Sie müssen vor dem Start von PCL oder PostScript auf PJL-Befehle achten. Wenn Sie am Anfang PJL-Befehle haben, sehen Sie oft einen PJL-Befehl, der Ihnen den folgenden Datentyp mitteilt: "@PJL ENTER LANGUAGE = PCLXL" – BBoy

+3

Während dies bei bestimmten Implementierungen erforderlich sein kann, ist der '/% !.*/ 'string ist keine Anforderung der Postscript-Sprache, je nach PRLM. Es ist Teil der DSC-Konventionen. –

+0

Was ist mit dem Befehl SPRACHE EINGEBEN? Kann man sich darauf verlassen? – NYSystemsAnalyst

0

Ich würde wahrscheinlich nur die Anzahl der Escape-Zeichen in der Datei zählen. PCL wird viele von ihnen haben. Postscript wird mit% Zeichen versehen. Das ist keine perfekte Lösung, aber es ist todschick und ich wette, es wäre tatsächlich ziemlich zuverlässig.

Die einzige "echte" Möglichkeit, die ich dabei sehen kann, besteht darin, die PCL zu analysieren und das Postscript zu analysieren und zu sehen, welches funktioniert.

1

Ich füge meine 2 ¢.

Wie andere hier erwähnt haben, wäre Ihr erster Stich bei der programmatischen Identifizierung des Dokuments, die ersten beiden Zeichen zu betrachten. Wenn es mit %! beginnt, ist es PostScript, wenn es mit einem Escape-Zeichen beginnt (hex 1B, okt 033, ascii 27), da sehr wahrscheinlich PCL mit PCL-Befehlen beginnt, dann ist es PCL. Dadurch werden wahrscheinlich 99% der Dokumente verarbeitet, die Sie verarbeiten müssen. Wenn es noch nicht bekannt ist, können Sie das Dokument nach einer showpage Zeichenfolge durchsuchen. Wenn es PostScript ist, muss es eine Showpage haben, um die Seite zu rendern. Wenn Sie keine finden können und in der Datei Escape-Zeichen vorhanden sind, wissen Sie, dass es sich um PCL handelt, und Sie können sich auf der Seite von PCL befinden, wenn keine Showpage vorhanden ist und keine Escape-Zeichen vorhanden sind Dateien sind gültige PCL und Drucker können sie blocken, wie sie kommen.

Verwandte Themen