Свойство allowincell по умолчанию для Microsoft Word «уничтожает» форматированиеОткуда это взялось? - PullRequest
1 голос
/ 21 сентября 2011

У нас есть приложение Win32, которое объединяет документы в Word через OLE из различных фрагментов, хранящихся в базе данных. Существует шаблон Word с набором макросов, предназначенный для того, чтобы документ Word не мог быть сохранен на диск, но будет сохранен обратно в базу данных. Все идет нормально. Допустим, система работает.

У нас есть только для чтения пользователей. Дизайн состоит в том, что используется другой шаблон, чтобы эти пользователи могли просматривать документы. Этот шаблон браузера был поврежден, поэтому сохранение файла невозможно.

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

Сохраняя образец документа в формате xml, по одному разу для каждого случая, я показал, что в плохом документе появляется «allowincell = false» для каждой затронутой графики. Кажется разумным предположить, что это виновник. Атрибут вообще не упоминается в хорошей версии . (Странно, поскольку в MSDN указано «false» - это значение по умолчанию, по крайней мере в .NET)

Было бы полезно, если бы я лучше понял механизм, с помощью которого устанавливается это значение. Если бы мне пришлось сделать предположение, я бы предположил, что для атрибута установлено значение True (то есть не упоминается), поскольку первоначальный пользователь запросил это просто, поместив изображение в таблицу.

В конечном счете, мой вопрос - какое МИНИМАЛЬНОЕ вмешательство я могу предпринять для решения этой конкретной проблемы? Любые предложения о том, как это можно сделать, будут приняты с благодарностью.

1 Ответ

1 голос
/ 30 сентября 2011

Вероятно, вы не установили LayoutInCell = True для изображения (вместе с WrapFormat на wdWrapSquare, wdWrapThrough, wdWrapTight или wdWrapTopBottom). По умолчанию всегда используется значение False, и это означает, что вы видите VML «allowincell = false». Опять же, убедитесь, что WrapFormat равно , а не wdWrapNone или wdWrapInline - просто используйте один из других выше).

Если это не сработает, пожалуйста, предоставьте нам больше информации. Например, какая версия Word? Что такое "сохранить" код для мертвой версии. Какие параметры «Сохранить на веб-странице» вы используете? Поместите полную и безмозглую версию того же документа (отредактируйте по мере необходимости) в нечто вроде DropBox для изучения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...