Язык работы принтера -> PDF

3842
Thufir

Я получил нечитаемый человеком файл, который хотел бы сделать читаемым человеком.

Как мне получить текстовое содержимое из следующего файла:

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$  

Я вообще не думаю, что это PDF-файл, но он был print to file«отредактирован вместо export pdf» и т. Д., Так что в результате получается файл в формате PJL, а не в формате PDF.

смотрите также:

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

Я могу использовать ghostscript, чтобы вернуть его в нечто читаемое человеком?

Это около 4000 строк:

�x]�x� 

при непосредственном рассмотрении с кошкой или подобным.

0
Можете ли вы запустить `head -n 50 mystery.pdf` и посмотреть, появляется ли после конца строк` @ PJL` строка `% PDF-1.X`? Kurt Pfeifle 9 лет назад 0

2 ответа на вопрос

2
Kurt Pfeifle

В @PJLлинии указывают на язык задания печати заголовок, который был вставлен до работы фактической печати. PJL используется для управления параметрами задания на печать (такими как двусторонняя печать, выбор лотка для бумаги, сшивание, перфорирование, сворачивание вывода). Это было изобретено HP.

Формат задания печати может быть любым - многие поставщики принтеров поддерживают его и используют для своего (собственного) языка принтера.

Интересно то, что следует после того, как в @PJLстроках заголовков. Это может быть PDF, PostScript, PCL или что-то еще.

Также интересна строка с надписью @PJL ENTER LANGUAGE = ...- она ​​обычно достоверно указывает формат потока данных печати.

В случае с mystery.pdf это HBPформат, с которым я еще не сталкивался.

Если действительно существует следующий открытый или полуоткрытый формат (в нарушение того, что ENTER LANGUAGE = ...написано в строке), например PostScript или PCL, Ghostscript или GhostPDL смогут преобразовать его в PDF. Просто удалите все @PJLстроки из заголовка в первую очередь. Затем запустите:

Для файлов PostScript:

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

Для файлов PCL:

 pcl6 -o out.pdf -sDEVICE=pdfwrite input-file 
простите, у меня никогда не было возможности попробовать это, я не думаю, что у меня даже есть файл больше. Помечено как правильное. Thufir 8 лет назад 0
2
Akshay

Курт ответ правильный. Единственное добавление, которое я хотел бы сделать, заключается в том, что при работе с файлами PRN из Windows существует несколько типов файлов, которые печатаются в соответствии с типом файла PRN, поэтому убедитесь, что это файл PCL. Даже после этого pcl использовал MS PCLXL, и в этом случае pcl6 отключился. Скачайте ghostpcl и используйте команду:

gpcl6-920-linux_x86_64 -sDEVICE = pdfwrite -o output.pdf input-file

Спасибо за это предложение! Упакованный в Debian Ghostscript полностью провалился на меня, но GhostPCL добился цели. Mr. DOS 6 лет назад 0

Похожие вопросы