pandocで.docxを.pdfに変換する


19

メールで受信した.docxをpandocを使用して正しい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

この.docxをpandocでPDFに変換するにはどうすればよいですか?


なぜあなたは使用しないZamzarを -オフ...私が使用する必要がいずれかのKingsoftのを、...北米で使用することはおそらく違法ですが、編集に私の仕事を
Wilf

フラグiconvを使用して、ソース文字セットを提供することをお勧めし-fます。たとえば、動作するiconv -f ISO-8859-15 -t utf-8 file.docx可能性があります。ただし、.docxファイルの形式はわかりません。
デロバート

@wilf試しました。出力は正しくありません(通常、Zamzarはこのファイルではなく非常にうまく機能します)。
ppr

1
@wilfに感謝します(pandocは非常に強力なので、制限があることを忘れてしまいます)。
ppr

2
@derobert:ファイルをiconv直接実行しても.docx動作しそうにありません。iconv入力は、指定された形式または推測された形式のテキストファイルであると想定しています。.docxファイルは実際には(ほとんど)xmlファイルを含むzipファイル(圧縮されたアーカイブ)です。.docxファイルを解凍iconvし、構成ファイルで実行してから、すべてを新しい.docxに再圧縮する運がおそらくあるかもしれませんが、私はそれがうまくいくとは思いません。たとえば、ドキュメントの実際のコンテンツを含むxmlファイルは、エンコードを指定します:encoding="UTF-8"
キーストンプソン

回答:


16

ここのドキュメントで.docxは、互換性のある入力としてリストされていません:

Pandocは、あるマークアップ形式から別のマークアップ形式に変換するためのHaskellライブラリであり、このライブラリを使用するコマンドラインツールです。マークダウンと(サブセット)Textile、reStructuredText、HTML、LaTeX、MediaWikiマークアップ、Haddockマークアップ、OPML、DocBookを読み取ることができます。それができ書き込み プレーンテキスト、値下げ、reStructuredTextの、XHTML、HTML 5、ラテックス(ビーマースライドショーを含む)、コンテキスト、RTF、OPML、DocBookの、OpenDocumentの、ODTは、Word DOCX、GNUのTexinfo、MediaWikiのマークアップ、EPUB(V2またはV3を)、FictionBook2、Textile、groffのマニュアルページ、Emacs Org-Mode、AsciiDoc、Slidy、Slidous、DZSlides、reveal.js、またはS5 HTMLスライドショー。LaTeXがインストールされているシステムでPDF出力を生成することもできます。

いくつかのフォーマットエラーを気にしない限り、Libreofficeなど、docxを実行できるものを試してください。

編集:

現在の説明では、PandocがWord DOCX(およびDocBookや他のいくつかの形式)からの読み取りをサポートしているようだと説明しています。

Pandocは、あるマークアップ形式から別のマークアップ形式に変換するためのHaskellライブラリであり、このライブラリを使用するコマンドラインツールです。マークダウンと(サブセット)Textile、reStructuredText、HTML、LaTeX、MediaWikiマークアップ、TWikiマークアップ、Haddockマークアップ、OPML、Emacs Orgモード、DocBook、txt2tags、EPUB、Word docxを読み取ることができます。そしてそれは書くことができますプレーンテキスト、マークダウン、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、Slidous、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'

はい、libreofficeコマンドを--outdirで使用できますが、html出力は常にそのように機能するとは限りません...

私はこれを簡単にテストしましたが、ドキュメント内のgif画像が原因でPandocがクラッシュすることは別として、動作するように見えました。 スマイリー


Um .... Word docxは引用テキストのすぐそこにあります(OpenDocumentとODTの直後)。それは、(書式設定と一緒にむら、私たちが言うものとし、LibreOfficeのためのあなたの提案.... docxファイルは、まだ十分に文書形式ではありませんので、オープンな世界では、実際の互換性がある、と述べた違いは)良いです。
スーパーマジック

@SuperMagic-それは、書き込み可能なビットです...簡単にするために強調表示しました。
ウィルフ

1
あなたがいる場合、実際に(実際にはLaTeX製)PDFをpandoc-スタイルをしたい、あなたは元の文書を作った人の能力に応じて、(また、HTMLにdocxファイルを変換するにはLibreOfficeを使用して、pandocの入力としてそれを使用することができ、<BR>htmlからsの束を削除する必要がある場合があります)。
evilsoup

1
OSXでは、実行可能ファイルはsofficeと呼ばれ、/ Applications / LibreOffice.app / contents / MacOS / binにあります。更なる詳細は、ここで見つけることができます:ask.libreoffice.org/en/question/12084/...
ティム・セイラー

2
Pandocは、ドキュメントでサポートされている形式としてWord docxをリストするようになりました。
クレドゥ

12

これはまだグーグル検索で出てくるので、私はこれを記録に載せたかったです:この質問が出されたときにpandocはdocxを読むことができませんでした(エラーはバイナリファイルを読み取ろうとしています)が、バージョン1.13以降はできますそれのかなり良い仕事。


2
ただし、Pandocは元のデザインの書式設定を保持しません。この投稿を参照してください:github.com/jgm/pandoc/issues/2206#issuecomment-107994587
orschiro
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.