J'essaie de convertir un .docx reçu par mail en un pdf correct en utilisant pandoc (j'utilise GNU / Linux).
J'ai une erreur concernant l'encodage des caractères:
$ pandoc file.docx -o file.pdf
pandoc: Cannot decode byte '\x87': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream
J'ai essayé d'identifier l'encodage:
$ file -i file .docx
file.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary
Je suis un peu surpris par charset=binary
(je m'y attendais charset=iso8859-15
). Cependant, j'ai quand même essayé de convertir le .docx en utf8 et cela ne fonctionne pas:
$ iconv -t utf-8 file.docx
P! $iconv: séquence d'échappement non permise à la position 16
J'ai la même erreur avec la ligne de commande de la documentation pandoc :
iconv -t utf-8 file.docx | pandoc | iconv -f utf-8
Comment puis-je convertir ce .docx en pdf avec pandoc?
iconv
un jeu de caractères source, en utilisant le-f
drapeau. Par exemple,iconv -f ISO-8859-15 -t utf-8 file.docx
pourrait fonctionner. Cependant, je n'ai aucune idée du format d'un fichier .docx.iconv
directe sur un.docx
fichier fonctionne.iconv
suppose que son entrée est un fichier texte dans un format spécifié ou déduit. Un.docx
fichier est en fait un fichier zip (une archive compressée) contenant (principalement) des fichiers xml. Vous pourriez peut-être avoir de la chance en décompressant le.docx
fichier, en exécutanticonv
les fichiers constitutifs, puis en recompressant le tout dans un nouveau.docx
, mais je ne parierais pas que cela fonctionne. D'une part, le fichier xml contenant le contenu réel du document spécifie son encodage:,encoding="UTF-8"
par exemple.Réponses:
Dans la documentation ici ,
.docx
n'est pas répertorié comme une entrée compatible :Essayez autre chose, comme Libreoffice - qui peut faire du docx, aussi longtemps que cela ne vous dérange pas quelques erreurs de formatage.
ÉDITER:
La description indique maintenant que Pandoc semble désormais prendre en charge la lecture à partir de Word DOCX (ainsi que DocBook et quelques autres formats):
Comme l'a suggéré @evilsoup, cela pourrait fonctionner:
Oui, vous pouvez utiliser la commande libreoffice avec
--outdir
, mais la sortie html ne fonctionne pas toujours de cette façon ...J'ai fait un test rapide, et cela a semblé fonctionner, à part le crash de Pandoc en raison d'une image gif dans le document
la source
<BR>
s du html).Cela revient toujours sur les recherches Google, donc je voulais mettre cela au compte rendu: pandoc n'a pas pu lire docx lorsque cette question a été posée (l'erreur vient d'essayer de lire un fichier binaire) mais depuis la version 1.13, il le peut, et il fait un assez bon travail.
la source