Я отлаживаю надстройку Word office js. Одна вещь, которую он должен сделать, это создать скрытый раздел в документе Word. Для этого я передаю некоторую информацию в функцию javascript, которая создает строку Oo XML. Я даю пользователю возможность встраивать некоторый текст в раздел, и пользователь должен иметь возможность выделять курсивом, выделять жирным шрифтом, подчеркивать или применять любую комбинацию этих форматов к встроенному тексту. Курсив и выделение жирным шрифтом работают нормально, но подчеркивание не работает.
Встроенный текст вводится в текстовое поле html в надстройке. Пользователь может щелкнуть кнопку курсивом, другую кнопку жирным шрифтом, третью кнопку подчеркивания или четвертую кнопку, чтобы удалить эти украшения. События нажатия кнопок предшествуют и добавляют теги html, поэтому строка текста, выделенная жирным шрифтом, курсивом и подчеркиванием, будет отправлена следующим образом:
<b><i><u>string of text</u></i></b>
Затем другая функция преобразует это в Oo xml. Получившийся oo xml выглядит следующим образом:
<w:r> <w:rPr> <w:b /> <w:i /> <w:u /> </w:rPr> <w:instrText xml:space="preserve">string of text</w:instrText> </w:r>
(я вижу строку oo xml в моем журнале консоли).
После того, как код вставит это в документ, оно выделено жирным шрифтом и курсивом, но не подчеркнуто. Я попытался поиграться с функцией, которая генерирует код, например, убрав пробел между w: u и />:
<w:r> <w:rPr> <w:b/> <w:i/> <w:u/> </w:rPr> <w:instrText xml:space="preserve">string of text</w:instrText> </w:r>
Я попытался удалить конечную обратную косую черту sh на этих тегах, но это нарушило вызов range.insertOo xml (). Я также попытался добавить атрибут aw: val = "single", потому что я не был уверен, требуется ли val, ie.:
<w:r> <w:rPr> <w:b /> <w:i /> <w:u w:val="single" /> </w:rPr> <w:instrText xml:space="preserve">string of text</w:instrText> </w:r>
Я в этой точке тупик. Код агности c относительно того, какой тег используется - ему все равно, ab, i или u. Я понимаю, что <w:b />
и <w:i />
являются переключателями, а <w:u />
может и не быть - мне нужно обрабатывать это по-другому? Кто-нибудь еще сталкивался с этой проблемой, и есть ли что-то не так с Oo xml, на который кто-то может указать?
Спасибо.
РЕДАКТИРОВАТЬ: Чтобы уточнить, что я изначально включил, было только форматирование текста внутри скрытого раздела. Ниже приведен полный OO Xml, который создает код. Я разделяю код до и после исходного отформатированного текста, чтобы вы могли видеть, где он вписывается во весь код Oo Xml:
Перед строкой форматированного текста:
<pkg:package xmlns:pkg='http://schemas.microsoft.com/office/2006/xmlPackage'><pkg:part pkg:name='/_rels/.rels' pkg:contentType='application/vnd.openxmlformats-package.relationships+xml' pkg:padding='512'><pkg:xmlData><Relationships xmlns='http://schemas.openxmlformats.org/package/2006/relationships'><Relationship Id='rId1' Type='http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument' Target='word/document.xml'/></Relationships></pkg:xmlData></pkg:part><pkg:part pkg:name='/word/document.xml' pkg:contentType='application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml'><pkg:xmlData><w:document xmlns:w='http://schemas.openxmlformats.org/wordprocessingml/2006/main' >
<w:body><w:p><w:r> <w:fldChar w:fldCharType='begin' /> </w:r> <w:r><w:rPr><w:color w:val='C00000'/></w:rPr><w:instrText xml:space="preserve">
"XE Startindex_1_id_000014_e"</w:instrText> </w:r>
Форматированная текстовая строка:
<w:r> <w:rPr> <w:b /> <w:i /> <w:u /> </w:rPr> <w:instrText xml:space="preserve">string of text</w:instrText> </w:r>
После форматированной текстовой строки:
<w:r><w:rPr><w:color w:val='C00000'/></w:rPr><w:instrText xml:space="preserve">"XE Endindex_1_id_000014"</w:instrText> </w:r> <w:r> <w:fldChar w:fldCharType='end' /> </w:r></w:p></w:body></w:document></pkg:xmlData></pkg:part></pkg:package>