Coloque comentarios a través de Office Javascript API 1.1

Mi tarea es colocar un comentario a través de la API de Office Javascript en un documento de Word (.docx) compatible con Word 2007 o posterior.

Descubrí que no hay una forma directa de hacerlo a través de la API de Microsoft.

Como puedo pasar OOXML al documento de Word, pensé que podía utilizarlo para hacer un comentario.

Hice algunas investigaciones sobre la estructura del documento de Word y encontré que los comentarios se almacenan en un file XML separado llamado "comments.xml" y luego se hace reference a través de un ID en "document.xml" (adjunté una muestra correspondiente).

¿Hay alguna manera de editar este comments.xml mediante API para colocar comentarios en el documento de Word o no es posible?

Muestra "document.xml":

 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <w:document xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" mc:Ignorable="w14 wp14"> <w:body> <w:pw:rsidR="00A9590C" w:rsidRDefault="0058668B"> <w:r> <w:t>I am text.</w:t> </w:r> </w:p> <w:pw:rsidR="0058668B" w:rsidRDefault="0058668B"> <w:commentRangeStart w:id="0"/> <w:r> <w:t>I am text with comment.</w:t> </w:r> <w:commentRangeEnd w:id="0"/> <w:r> <w:rPr> <w:rStyle w:val="Kommentarzeichen"/> </w:rPr> <w:commentReference w:id="0"/> </w:r> </w:p> <w:sectPr w:rsidR="0058668B"> <w:pgSz w:w="11906" w:h="16838"/> <w:pgMar w:top="1417" w:right="1417" w:bottom="1134" w:left="1417" w:header="708" w:footer="708" w:gutter="0"/> <w:cols w:space="708"/> <w:docGrid w:linePitch="360"/> </w:sectPr> </w:body> 

Muestra "comments.xml":

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <w:comments xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main" mc:Ignorable="w14 wp14"> <w:comment w:id="0" w:author="rz" w:date="2015-05-23T10:30:00Z" w:initials="r"> <w:pw:rsidR="0058668B" w:rsidRDefault="0058668B"> <w:pPr> <w:pStyle w:val="Kommentartext"/> </w:pPr> <w:r> <w:rPr> <w:rStyle w:val="Kommentarzeichen"/> </w:rPr> <w:annotationRef/> </w:r> <w:r> <w:t>Test</w:t> </w:r> <w:bookmarkStart w:id="1" w:name="_GoBack"/> <w:bookmarkEnd w:id="1"/> </w:p> </w:comment> </w:comments> 

Esta es la mayor información que he podido encontrar al investigar esto con usted:

https://msdn.microsoft.com/en-us/magazine/jj991976.aspx

Nota: Una buena manera de aprender cómo manipular OOXML desde una aplicación es agregar el contenido con el que desea trabajar utilizando la UI (por ejemplo, insert SmartArt haciendo clic en Insertar | Ilustraciones | SmartArt), obteniendo el OOXML para el contenido usando getSelectedDataAsync y luego leyendo los resultados.

Haría esto y luego enviaría esos resultados como ooxml usando setSelectedDataAsync, y eso responderá a su pregunta. ¿Es la oficina lo suficientemente inteligente como para crear esas references, o no? (Si no, no hay nada que puedas hacer al respecto a través de la API)

VIEJO COMENTARIO (Donde encontré que su primera premisa era cierta. Por favor, ignórela o lea para reírse)

Parece que puede usar la function setSelectedDataAsync para pasar los valores de comentario y aplicarlos al contenido seleccionado actual en el documento de Word. Estos son los dos fragments más relevantes:

  Office.context.document.setSelectedDataAsync(data [, options], callback(asyncResult)); 

y

  Office.CustomXMLNodeType.NodeComment "comment" The node is a comment. 

Desde la implementación de coerciontype utilizada en uno de los ejemplos de microsoft y el hecho de que coerciontype es una enumeración como customexmlnodetype … Tiene sentido para mí que esto funcione.

  function writeMatrix() { Office.context.document.setSelectedDataAsync("test comment"], {CustomXMLNodeType: Office.Office.CustomXMLNodeType.NodeComment} function (asyncResult) { var error = asyncResult.error; if (asyncResult.status === Office.AsyncResultStatus.Failed){ write(error.name + ": " + error.message); } }); 

}

Mirando hacia atrás a través de la documentation, ahora encuentro coercionType como un parámetro opcional bajo object, y no todas las enumeraciones. ¡Eso es tan estúpido!

Aquí está la información a la que hice reference:

Mira esto: https://msdn.microsoft.com/en-us/library/office/fp142145.aspx

Y esto: https://msdn.microsoft.com/EN-US/library/office/fp142154.aspx

Intereting Posts