Проблема:
Сценарий: создание надстройки 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 и форматированием абзаца
Хотя мой сценарий перевернут - они пытаются изменить стиль, и его частично игнорируют, тогда как я просто хочу, чтобы все параграфы уважали свой собственный родительский стиль, который также частично игнорируется - сходство в том, что это ошибка в общее форматирование нескольких абзацев.
Любые идеи приветствуются!