#c# #ms-word #vsto
Вопрос:
Я разрабатываю надстройку Word VSTO. Я заметил странное поведение приложения Word, и я подозреваю, что причиной является моя надстройка. После отладки надстройки в течение некоторого времени Word начал показывать [Режим совместимости] в документах, сохраненных надстройкой в виде файлов docx, как показано на рисунке ниже. Это не документ, сохраненный как документ Word 2010, 2007 или 2003 годов, а как моя текущая версия Word, которая является 2016 годом. Документ не должен открываться в режиме совместимости.
И когда я открываю Word, автоматически сохраненный документ, который обычно отображается на левой панели, внезапно начинает полностью открываться с желтой полосой, спрашивающей, хочет ли пользователь сохранить его. А для исходного документа слова [последнее сохранение пользователем] отображаются (в квадратных скобках, как указано и показано) в конце заголовка документа в строке заголовка.
Я подозреваю, что моя надстройка VSTO взаимодействует с приложением, чтобы вызвать такое поведение. Мой код многочислен, и я не могу сказать, какая часть может быть виновата, поэтому я могу опубликовать его с этим вопросом.
У кого-нибудь есть идея или намек на то, что здесь происходит, пожалуйста? Любая информация о том, как надстройка VSTO может сочетаться с обычным поведением приложения Word, также может оказать большую помощь в том, чтобы дать мне некоторое представление о том, откуда может возникнуть проблема.
Редактировать:
Вот как моя надстройка сохраняет документ:
document.SaveAs2(fullFilePath, FileFormat: WdSaveFormat.wdFormatXMLDocument, LockComments: false, Password: ref missing, AddToRecentFiles: true, WritePassword: ref missing, ReadOnlyRecommended: false, EmbedTrueTypeFonts: ref missing, SaveNativePictureFormat: ref missing, SaveFormsData: ref missing, SaveAsAOCELetter: ref missing, Encoding: ref missing, InsertLineBreaks: ref missing, AllowSubstitutions: false, LineEnding: ref missing, AddBiDiMarks: ref missing, CompatibilityMode: WdCompatibilityMode.wdCurrent);
Я реализую эти обратные вызовы всякий раз, когда запускается надстройка:
Application.DocumentOpen = new Word.ApplicationEvents4_DocumentOpenEventHandler(WorkWithDocument);
Application.DocumentBeforeClose = Application_DocumentBeforeClose;
Application.DocumentChange = Application_DocumentChange;
Application.DocumentBeforeSave = Application_DocumentBeforeSave;
Application.DocumentBeforePrint = Application_DocumentBeforePrint;
Application.WindowDeactivate = Application_WindowDeactivate;
Application.WindowActivate = Application_WindowActivate;
Application.DocumentOpen = Application_DocumentOpen;
((ApplicationEvents4_Event)this.Application).NewDocument = new ApplicationEvents4_NewDocumentEventHandler(WorkWithDocument);
Я запускаю эти коды при открытии документа:
Options options = this.Application.Options;
if (!options.UseLocalUserInfo) options.UseLocalUserInfo = true;
if (options.SaveNormalPrompt) options.SaveNormalPrompt = false;
bool visibleHiddenText = Globals.ThisAddIn.Application.ActiveWindow.View.ShowHiddenText;
if (visibleHiddenText) Globals.ThisAddIn.Application.ActiveWindow.View.ShowHiddenText = false;
Этот код запускается до сохранения документа:
if (Doc.RemovePersonalInformation) Doc.RemovePersonalInformation = false;
Возвращаемое значение Microsoft.Office.Interol.Word.Document. CompatibilityMode
равно 15.
И в дополнение ко всему этому я запускаю некоторые коды, чтобы добавить несколько пользовательских стилей и обновить некоторые изменения в галереях списков и уровнях списка ссылок для стилей заголовков.
Комментарии:
1. Приведите пример того, как вы открываете, сохраняете и закрываете документ.
2. И от какого значения возвращено
Microsoft.Office.Interop.Word.Document.CompatibilityMode
?3. @Auditive Я обновил вопросы, чтобы включить запрошенную вами информацию. Спасибо.
4. Пробовал только
document.SaveAs(fullFilePath)
без других аргументов?5. @Auditive нет, я этого не пробовал. Может быть, мне стоит это проверить и посмотреть, что я получу?