Удаление пользовательских табуляций из уровней списка дает вам точный контроль над макетом списка в документах Word. Функция Removing List Level Tab Stops добавляет простой метод ListLevel.RemoveTabStop(), который очищает любую ранее установленную табуляцию. В этой статье мы расскажем, как установить SDK, создать список, удалить его табуляцию и сохранить обновлённый документ.

Зачем удалять табуляцию уровня списка в документе Word

Списки в Word часто используют табуляцию по умолчанию, которая выравнивает номер пункта или маркер с текстом. При программной генерации документа вы можете добавить пользовательскую табуляцию для достижения определённого визуального выравнивания. Позже требования бизнеса могут измениться, или понадобится использовать тот же шаблон для другого макета. Ручное редактирование документа для удаления табуляции занимает много времени и подвержено ошибкам. С помощью ListLevel.RemoveTabStop() вы можете программно вернуть уровень списка к его поведению по умолчанию, обеспечивая согласованность сгенерированных документов без ручного вмешательства.

Представляем API ListLevel

Aspose.Words for .NET предоставляет богатую объектную модель для работы с документами Word. Класс ListLevel представляет отдельный уровень списка (например, первый уровень нумерованного списка). Начиная с версии 26.7, класс включает метод RemoveTabStop(), который очищает любые пользовательские табуляции, установленные для этого уровня.

Для начала установите пакет Aspose.Words из NuGet:

Install-Package Aspose.Words

Вы можете узнать больше о продукте на странице продукта страница продукта Aspose.Words for .NET. Подробная документация доступна в документация Aspose.Words .NET, а полный справочник API можно изучить здесь.

Удалить пользовательскую табуляцию из одного уровня списка

Пошаговое руководство

  1. Создайте новый Document и DocumentBuilder. Объект Document хранит файл Word в памяти, а DocumentBuilder упрощает создание содержимого.
  2. Примените формат нумерованного списка по умолчанию. Это дает нам список с предопределённым уровнем и табуляцией.
  3. Запишите несколько элементов списка. Элементы наследуют форматирование списка.
  4. Получите текущий ListLevel из builder. Это уровень, который мы только что создали.
  5. Вызовите RemoveTabStop() у ListLevel. Это удалит пользовательскую табуляцию.
  6. Сохраните документ чтобы проверить изменение.

В следующем примере демонстрируется, как удалить пользовательскую табуляцию из уровня списка, используя C# и Aspose.Words.

// For complete examples and data files, please go to https://github.com/aspose-words/Aspose.Words-for-.NET.git.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Create a list with default formatting
builder.ListFormat.ApplyNumberDefault();
builder.Writeln("Numbered list item 1");
builder.Writeln("Numbered list item 2");

// Get the list level and remove its tab stop
ListLevel listLevel = builder.ListFormat.ListLevel;
listLevel.RemoveTabStop();

doc.Save("Paragraph.RemoveTabStopFromListLevel.docx");

Как это работает

  • builder.ListFormat.ApplyNumberDefault() переключает builder в контекст нумерованного списка, используя стиль списка по умолчанию, определённый в Word. Это неявно создаёт новый объект List и соответствующий ListLevel для первого уровня.
  • builder.Writeln(...) записывает два пункта списка. Поскольку builder находится в режиме списка, каждый вызов автоматически добавляет соответствующий номер пункта и выравнивает текст в соответствии с табуляцией уровня.
  • builder.ListFormat.ListLevel возвращает экземпляр ListLevel, который управляет форматированием текущего уровня списка (уровень 0 в данном случае).
  • listLevel.RemoveTabStop() удаляет пользовательскую табуляцию, установленную при создании уровня списка. После этого вызова список будет использовать табуляцию Word по умолчанию, обычно расположенную на левом отступе уровня.
  • doc.Save(...) записывает документ из памяти в файл с именем Paragraph.RemoveTabStopFromListLevel.docx. Откройте файл в Microsoft Word или любом совместимом просмотрщике, чтобы увидеть, что номера и текст теперь выровнены с использованием табуляции по умолчанию.

Note: Этот пример кода воспроизведён из официальных примечаний к выпуску Aspose.Words и не был выполнен в песочнице. Проверьте его в своей среде разработки перед использованием в продакшене.

Удалить табуляцию со всех уровней списка в документе

Во многих реальных сценариях документ содержит несколько списков, каждый из которых имеет несколько уровней. Удаление табуляции только с одного уровня может быть недостаточным. Ниже приведён фрагмент кода, показывающий, как пройтись по каждому списку в документе и очистить табуляцию на каждом уровне.

// Load an existing document that contains multiple lists
Document doc = new Document("Input.docx");

// Iterate through every list in the document
foreach (List list in doc.Lists)
{
    // Each list can have multiple levels (0‑8). Iterate them.
    foreach (ListLevel level in list.ListLevels)
    {
        // Remove any custom tab stop for this level
        level.RemoveTabStop();
    }
}

