Linguagem do trabalho da impressora - PDF

0

Recebi um arquivo legível não humano que gostaria de tornar legível para humanos.

Como faço para obter o conteúdo de texto do seguinte arquivo:

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$ 

Eu não acho que seja um arquivo pdf, mas foi print to file 'ed em vez de export pdf ' ed, ou similar, então o resultado é um arquivo em PJL não um pdf.

veja também:

link

Posso usar o ghostscript para recuperá-lo em algo legível por humanos?

São cerca de 4000 linhas de:

�x]�x�

quando visto diretamente com gato ou similar.

    
por Thufir 02.08.2014 / 19:07

2 respostas

2

As linhas @PJL indicam um cabeçalho Idioma de trabalho de impressão que foi inserido antes do trabalho de impressão real. O PJL é usado para controlar as opções de trabalho de impressão (como duplexação, seleção de bandeja de papel, grampeamento, perfuração, dobragem da saída). Foi inventado pela HP.

O formato do trabalho de impressão pode ser qualquer coisa - muitos fornecedores de impressoras suportam e usam para sua própria linguagem de impressora (proprietária).

A parte interessante é o que segue após as linhas de cabeçalho @PJL . poderia ser PDF, ou PostScript, ou PCL, ou qualquer outra coisa.

Também interessante é a linha que diz @PJL ENTER LANGUAGE = ... - geralmente indica com segurança o formato do fluxo de dados de impressão.

No caso do mystery.pdf , este é HBP , um formato que até agora ainda não encontrei.

Se de fato houver outro formato aberto ou semi-aberto (em violação do que a linha ENTER LANGUAGE = ... diz), como PostScript ou PCL, Ghostscript ou GhostPDL poderá convertê-lo em PDF. Basta excluir todas as linhas @PJL do cabeçalho primeiro. Então corra:

Para arquivos PostScript:

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

Para arquivos PCL:

 pcl6 -o out.pdf -sDEVICE=pdfwrite input-file
    
por 08.10.2014 / 20:57
2

A resposta de Kurt está correta. A única adição que gostaria de fazer é que, ao lidar com arquivos PRN do Windows, existem vários tipos de arquivos que são impressos no tipo de arquivo PRN, portanto, verifique se ele é um arquivo PCL. Mesmo depois disso, o pcl usava talvez o MS PCLXL, em cujo caso o pcl6 fica preso. Faça o download do ghostpcl e use o comando:

gpcl6-920-linux_x86_64 -sDEVICE = pdfwrite -o output.pdf arquivo de entrada

    
por 20.01.2017 / 09:59