Tôi đang cố gắng chuyển đổi một .docx nhận được qua thư thành pdf chính xác bằng cách sử dụng pandoc (Tôi đang sử dụng GNU / Linux).
Tôi có một lỗi liên quan đến mã hóa ký tự:
$ pandoc file.docx -o file.pdf
pandoc: Cannot decode byte '\x87': Data.Text.Encoding.decodeUtf8: Invalid UTF-8 stream
Tôi đã cố gắng xác định mã hóa:
$ file -i file .docx
file.docx: application/vnd.openxmlformats-officedocument.wordprocessingml.document; charset=binary
Tôi hơi ngạc nhiên bởi charset=binary
(tôi đã mong đợi charset=iso8859-15
). Tuy nhiên tôi đã cố gắng chuyển đổi .docx thành utf8 và nó không hoạt động:
$ iconv -t utf-8 file.docx
P! $iconv: séquence d'échappement non permise à la position 16
Tôi có cùng một lỗi với dòng lệnh từ tài liệu pandoc :
iconv -t utf-8 file.docx | pandoc | iconv -f utf-8
Làm cách nào tôi có thể chuyển đổi .docx này sang pdf bằng pandoc?
iconv
một bộ ký tự nguồn, sử dụng -f
cờ. Ví dụ, iconv -f ISO-8859-15 -t utf-8 file.docx
có thể làm việc. Mặc dù vậy, không biết định dạng của tệp .docx là gì.
iconv
trực tiếp trên một .docx
tệp không có khả năng hoạt động. iconv
giả định rằng đầu vào của nó là một tệp văn bản ở một số định dạng được chỉ định hoặc suy ra. Một .docx
tệp thực sự là một tệp zip (một tệp lưu trữ nén) chứa (hầu hết) các tệp xml. Bạn có thể có thể có một chút may mắn khi giải nén .docx
tệp, chạy iconv
trên các tệp cấu thành và sau đó nén lại mọi thứ lại thành một tệp mới .docx
, nhưng tôi sẽ không đặt cược vào nó hoạt động. Đối với một điều, tệp xml chứa nội dung thực tế của tài liệu chỉ định mã hóa của nó: encoding="UTF-8"
ví dụ.