2016-11-23 2 views
2

В example код предоставляется для получения RichText. Он может получить текстовое содержимое , но я не могу его вернуть, чтобы вернуть HTML в форматированном виде страницы.OneNote Добавить в: Получение содержимого HTML

Например:

Header:

  • A
  • B

должно быть:

<p>Header:</p> 
<ul> 
    <li>A</li> 
    <li>B</li> 
</ul> 

Однако пример кода использует richText/text и возвращает только Header:. Возможно ли сделать что-то вроде richText/HTML и получить HTML-код, показанный выше? (Примечание: я хочу использовать только , а не API OneNote REST.)

Спасибо!

Фрагмент кода из документации:

OneNote.run(function (context) { 

// Get the collection of pageContent items from the page. 
var pageContents = context.application.getActivePage().contents; 

// Get the first PageContent on the page, and then get its outline's paragraphs. 
var outlinePageContents = []; 
var paragraphs = []; 
var richTextParagraphs = []; 
// Queue a command to load the id and type of each page content in the outline. 
pageContents.load("id,type"); 

// Run the queued commands, and return a promise to indicate task completion. 
return context.sync() 
    .then(function() { 
     // Load all page contents of type Outline 
     $.each(pageContents.items, function(index, pageContent) { 
      if(pageContent.type == 'Outline') 
      { 
       pageContent.load('outline,outline/paragraphs,outline/paragraphs/type'); 
       outlinePageContents.push(pageContent); 
      } 
     }); 
     return context.sync(); 
    }) 
    .then(function() { 
     // Load all rich text paragraphs across outlines 
     $.each(outlinePageContents, function(index, outlinePageContent) { 
      var outline = outlinePageContent.outline; 
      paragraphs = paragraphs.concat(outline.paragraphs.items); 
     }); 
     $.each(paragraphs, function(index, paragraph) { 
      if(paragraph.type == 'RichText') 
      { 
       richTextParagraphs.push(paragraph); 
       paragraph.load("id,richText/text"); 
      } 
     }); 
     return context.sync(); 
    }) 
    .then(function() { 
     // Display all rich text paragraphs to the console 
     $.each(richTextParagraphs, function(index, richTextParagraph) { 
      var richText = richTextParagraph.richText; 
      console.log("Paragraph found with richtext content : " + richText.text + " and richtext id : " + richText.id); 
     }); 
     return context.sync(); 
    }); 
}) 
.catch(function(error) { 
    console.log("Error: " + error); 
    if (error instanceof OfficeExtension.Error) { 
     console.log("Debug info: " + JSON.stringify(error.debugInfo)); 
    } 
}); 
+0

Каковы свойства, доступные на объекте 'richTextParagraph.richText'? Есть ли среди них один html? Если да, то каков его тип возврата? –

+0

Свойства - это только 'id' и' text' (оба типа 'String'). За https://dev.office.com/reference/add-ins/onenote/richtext –

ответ

2

Мы не задокументировали еще (это будет добавлено в ближайшее время), но есть «getHtml()» метод на Richtext объекта. Вот пример фрагмента.

OneNote.run(function (context) { 

    var outline = context.application.getActiveOutlineOrNull(); 

    outline.load('id, type, paragraphs/id, paragraphs/type'); 

    return context.sync().then(function() { 
     if (!outline.isNull) { 
      var richTextParagraphs = []; 
      var htmls = []; 
      console.log("outline id: " + outline.id); 
      for(var i = 0; i < outline.paragraphs.items.length; i++){ 
       var paragraph = outline.paragraphs.items[i]; 
       console.log("paragraph type " + paragraph.type); 
       if (paragraph.type == "RichText"){ 
        richTextParagraphs.push(paragraph); 
        var html = paragraph.richText.getHtml(); 
        htmls.push(html); 
        paragraph.load("richtext/id, richtext/languageid") 
       } 
      } 

      return context.sync().then(function(){ 
       for(var i = 0; i < richTextParagraphs.length; i++){ 
        var richTextParagraph = richTextParagraphs[i]; 
        console.log("Rich text paragraph id: " + richTextParagraph.richText.Id + " and " + richTextParagraph.richText.languageId) 
       } 
       for(var i = 0; i < htmls.length; i++){ 
        var html = htmls[i]; 
        console.log("Rich text paragraph html: " + html.value) 
       } 
      }); 
     } 
    }); 
}) 
.catch(function(error) { 
    console.log("Error: " + error); 
    if (error instanceof OfficeExtension.Error) { 
     console.log("Debug info: " + JSON.stringify(error.debugInfo)); 
    } 
}); 
+0

Обратите внимание, что это не полный HTML-код страницы, только на уровне расширенного текста. Функция выше также не учитывает все объекты с богатым текстом, может быть больше на странице (внутри таблиц, в абзацах абзацев ...) –

+0

Хорхе, спасибо за быстрый ответ. Приведенный выше код бросает мое предупреждение об ошибке синтаксиса в Chrome. Я понял, что это может быть проблема с копией и вставкой, поэтому я написал ее вручную, но потом я получил ошибку: «Ошибка: ValueNotLoaded: значение объекта результата еще не загружено. Прежде чем читать свойство value, вызовите «context.sync()» в соответствующем контексте запроса. «Не могли бы вы прояснить? –

+0

Я обновил код и протестировал его. Теперь он должен работать. –

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