terça-feira, 4 de setembro de 2018

Visualizar e alterar o cabeçalho de um arquivo

Olá, mundo.

Alguém já teve o desprazer de fazer o download de uma arquivo PDF e não conseguir exibi-lo no visualizador padrão?

Isso já aconteceu comigo algumas vezes, mas hoje precisei abrir um documento neste formato digital e simplesmente apareceu: NADA. A tela fica toda preta dentro do visualizador de PDF. Utilizo o Zathura, software que lhe permite escolher qual biblioteca será utilizada como backend para visualizar os PDFs (optei pela mais utilizada - poppler) e é altamente customizável através de plugins, entre outros recursos.

Daí veio a idéia de debugar através do terminal. Executei o comando com o nome do arquivo:

zathura arquivo.pdf

Eis que apareceu o erro error: Unknown file type: 'application/octet-stream', o que me permitiu identificar que o cabeçalho do arquivo não estava dentro do padrão PDF.

Com a ferramenta hexdump consegui visualizar os bytes não deveriam preceder o %PDF1.4.

hexdump -C arquivo.pdf | more

00000000  0d 0a 0d 0a 0d 0a 0d 0a  0d 0a 0d 0a 0d 0a 0d 0a  |................|
*
00000030  0d 0a 0d 0a 25 50 44 46  2d 31 2e 34 0a 25 e2 e3  |....%PDF-1.4.%..|
00000040  cf d3 0a 32 20 30 20 6f  62 6a 0a 3c 3c 2f 4c 65  |...2 0 obj.<</Le|
00000050  6e 67 74 68 20 34 38 37  39 2f 46 69 6c 74 65 72  |ngth 4879/Filter|
00000060  2f 46 6c 61 74 65 44 65  63 6f 64 65 3e 3e 73 74  |/FlateDecode>>st|
00000070  72 65 61 6d 0a 78 da a5  5a 0b 98 15 c5 95 ae d3  |ream.x..Z.......|

Daí, resolvi abrir o arquivo pelo VIM e ele apareceu assim:

^M
^M
^M
^M
%PDF-1.4
%âãÏÓ
2 0 obj
<</Length 4879/Filter/FlateDecode>>stream

Foram 26 linhas com o caractere ^M. Deletei essas linhas e salvei o arquivo.

Problema resolvido.

Após essa alteração a saída do comando hexdump -C arquivo.pdf passou a exibir a primeira linha assim:

00000000  25 50 44 46 2d 31 2e 34  0a 25 e2 e3 cf d3 0a 32  |%PDF-1.4.%.....2|

e o arquivo pôde ser aberto normalmente.

Share:

0 comments:

Postar um comentário