Как добавить настраиваемый комментарий в MS Word с помощью OOXML?

Я создаю пользовательскую надстройку Word. В этом пользователь может добавлять собственные комментарии с цветом, полужирным шрифтом или выделением или устанавливать другие возможные параметры. Но когда я пытаюсь использовать напрямую <b>Hello This is comment</b>, а также пробую вариант ниже. Когда первый вариант - попробовать, он дает мне RichApi.Error GeneralException: GeneralException. Когда я пытаюсь написать это как комментарий, он печатается как есть.

{\rtf1\ansi\ansicpg1252\deff0\nouicompat{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}{\f1\fswiss\fprq2\fcharset0 Microsoft Sans Serif;}{\f2\fnil\fcharset2 Symbol;} }\r\n{\colortbl;\red0\green0\blue255;\red5\green99\blue193;}\r\n{\\generator Riched20 10.0.17763}\viewkind4\uc1 \r\n\pard \f0\fs17\lang1033 использует стиль цитирования в скобках, при этом большинство версий имеют следующий формат:\par\r\n\par\r\n\r\n\pard{\pntext\f2\'B7\tab}{\< /em>\pn\pnlvlblt\pnf2\pnindent0{\pntxtb\'B7}}... (Смит, 2005).\par\r\n{\pntext\f2\'B7\tab} Смит (2005) заявил ...\par\r\n\r\n\pard\par\r\nГарвардская система может различаться, поэтому проверьте руководство по стилю вашего учебного заведения, чтобы убедиться в этом. \ par \ r \ n \ par \ r \ n \ r \ n \ pard \ widctlpar {\ f1 \ fs16 {\ field {\ * \ fldinst {HYPERLINK https://mysitehere}} {\ fldrslt {\ ul \ cf1 \cf2\ul\lang2057 Щелкните здесь}}}}\f1\fs16 для получения дополнительной информации.\f0\fs17\par\r\n}\r\n

Мой код:

range.insertOoxml(
    '<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/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="256"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"><Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments" Target="comments.xml" xmlns="http://schemas.openxmlformats.org/package/2006/relationships" /></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:commentRangeStart w:id="0"/><w:r><w:t>' + selectedText + '</w:t></w:r><w:commentRangeEnd w:id="0"/><w:r><w:commentReference w:id="0"/></w:r></w:p></w:body></w:document></pkg:xmlData></pkg:part><pkg:part xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage" pkg:name="/word/comments.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.comments+xml"><pkg:xmlData><w:comments xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"><w:comment xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:id="0"><w:sdtContent><w:p><w:r><w:t>' + commentMessage + '</w:t></w:r></w:p></w:sdtContent></w:comment></w:comments></pkg:xmlData></pkg:part><pkg:part pkg:name="/word/_rels/comments.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml"><pkg:xmlData><Relationships xmlns="http://schemas.openxmlformats.org/package/2006/relationships"></Relationships></pkg:xmlData></pkg:part></pkg:package>',         
    "Replace"
);

Если кто-нибудь знает, как об этом, пожалуйста, дайте мне знать.


person Deep Soni    schedule 21.01.2021    source источник


Ответы (1)


Вы должны иметь возможность настраивать комментарии, которые вы вставляете с помощью Ooxml, просто убедитесь, что вы используете правильный формат стиля для оформления комментариев.

Измените следующую часть вашего Ooxml:

<w:comment xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:id="0">
  <w:sdtContent>
    <w:p>
      <w:r>
        <w:t>' + commentMessage + '</w:t>
      </w:r>
    </w:p>
  </w:sdtContent>
</w:comment>

к этому:

<w:comment xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" w:id="0">
  <w:sdtContent>
    <w:p>
      <w:r>
        <w:t xml:space="preserve">This is a </w:t>
      </w:r>
      <w:r>
        <w:rPr>
          <w:b/>
          <w:bCs/>
        </w:rPr>
        <w:t>customized</w:t>
      </w:r>
      <w:r>
        <w:t xml:space="preserve"> comment.</w:t>
      </w:r>
    </w:p>
  </w:sdtContent>
</w:comment>

Обратите внимание, что слово «настраиваемый» теперь будет выделено жирным шрифтом в комментарии.

Если вы хотите добавить дополнительное форматирование, например выделение, вот еще один пример:

<w:r>
  <w:t xml:space="preserve">This comment is </w:t>
</w:r>
<w:r>
  <w:rPr>
    <w:highlight w:val="yellow"/>
  </w:rPr>
  <w:t>highlighted</w:t>
</w:r>

Подробнее о стилях Office Open XML можно узнать здесь.

person Abid Rahman - MSFT    schedule 03.02.2021
comment
Спасибо за ответ. @Abid Rahman - MSFT У меня есть форматированный текст из моего RestAPI, и я должен настроить его как настроенный в комментарии. Возможно ли это или нет, и если это возможно, пожалуйста, дайте мне ссылку или ссылку. Было бы здорово. - person Deep Soni; 04.02.2021
comment
Я не верю, что вы можете напрямую установить форматированный текст в качестве комментария, вам придется проанализировать стиль из форматированного текста и преобразовать его в стили Office Open XML (officeopenxml.com/WPstyles.php). - person Abid Rahman - MSFT; 05.02.2021
comment
Спасибо за ответ. @Abid Rahman - MSFT Это помогает мне, но если я добавил комментарий ранее, он заменяется последним комментарием. Есть ли какое-то решение или изменение в нашем OOXML? - person Deep Soni; 05.02.2021
comment
Спасибо за ответ. Если я хочу установить более одного выделенного комментария, например, этот комментарий выделен жирным шрифтом (жирный текст), а этот выделен (желтый текст), а также курсивом (курсивным шрифтом). Является ли это возможным? - person Deep Soni; 05.02.2021