Druckerauftragssprache -> PDF

3905
Thufir

Ich habe eine nicht für Menschen lesbare Datei erhalten, die ich für Menschen lesbar machen möchte.

Wie gehe ich vor, um den Textinhalt aus der folgenden Datei zu erhalten:

thufir@dur:~/Documents$  thufir@dur:~/Documents$ file mystery.pdf  mystery.pdf: HP Printer Job Language data thufir@dur:~/Documents$  thufir@dur:~/Documents$ pdfinfo mystery.pdf  Syntax Warning: May not be a PDF file (continuing anyway) Syntax Error: Couldn't find trailer dictionary Syntax Error: Couldn't read xref table thufir@dur:~/Documents$  thufir@dur:~/Documents$ head -n 2 mystery.pdf  %-12345X@PJL @PJL ENTER LANGUAGE = HBP thufir@dur:~/Documents$  

Ich glaube nicht, dass es sich um eine PDF-Datei handelt, sondern print to filestattdessen export pdfoder ähnlich geschrieben wurde. Das Ergebnis ist also eine Datei in PJL, keine PDF-Datei.

siehe auch:

http://forums.fedoraforum.org/showthread.php?t=247913

Ich kann Ghostscript verwenden, um es wieder in etwas lesbares zu bringen.

Es geht um 4000 Zeilen von:

�x]�x� 

bei direkter Betrachtung mit Katze oder ähnlichem.

0
Können Sie `head -n 50 mystery.pdf` ausführen und sehen, ob nach dem Ende der @ PJL-Zeile eine`% PDF-1.X`-Zeile erscheint? Kurt Pfeifle vor 9 Jahren 0

2 Antworten auf die Frage

2
Kurt Pfeifle

Die @PJLZeilen zeigen eine Druckauftragssprachenkopfzeile an, die vor dem eigentlichen Druckauftrag eingefügt wurde. PJL wird zur Steuerung von Druckauftragsoptionen verwendet (z. B. Duplexdruck, Auswahl der Papierkassette, Heften, Lochen, Falten der Ausgabe). Es wurde von HP erfunden.

Das Format des Druckauftrags kann beliebig sein - viele Druckerhersteller unterstützen und verwenden es für ihre eigene (proprietäre) Druckersprache.

Der interessante Teil ist das, was nach den @PJLKopfzeilen folgt . Es könnte PDF oder Postscript oder PCL, oder irgendetwas anderes sein.

Interessant ist auch die Zeile, die @PJL ENTER LANGUAGE = ...normalerweise das Format des Druckdatenstroms zuverlässig anzeigt.

Im Falle von mystery.pdf ist dies HBPein Format, das ich bisher noch nicht kennengelernt habe.

Wenn tatsächlich ein anderes offenes oder halboffenes Format folgt (entgegen den ENTER LANGUAGE = ...Zeilenangaben), wie PostScript oder PCL, kann Ghostscript oder GhostPDL es in PDF konvertieren. Löschen Sie zuerst alle @PJLZeilen aus der Kopfzeile. Dann renne:

Für PostScript-Dateien:

 gs -o out.pdf -sDEVICE=pdfwrite input-file 

Für PCL-Dateien:

 pcl6 -o out.pdf -sDEVICE=pdfwrite input-file 
Verzeihung, ich habe nie eine Chance bekommen, das zu versuchen, ich glaube nicht, dass ich die Datei überhaupt noch habe. Als richtig markiert Thufir vor 7 Jahren 0
2
Akshay

Kurts Antwort ist richtig. Der einzige Zusatz, den ich hinzufügen möchte, ist, dass beim Umgang mit PRN-Dateien unter Windows mehrere Dateitypen unter PRN-Dateityp gedruckt werden. Stellen Sie also sicher, dass es sich um eine PCL-Datei handelt. Auch danach verwendete pcl möglicherweise MS PCLXL, in diesem Fall pcl6. Laden Sie ghostpcl herunter und verwenden Sie den Befehl:

gpcl6-920-linux_x86_64 -sDEVICE = pdfwrite -o output.pdf Eingabedatei

Danke für diesen Vorschlag! Das Debian-gepackte Ghostscript ist bei mir komplett fehlgeschlagen, aber GhostPCL hat den Trick geleistet. Mr. DOS vor 6 Jahren 0