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?
iconv
kullanarak kaynak karakter seti sağlamanızı öneririm -f
. Örneğin, iconv -f ISO-8859-15 -t utf-8 file.docx
işe yarayabilir. Bir .docx dosyasının biçiminin ne olduğu hakkında hiçbir fikrim yok.
iconv
Doğrudan bir .docx
dosya üzerinde çalışmanın çalışması olası değildir. iconv
girdisinin belirli veya çıkartılmış bir biçimde bir metin dosyası olduğunu varsayar . Bir .docx
dosya aslında (çoğunlukla) xml dosyaları içeren bir zip dosyasıdır (sıkıştırılmış bir arşiv). Muhtemelen, .docx
dosyayı iconv
aç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.