Bir .docx dosyasını pandoc ile bir .pdf dosyasına dönüştürme


19

Ben pandoc (GNU / Linux kullanıyorum) kullanarak posta ile alınan bir .docx doğru bir pdf dönüştürmek çalışıyorum.

Kodlama karakterleri ile ilgili bir hata var:

$ pandoc file.docx -o file.pdf
pandoc: Cannot decode byte '\x87': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream

Kodlamayı belirlemeye çalıştım:

$ file -i file .docx 
file.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary

Biraz şaşırdım charset=binary(bekliyordum charset=iso8859-15). Ancak yine de .docx utf8 dönüştürmek için çalıştı ve çalışmıyor:

 $ iconv -t utf-8 file.docx
P!      $iconv: séquence d'échappement non permise à la position 16

Pandoc belgelerinden komut satırı ile aynı hata var :

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

Bu .docx'i pandoc ile pdf'ye nasıl dönüştürebilirim?


Neden Zamzar kullanmıyorsunuz - bir kereliğine ... Çalışmamı düzenlemek için Kingsoft kullanmalıyım , ancak Kuzey Amerika'da kullanmak yasadışı olabilir ...
Wilf

Bayrağı iconvkullanarak kaynak karakter seti sağlamanızı öneririm -f. Örneğin, iconv -f ISO-8859-15 -t utf-8 file.docxişe yarayabilir. Bir .docx dosyasının biçiminin ne olduğu hakkında hiçbir fikrim yok.
derobert

@ denedim. Çıktı doğru değil (normalde Zamzar işini çok iyi yapıyor, ancak bu dosya için değil).
ppr

1
@wilf teşekkürler (pandoc çok güçlüdür bazen sınırlamaları olduğunu unutuyorum).
ppr

2
@derobert: iconvDoğrudan bir .docxdosya üzerinde çalışmanın çalışması olası değildir. iconvgirdisinin belirli veya çıkartılmış bir biçimde bir metin dosyası olduğunu varsayar . Bir .docxdosya aslında (çoğunlukla) xml dosyaları içeren bir zip dosyasıdır (sıkıştırılmış bir arşiv). Muhtemelen, .docxdosyayı iconvaçmak, kurucu dosyalar üzerinde çalışan ve daha sonra her şeyi yeni bir dosyaya yeniden sıkıştırmak için biraz şansınız olabilir .docx, ancak işe bahse girmeyeceğim. İlk olarak, belgenin gerçek içeriğini içeren xml dosyası kodlamasını belirtir: encoding="UTF-8"örneğin.
Keith Thompson

Yanıtlar:


16

Buradaki belgelerde , .docxuyumlu bir giriş olarak listelenmemiştir :

Pandoc, bir biçimlendirme biçiminden diğerine dönüştürmek için bir Haskell kütüphanesi ve bu kütüphaneyi kullanan bir komut satırı aracıdır. Tekstil, reStructuredText, HTML, LaTeX, MediaWiki işaretlemesi, Haddock işaretlemesi, OPML ve DocBook etiketleme ve (alt kümelerini) okuyabilir; ve yapabilirsiniz yazma düz metin, markdown, reStructuredText, XHTML, HTML 5, LaTeX, bağlam, RTF, OPML, Docbook, OpenDocument, MediaWiki biçimlendirme ODT Word docx, GNU Texinfo, EPUB (v2 veya v3 (projeksiyon slayt şovlar dahil) ), FictionBook2, Tekstil, groff man sayfaları, Emacs Org-Mode, AsciiDoc ve Slidy, Slideous, DZSlides, reveal.js veya S5 HTML slayt gösterileri. Ayrıca LaTeX'in kurulu olduğu sistemlerde PDF çıktısı üretebilir.

Birkaç biçimlendirme hatasını önemsemediğiniz sürece, docx yapabilen Libreoffice gibi başka bir şey deneyin .

DÜZENLE:

Açıklama şimdi Pandoc'un artık Word DOCX'ten (DocBook ve diğer birkaç formattan) okumayı desteklediğini söylüyor:

Pandoc, bir biçimlendirme biçiminden diğerine dönüştürmek için bir Haskell kütüphanesi ve bu kütüphaneyi kullanan bir komut satırı aracıdır. Tekstil, reStructuredText, HTML, LaTeX, MediaWiki işaretlemesi, TWiki işaretlemesi, Haddock işaretlemesi, OPML, Emacs Org-modu, DocBook, txt2tags, EPUB ve Word docx ; ve yazabilirdüz metin, işaretleme, reStructuredText, XHTML, HTML 5, LaTeX (beamer slayt gösterileri dahil), ConTeXt, RTF, OPML, DocBook, OpenDocument, ODT, Word docx, GNU Texinfo, MediaWiki işaretleme, DokuWiki işaretleme, Haddock biçimlendirme, EPUB (v2 veya v3), FictionBook2, Textile, groff man sayfaları, Emacs Org-Mode, AsciiDoc, InDesign ICML ve Slidy, Slideous, DZSlides, reveal.js veya S5 HTML slayt gösterileri. Ayrıca LaTeX'in kurulu olduğu sistemlerde PDF çıktısı üretebilir.


@Evilsoup'un önerdiği gibi, bu işe yarayabilir:

cd /DIRECTORY/WITH/FILE/IN && libreoffice --headless --convert-to html 'FILE.docx' && pandoc 'FILE.html' -o 'FILE.pdf'

Evet, libreoffice komutunu ile kullanabilirsiniz --outdir, ancak html çıktısı her zaman bu şekilde çalışmaz ...

Bunu hızlı bir test yaptım ve belgede bir gif görüntüsü nedeniyle Pandoc'un çökmesi dışında işe yaramış gibi görünüyordu gülen


Um .... Word docx alıntı metninizde (OpenDocument ve ODT'den hemen sonra). Bununla birlikte, docx hala iyi belgelenmiş bir format değildir ve bu nedenle açık dünyada gerçek uyumluluk .... sivilceli, diyelim ve LibreOffice için öneriniz (biçimlendirme farklılıkları ile birlikte ) iyidir.
SuperMagic

@SuperMagic - öyle, biraz da olabilir yazma kolaylaştırmak için için ... hightlighted o.
Wilf

1
Eğer varsa gerçekten (aslında LaTeX yapımı) PDF bir Pandoc tarzı istiyorum, özgün belgeyi yapan kişinin yetkinlik bağlı (ayrıca html için docx dönüştürmek için LibreOffice'i kullanın ve ardından Pandoc için girdi olarak kullanabiliriz, bir grup <BR>s'yi html'den kaldırmanız gerekebilir ).
evilsoup

1
OSX'te yürütülebilir dosyaya soffice denir ve /Applications/LibreOffice.app/contents/MacOS/bin içinde bulunabilir. Daha fazla ayrıntıyı burada bulabilirsiniz: ask.libreoffice.org/tr/question/12084/…
Tim Saylor

2
Pandoc artık Word docx'i belgelerde desteklenen bir biçim olarak listeliyor.
cledoux

12

Bu hala google aramalarda geliyor, bu yüzden bunu kayda koymak istedim: pandoc bu soru sorulduğunda docx okuyamadı (hata ikili bir dosyayı okumaya çalışmaktan gelir) ama sürüm 1.13'ten beri yapabilir ve oldukça iyi bir iş.


2
Ancak Pandoc, orijinal tasarım formatını korumaz. Bu gönderiye
orschiro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.