Есть ли способ добавить вкладку между символами в абзаце?

1

Я создал приложение, которое шаблонирует письмо и хотел бы получить значения CC внизу, чтобы правильно подойти. Прилагаемое изображение показывает, что строка foo не является полным символом строки строки.

Изображение 174551

Линия foo была выполнена с использованием:

paragrapgh.insertHtml('<div>CC:&emsp;&emsp;foo</div>');

Строка бара - это собственный абзац, поэтому я смог получить правильное расстояние между вкладками, используя: secondParagraph.leftIndent = 36;

Есть ли способ установить правильный отступ между символами, используя office.js? Из того, что я видел в документации, leftIndent кажется единственным вариантом, но это будет работать только над самим абзацем, а не между текстом.

Любая помощь будет оценена, спасибо!

Обновить:

Я пробовал это:

paragrapgh.insertHtml('<div>CC:\tfoo</div>');

Word рассматривает \t как одно пространство, а не вкладку.

  • 0
    Не используйте insertHTML, используйте insertText - см. Мой ответ. Вот почему Word Online не поддерживает вкладки. HTML не поддерживает вкладки (чрезмерный пробел).
Теги:
ms-word
office-js

2 ответа

0

Следующий код Office JS (из Script Lab) работает для меня на рабочем столе. Он использует стандартный минимальный Word Open XML для вставки (вместо текущего выбора) абзаца с выровненным по левому краю tab-stop. Затем он записывает текст в документ с символами табуляции, чтобы выровнять текст.

Обратите внимание: поскольку Word On-line не поддерживает табуляции и символы табуляции, это будет работать в Word On-line, но эффект будет другим (без выравнивания).

//create paragraph with tab stops and tabs
async function run() {
    await Word.run(async (context) => {
        let sXml = '<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/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:pPr><w:tabs><w:tab w:val="left" w:pos ="851"/></w:tabs></w:pPr><w:r><w:t></w:t></w:r></w:p></w:body></w:document></pkg:xmlData></pkg:part></pkg:package>';

        //console.log("XML: " + sXml);
        let para = context.document.getSelection();
        para.insertOoxml(sXml, "Replace");
        para.insertText("CC:\tPerson1\n\tPerson2", "Start");
        await context.sync();
    });
}

Результат выглядит так:

Изображение 174551

Соответствующая часть Word Open XML для абзаца с табуляторами останавливается:

<w:body>
<w:p><w:pPr><w:tabs><w:tab w:val="left" w:pos ="851"/></w:tabs></w:pPr><w:r><w:t></w:t></w:r></w:p>
</w:body>
-1

используйте escape-символы (в данном случае: '\ t')

context.document.body.insertParagraph("check out how to tab next word: Hell\to tab!", "end");
  • 0
    Я думаю, что ОП спрашивает, как определить табуляцию? Простая вставка ANSI 9 не гарантирует, что текст будет выровнен, в зависимости от длины того, что слева (в данном случае CC).
  • 0
    я не знаю, почему мы не ждем разъяснений перед голосованием вниз :)
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню