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

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

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 'ed вместо export pdf ' или аналогичный, так что в результате получается файл в формате PJL, а не PDF.

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

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

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

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

�x]�x�

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

2 ответа2

2

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

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

2

@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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .