. NET MS Interop Word не сохраняет документ на веб-странице UTF8. - PullRequest
3 голосов
/ 30 марта 2020

Примечание: образец документа, который я использовал для теста, может быть найден: http://ftp.3gpp.org//Specs/archive/38_series/38.413/38413-100.zip

Проблема

Я пытаюсь конвертировать MS Word 97-2003 документ (.do c) на веб-страницу UTF-8 со следующим кодом:

var wordApp = new Word.Application();
var doc = wordApp.Documents.Open("input.doc");
Console.WriteLine(doc.TextEncoding); // msoEncodingWestern
doc.SaveEncoding = MsoEncoding.msoEncodingUTF8;
doc.WebOptions.Encoding = MsoEncoding.msoEncodingUTF8;
doc.SaveAs2("output.htm", WdSaveFormat.wdFormatFilteredHTML, Encoding: MsoEncoding.msoEncodingUTF8);
doc.Close();
wordApp.Quit();

Проблема в том, что документ содержит определенный символ, который неправильно отображается на веб-странице:

В документе

enter image description here

На веб-странице

enter image description here

(Информация) Ручной способ

Для информации, если я выполню вышеуказанное вручную, как показано ниже, символ стрелки будет правильно отображаться на веб-странице.

enter image description here

1 Ответ

0 голосов
/ 15 апреля 2020

Я думаю, что вы цитировали кодировку слишком многими различными способами. Вам нужно только установить его один раз.

Попробуйте:

var wordApp = new Word.Application();
var doc = wordApp.Documents.Open("input.doc");
doc.Fields.Update(); // ** this is the new line of code.
Console.WriteLine(doc.TextEncoding); // msoEncodingWestern
doc.WebOptions.Encoding = MsoEncoding.msoEncodingUTF8;
doc.SaveAs2("output.htm", WdSaveFormat.wdFormatFilteredHTML);
doc.Close();
wordApp.Quit();
...