Estoy tratando de convertir un .docx recibido por correo a un pdf correcto usando pandoc (estoy usando GNU / Linux).
Tengo un error relacionado con la codificación de caracteres:
$ pandoc file.docx -o file.pdf
pandoc: Cannot decode byte '\x87': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream
Traté de identificar la codificación:
$ file -i file .docx
file.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary
Estoy un poco sorprendido por charset=binary
(esperaba charset=iso8859-15
). Sin embargo, intenté convertir el .docx a utf8 de todos modos y no funciona:
$ iconv -t utf-8 file.docx
P! $iconv: séquence d'échappement non permise à la position 16
Tengo el mismo error con la línea de comando de la documentación de pandoc :
iconv -t utf-8 file.docx | pandoc | iconv -f utf-8
¿Cómo puedo convertir este .docx a pdf con pandoc?
iconv
un conjunto de caracteres de origen, utilizando la-f
bandera. Por ejemplo,iconv -f ISO-8859-15 -t utf-8 file.docx
podría funcionar. Sin embargo, no tengo idea de cuál es el formato de un archivo .docx.iconv
directamente en un.docx
archivo.iconv
asume que su entrada es un archivo de texto en algún formato especificado o inferido. Un.docx
archivo es en realidad un archivo zip (un archivo comprimido) que contiene (principalmente) archivos xml. Es posible que tenga suerte descomprimiendo el.docx
archivo, ejecutándoseiconv
en los archivos constituyentes y luego volviendo a comprimir todo en uno nuevo.docx
, pero no apostaría a que funcione. Por un lado, el archivo xml que contiene el contenido real del documento especifica su codificación:encoding="UTF-8"
por ejemplo.Respuestas:
En la documentación aquí ,
.docx
no aparece como entrada compatible :Pruebe con otra cosa, como Libreoffice , que puede hacer docx, siempre y cuando no le importe algunos errores de formato.
EDITAR:
La descripción ahora dice que Pandoc ahora parece admitir la lectura de Word DOCX (así como DocBook y algunos otros formatos):
Como @evilsoup sugirió, esto podría funcionar:
Sí, puede usar el comando libreoffice con
--outdir
, pero la salida html no siempre funciona de esa manera ...Le di a esto una prueba rápida, y parecía funcionar, aparte de la falla de Pandoc debido a una imagen gif en el documento
fuente
<BR>
s del html).Esto todavía aparece en las búsquedas de Google, así que quería poner esto en el registro: pandoc no pudo leer docx cuando se hizo esta pregunta (el error proviene de intentar leer un archivo binario) pero desde la versión 1.13 puede, y hace un muy buen trabajo de eso.
fuente