pandoc을 사용하여 .docx를 .pdf로 변환


19

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 documentation 의 명령 줄과 동일한 오류가 있습니다 .

iconv -t utf-8 file.docx | pandoc | iconv -f utf-8

pandoc을 사용하여이 .docx를 pdf로 변환하려면 어떻게해야합니까?


잠 자르 를 사용하지 않는 이유는 무엇입니까? 북미 지역에서 사용하는 것은 불법이지만 Kingsoft 를 사용 하여 작업을 편집해야합니다.
Wilf

플래그를 iconv사용하여 소스 문자 세트를 제공 하는 것이 좋습니다 -f. 예를 들어 iconv -f ISO-8859-15 -t utf-8 file.docx작동 할 수 있습니다. 그래도 .docx 파일의 형식이 무엇인지 모릅니다.
derobert

@ wilf 나는 시도했다. 출력이 올바르지 않습니다 (일반적으로 Zamzar는이 파일에 대해 잘 수행하지 않지만 그의 작업을 잘 수행합니다).
ppr

1
@ wilf 감사합니다 (pandoc은 너무 강력하여 때로는 제한이 있음을 잊습니다).
ppr

2
@derobert : 파일 에서 iconv직접 실행해도 .docx작동하지 않을 수 있습니다. iconv입력이 지정되거나 유추 된 형식 의 텍스트 파일 이라고 가정 합니다. .docx파일은 실제로 (주로) XML 파일을 포함하는 zip 파일 (압축 된 아카이브)입니다. 아마도 .docx파일 압축을 풀고 iconv구성 파일에서 실행 한 다음 모든 것을 다시 새로운 압축으로 다시 압축 할 수는 있지만 운 .docx이 좋을 것입니다. 우선, 문서의 실제 내용을 포함하는 xml 파일은 인코딩을 지정 encoding="UTF-8"합니다 (예 :).
Keith Thompson

답변:


16

문서에서 여기 , .docx호환로 표시되지 입력 :

Pandoc은 하나의 마크 업 형식에서 다른 마크 업 형식으로 변환하기위한 Haskell 라이브러리이며이 라이브러리를 사용하는 명령 줄 도구입니다. 마크 다운 및 섬유, reStructuredText, HTML, LaTeX, MediaWiki 마크 업, Haddock 마크 업, OPML 및 DocBook의 (하위 세트)를 읽을 수 있습니다. 그것은 수 쓰기 일반 텍스트, 가격 인하, reStructuredText, XHTML을, HTML 5, 유액, 문맥, RTF, OPML, DocBook으로 오픈 도큐먼트, 미디어 위키 마크 업 ODT, 워드 DOCX, GNU의 Texinfo, 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 라이브러리이며이 라이브러리를 사용하는 명령 줄 도구입니다. 마크 다운 및 섬유, reStructuredText, HTML, LaTeX, MediaWiki 마크 업, TWiki 마크 업, Haddock 마크 업, OPML, Emacs Org-mode, 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, 섬유, 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'

예, libreoffice 명령을와 함께 사용할 수 --outdir있지만 html 출력이 항상 그런 식으로 작동하지는 않습니다.

나는 이것을 빠른 테스트를했으며 문서의 gif 이미지로 인한 Pandoc 충돌과는 별개로 작동하는 것처럼 보였다. 스마일리


Um .... Word docx 는 인용문 (OpenDocument 및 ODT 바로 다음)에 있습니다. 즉, docx는 여전히 잘 문서화 된 형식이 아니므로 공개 세계에서의 실제 호환성은 ..... 우리가 말할 것입니다. LibreOffice에 대한 제안은 (서식 차이 와 함께 ) 좋습니다.
SuperMagic

@SuperMagic-그것은 조금이라도 수 있습니다 ... 쉽게 강조하기 위해 강조 표시했습니다.
Wilf

1
당신이 경우 정말 (실제로 라텍스 만든) 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/…
Tim Saylor

2
Pandoc는 이제 문서에서 지원되는 형식으로 Word docx를 나열합니다.
cledoux

12

이것은 여전히 ​​Google 검색에서 발생하므로 레코드에 넣고 싶었습니다 .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.