2016-05-25 4 views
1

Наш текущий проект работы включает открытие файла Microsoft PowerPoint (формат .pptx), изменение текста и значений диаграммы, а затем представление отредактированной версии до конца пользователь.Проверка документа Open XML SDK 2.5: атрибут «smtClean» не объявлен

Это пока работает довольно хорошо, но я озадачен тем, что происходит, когда я пытаюсь проверить документ позже. Используя класс DocumentFormat.OpenXml.Validation.OpenXmlValidator, я запускаю функцию Validate с передачей PresentationDocument в качестве единственного параметра.

Dim document As PresentationDocument = PresentationDocument.Open(templateFilePath, True) 
Dim validator As OpenXmlValidator = New OpenXmlValidator() 
Dim errors = validator.Validate(document) 

For Each errInfo As ValidationErrorInfo In errors 
    Debug.Print("Error: """ & errInfo .Description & """") 
    Debug.Print("XPath: " & errInfo .Path.XPath) 
Next 

Validate() возвращает массив, заполненный экземплярами ValidationErrorInfo. Почти все они дают то же описание ошибки при отладке:

The 'smtClean' attribute is not declared. 

XPath для каждой ошибки выглядит следующим образом (цифры варьируются, как представляется, одна ошибка на части текста):

/p:sldLayout[1]/p:cSld[1]/p:spTree[1]/p:sp[4]/p:txBody[1]/a:p[1]/a:fld[1]/a:rPr[1] 

Каждый TableCell имеет абзац, с дочерним элементом Run, и этот Run имеет дочерние элементы RunProperties и Text. Я изменяю текст в своих сценариях, но я ничего не трогаю.

Поиск «smtClean» дал мне запись MSDN для RunProperties, которая показывает «smtClean» как одно из возможных значений, которые необходимо установить, но если я создам новый экземпляр DocumentFormat.OpenXml.Presentation.Drawing.RunProperties, smtClean 'недоступен.

Оглядываясь вокруг, я нашел темы, в которых люди упомянули объединенные документы, чтобы быть одной из возможных причин, но эти ошибки происходят даже в немодифицированном представлении, в котором есть только один слайд и таблица. Используя инструмент производительности Open XML SDK 2.5 для проверки базового документа, я получаю тот же результат.

Ошибки также возникают независимо от того, в каком формате я прошу проверку валидатора проверить - как версия формата PowerPoint 2007, 2010, так и версия 2013 года возвращают такое же количество ошибок.

И наконец: сам файл отлично работает в PowerPoint даже после его модификации. Мне любопытно, почему валидатор возвращает так много ошибок.

Заранее благодарим за любую помощь.

ответ

0

Смарт-теги были устаревшими в Office 2010, а валидатор SDK v2.5 не поддерживает элементы смарт-тегов и поэтому отмечает их как недопустимые.

Для получения дополнительной информации см. this MSDN article.

Текущий разработчик средства повышения производительности говорит в this thread, что ошибка проверки smtClean была ошибкой в ​​некоторых ситуациях и была исправлена ​​в v3 инструмента.

v3 (инструмент для повышения производительности Office 2016) можно найти here, однако я не уверен, насколько он совместим со старыми версиями Office.

Смежные вопросы