我正在尝试通过使用pandoc将邮件接收的.docx转换为正确的pdf(我正在使用GNU / Linux)。
我有一个关于字符编码的错误:
$ pandoc file.docx -o file.pdf
pandoc: Cannot decode byte '\x87': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream
我试图识别编码:
$ file -i file .docx
file.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary
我有点惊讶charset=binary
(我原以为是charset=iso8859-15
)。但是我还是试图将.docx转换为utf8,但它不起作用:
$ iconv -t utf-8 file.docx
P! $iconv: séquence d'échappement non permise à la position 16
我在pandoc文档的命令行中有相同的错误:
iconv -t utf-8 file.docx | pandoc | iconv -f utf-8
如何使用Pandoc将.docx转换为pdf?
iconv
使用该-f
标志提供源字符集。例如,iconv -f ISO-8859-15 -t utf-8 file.docx
可能有效。不过,不知道.docx文件的格式是什么。
iconv
直接在.docx
文件上运行不太可能。iconv
假定其输入是某种指定或推断格式的文本文件。一个.docx
文件实际上是包含(主要)XML文件的zip文件(压缩档案)。可以想像,您可能会有些运气来解压缩.docx
文件,iconv
在组成文件上运行,然后将所有内容重新压缩回一个新的.docx
,但是我敢打赌它不会工作。一方面,包含文档实际内容的xml文件指定了其编码:encoding="UTF-8"
例如。