Проблема со вставкой HTML в contentControl с Word 2016 + Office JS - PullRequest
0 голосов
/ 03 апреля 2020

Проблема:

Сценарий: создание надстройки Word 2016 с использованием Office JS (сборка узла + проект Yo-Office)

Я создаю HTML содержимое с От 1 до 5 абзацев, каждый из которых заключен в тег <p>. Затем я вставляю это содержимое в пользовательский элемент управления с помощью метода «Вставить HTML» объекта «Абзац» с использованием параметра «Заменить».

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

После вставки первый (а иногда и последующий - не согласованный) абзац вставляется с использованием стиля «Обычный (Web)», а не наследует окружение желаемое имя стиля.

Фрагмент кода:

function btnApplySettings() {
  if (caselist_text.length) {
    var t1 = ""; var t2 = ""; var t3 = ""; var t4 = ""; var t5 = "";
    if (caselist_html[CT_Applied].length) t1 = "<p>" + caselist_html[CT_Applied].join("; ") + ", applied.</p>";
    if (caselist_html[CT_Considered].length) t2 = "<p>" + caselist_html[CT_Considered].join("; ") + ", considered.</p>";
    if (caselist_html[CT_Discussed].length) t3 = "<p>" + caselist_html[CT_Discussed].join("; ") + ", discussed.</p>";
    if (caselist_html[CT_Distinguished].length) t4 = "<p>" + caselist_html[CT_Distinguished].join("; ") + ", distinguished.</p>";
    if (caselist_html[CT_Notfollowed].length) t5 = "<p>" + caselist_html[CT_Notfollowed].join("; ") + ", not followed.</p>";
    var html = t1 + t2 + t3 + t4 + t5;
    updateContentControl(CC_CasesCited, html, settings.location.replace, settings.style.html);
    setDocumentProperty(DP_References, caselist_text.join("; "));
  }
}

Примечание. Моя функция updateContentControl представляет собой обертку, которая позволяет мне обновлять элемент управления контентом с помощью Text / HTML / Paragraph и вставлять в Начало / конец / замена.

Дополнительные сведения:

Метод insertText работает нормально и даже учитывает \ n для абзацев, но мне требуется италийское c форматирование для частичного текста в каждом абзаце, поэтому эта опция отсутствует.

InsertParagraph звучал как идеальный метод, однако из-за из-за полного отсутствия документации MS я не знаю, как применить форматирование itali c к содержимому абзаца.

Я действительно не хочу go по пути insertOO xml, опять же из-за как сложность, так и отсутствие документации. В любом случае, это скорее ошибка, чем отсутствие понимания.

Когда я перекодировал свою функцию для вставки каждого абзаца через несколько операторов вставки HTML, порядок результирующих абзацев произвольный и обычно отсутствует последовательности. Это, очевидно, связано с асинхронной c природой вызовов. Таким образом, этот метод также отсутствует (или, возможно, мне следует обернуть мой код вызова в ожидающие отчеты, но почему я должен сделать 5 вызовов метода вместо одного).

Еще один более ранний подход использовал <br/> вместо <p> -обертывания, это работало, но мягкая новая строка, созданная <br>, искажает текст Justered, заставляя последнюю строку абзацев вытягиваться из слева направо, даже с двумя словами (одно выровненное слева, другое правое)

В двух словах, почему это вставило html:

<p><i>Just the one paragraph insert</i> all works fine!, applied.</p>
<p><i>the second inserted</i> goes bad, considered.</p>

... результат в этом рендеринге в моем документе Word:

[Style: "Normal (Web)"] <p><i>My italic wording/i> all works fine!, applied.</p>
[Style: "My Style"] <p><i>the second inserted</i> goes bad, considered.</p>

Я также обнаружил, что если я вставляю только один абзац, он работает нормально:

[Style: "My Style"] <p><i>Just the one paragraph insert</i> all works fine!, applied.</p>

В отчаянном обходном пути я даже попытался вставив избыточный и пустой <p></p> для 1-го абзаца, чтобы только один из них был поврежден, но с бешенством API продолжил портить 2-й абзац. Просто безумие.

Исследование:

Моя проблема, кажется, очень тесно связана с этим вопросом: Непоследовательное поведение хоста с Office JS insert HTML и форматированием абзаца

Хотя мой сценарий перевернут - они пытаются изменить стиль, и его частично игнорируют, тогда как я просто хочу, чтобы все параграфы уважали свой собственный родительский стиль, который также частично игнорируется - сходство в том, что это ошибка в общее форматирование нескольких абзацев.

Любые идеи приветствуются!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...