// Save the updated document
doc.Save("Output_NoTabStops.docx");

Объяснение кода

  • new Document("Input.docx") загружает существующий файл Word, который может содержать несколько списков.
  • doc.Lists возвращает коллекцию объектов List, представляющих каждый отдельный список в документе.
  • list.ListLevels предоставляет доступ к девяти возможным уровням (0‑8) для этого списка. Даже если уровень не используется, коллекция всё равно содержит экземпляр ListLevel с форматированием по умолчанию.
  • Внутри внутреннего цикла вызывается level.RemoveTabStop() для каждого уровня, гарантируя, что в документе не останется пользовательских табуляций.
  • Наконец, doc.Save("Output_NoTabStops.docx") записывает очищенный документ.

Этот подход особенно полезен, когда необходимо обеспечить единообразное оформление списка в наборе сгенерированных отчётов или при нормализации документов, полученных из внешних источников.

Программное добавление и последующее удаление табуляции

Иногда может потребоваться добавить пользовательскую табуляцию для временного макета, выполнить некоторые операции, а затем вернуться к настройкам по умолчанию. SDK позволяет добавить табуляцию с помощью ListLevel.TabStops.Add(double position). После завершения временного форматирования вы можете вызвать RemoveTabStop(), чтобы очистить.

Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

builder.ListFormat.ApplyNumberDefault();
builder.Writeln("Temporarily aligned item 1");

// Add a custom tab stop at 72 points (1 inch)
ListLevel level = builder.ListFormat.ListLevel;
level.TabStops.Add(72);

builder.Writeln("Item with custom tab stop");

// Later, remove the custom tab stop
level.RemoveTabStop();

builder.Writeln("Item after removing tab stop");

doc.Save("TempTabStopDemo.docx");

Объяснение кода

  • После создания документа и применения нумерованного списка мы пишем первый элемент.
  • level.TabStops.Add(72) вставляет пользовательскую табуляцию на 72 пункта (ровно один дюйм). Последующий элемент списка выравнивает свой текст в этой позиции.
  • После того как временное форматирование больше не требуется, level.RemoveTabStop() удаляет пользовательскую табуляцию, заставляя последующие элементы вернуться к выравниванию по умолчанию.
  • Последний Writeln демонстрирует эффект удаления.

Этот шаблон удобен, когда требуется одноразовое исправление — например, выравнивание заголовка внутри списка для конкретного макета страницы — при этом оставляя остальную часть документа чистой.

Получить бесплатную лицензию

Aspose предлагает временную бесплатную лицензию, которая удаляет водяные знаки оценки и предоставляет полный доступ к API для разработки и тестирования. Вы можете запросить её на странице страница временной лицензии Aspose.

Бесплатные дополнительные ресурсы

Заключение

В этом руководстве мы рассмотрели, как использовать новый метод ListLevel.RemoveTabStop(), представленный в Aspose.Words 26.7. Очистив пользовательские табуляции, вы восстанавливаете контроль над выравниванием списков, упрощаете шаблоны документов и обеспечиваете согласованное форматирование сгенерированных файлов Word. Примеры показали удаление для отдельного уровня списка, массовое удаление по всему документу и шаблон для временных корректировок табуляций. Внедрение этих техник в ваши .NET‑приложения сделает автоматизацию Word более надёжной и проще в обслуживании.

Часто задаваемые вопросы

  1. Что на самом деле удаляет ListLevel.RemoveTabStop()?
    Метод удаляет любой пользовательский табулятор, определённый для уровня списка, возвращая уровень к использованию табулятора по умолчанию, заданного стилем документа.

  2. Нужно ли вызывать Save() после удаления позиции табуляции?
    Да. Изменения происходят в памяти, поэтому необходимо вызвать Document.Save(), чтобы сохранить обновлённое форматирование списка в файл.

  3. Могу ли я удалить табуляцию со всех уровней списка в одном документе?
    Конечно. Вы можете пройтись по каждому List в документе, а затем по каждому ListLevel, вызывая RemoveTabStop() там, где это необходимо.

  4. Поддерживается ли RemoveTabStop() для маркированных списков, так же как и для нумерованных списков?
    Да. Метод работает с любым ListLevel, независимо от того, представляет ли он маркер, номер или многоуровневый формат.

  5. Удалит ли удаление пользовательской табуляции влияние на отступы существующих элементов списка?
    Только позиция табуляции меняется. Общий отступ, определяемый левым отступом уровня списка, остаётся неизменным, поэтому элементы списка сохраняют свою визуальную иерархию.

  6. Нужна ли платная лицензия для использования ListLevel.RemoveTabStop()?
    API доступен в бесплатной временной лицензии, но для использования в продакшене следует получить полную лицензию от Aspose.

Читать дальше