ppr*_*ppr 21 character-encoding pandoc microsoft-word
我正在尝试使用 pandoc 将通过邮件收到的 .docx 转换为正确的 pdf(我使用的是 GNU/Linux)。
我有一个关于字符编码的错误:
$ pandoc file.docx -o file.pdf
pandoc: Cannot decode byte '\x87': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream
Run Code Online (Sandbox Code Playgroud)
我试图识别编码:
$ file -i file .docx
file.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary
Run Code Online (Sandbox Code Playgroud)
我有点惊讶charset=binary
(我期待charset=iso8859-15
)。但是,我无论如何都尝试将 .docx 转换为 utf8,但它不起作用:
$ iconv -t utf-8 file.docx
P! $iconv: séquence d'échappement non permise à la position 16
Run Code Online (Sandbox Code Playgroud)
我对pandoc 文档中的命令行有同样的错误:
iconv -t utf-8 file.docx | pandoc | iconv -f utf-8
Run Code Online (Sandbox Code Playgroud)
如何使用 pandoc 将此 .docx 转换为 pdf?
Wil*_*ilf 17
在此处的文档中,.docx
未列为兼容输入:
Pandoc 是一个 Haskell 库,用于从一种标记格式转换为另一种标记格式,以及使用该库的命令行工具。它可以读取 Markdown 和 Textile、reStructuredText、HTML、LaTeX、MediaWiki 标记、Haddock 标记、OPML 和 DocBook(的子集);它可以编写 纯文本、markdown、reStructuredText、XHTML、HTML 5、LaTeX(包括投影仪幻灯片)、ConTeXt、RTF、OPML、DocBook、OpenDocument、ODT、Word docx、GNU Texinfo、MediaWiki 标记、EPUB(v2 或 v3) )、FictionBook2、Textile、groff 手册页、Emacs Org-Mode、AsciiDoc 和 Slidy、Slideous、DZSlides、reveal.js 或 S5 HTML 幻灯片。它还可以在安装了 LaTeX 的系统上生成 PDF 输出。
尝试其他的东西,比如Libreoffice——它可以做 docx,只要你不介意一些格式错误。
现在描述说 Pandoc 现在似乎支持从 Word DOCX(以及 DocBook 和一些其他格式)中读取:
Pandoc 是一个 Haskell 库,用于从一种标记格式转换为另一种标记格式,以及使用该库的命令行工具。它可以读取 Markdown 和(子集)Textile、reStructuredText、HTML、LaTeX、MediaWiki 标记、TWiki 标记、Haddock 标记、OPML、Emacs Org-mode、DocBook、txt2tags、EPUB 和 Word docx;它可以写纯文本、markdown、reStructuredText、XHTML、HTML 5、LaTeX(包括投影仪幻灯片)、ConTeXt、RTF、OPML、DocBook、OpenDocument、ODT、Word docx、GNU Texinfo、MediaWiki 标记、DokuWiki 标记、Haddock 标记、EPUB (v2或 v3)、FictionBook2、Textile、groff 手册页、Emacs Org-Mode、AsciiDoc、InDesign ICML 和 Slidy、Slideous、DZSlides、reveal.js 或 S5 HTML 幻灯片。它还可以在安装了 LaTeX 的系统上生成 PDF 输出。
正如@evilsoup 建议的那样,这可能有效:
cd /DIRECTORY/WITH/FILE/IN && libreoffice --headless --convert-to html 'FILE.docx' && pandoc 'FILE.html' -o 'FILE.pdf'
Run Code Online (Sandbox Code Playgroud)
是的,您可以将 libreoffice 命令与 一起使用--outdir
,但 html 输出并不总是那样工作......
我对此进行了快速测试,除了由于文档中的 gif 图像导致 Pandoc 崩溃之外,它似乎还有效
小智 13
这仍然出现在谷歌搜索中,所以我想把它记录在案:当这个问题被问到时 pandoc 无法读取 docx(错误来自尝试读取二进制文件)但从 1.13 版开始它可以,并且它做了一个做得很好。