Estou tentando converter um .docx recebido pelo correio em um pdf correto usando o pandoc (estou usando o GNU / Linux).
Tenho um erro em relação à codificação de caracteres:
$ pandoc file.docx -o file.pdf
pandoc: Cannot decode byte '\x87': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream
Eu tentei identificar a codificação:
$ file -i file .docx
file.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary
Estou um pouco surpreso com charset=binary
(eu estava esperando charset=iso8859-15
). No entanto, tentei converter o .docx para utf8 de qualquer maneira e não está funcionando:
$ iconv -t utf-8 file.docx
P! $iconv: séquence d'échappement non permise à la position 16
Eu tenho o mesmo erro com a linha de comando da documentação do pandoc :
iconv -t utf-8 file.docx | pandoc | iconv -f utf-8
Como posso converter este arquivo .docx para pdf com pandoc?
iconv
um conjunto de caracteres de origem, usando o-f
sinalizador. Por exemplo,iconv -f ISO-8859-15 -t utf-8 file.docx
pode funcionar. No entanto, não faço idéia do formato de um arquivo .docx.iconv
diretamente em um.docx
arquivo funcione.iconv
assume que sua entrada é um arquivo de texto em algum formato especificado ou inferido. Um.docx
arquivo é na verdade um arquivo zip (um arquivo compactado) contendo (principalmente) arquivos xml. É possível que você tenha alguma sorte em descompactar o.docx
arquivo, executandoiconv
nos arquivos constituintes e depois compactando tudo novamente em um novo.docx
, mas eu não apostaria que ele funcione. Por um lado, o arquivo xml que contém o conteúdo real do documento especifica sua codificação:encoding="UTF-8"
por exemplo.Respostas:
Na documentação aqui ,
.docx
não está listada como uma entrada compatível :Tente outra coisa, como o Libreoffice - que pode executar docx, desde que você não se importe com alguns erros de formatação.
EDITAR:
A descrição agora diz que o Pandoc agora parece suportar a leitura do Word DOCX (assim como o DocBook e alguns outros formatos):
Como o @evilsoup sugeriu, isso pode funcionar:
Sim, você pode usar o comando libreoffice com
--outdir
, mas a saída html nem sempre funciona dessa maneira ...Fiz um teste rápido e pareceu funcionar, além do travamento de Pandoc devido a uma imagem gif no documento
fonte
<BR>
s do html).Isso ainda aparece nas pesquisas do Google, então eu queria colocar isso no registro: o pandoc não conseguiu ler o docx quando essa pergunta foi feita (o erro ocorre ao tentar ler um arquivo binário), mas desde a versão 1.13 ele pode, e faz um bom trabalho disso.
fonte