Метод Aspose::Words::Paragraph::JoinRunsWithSameFormatting

Paragraph::JoinRunsWithSameFormatting() method

Объединяет участки текста с одинаковым форматированием в абзаце.

int32_t Aspose::Words::Paragraph::JoinRunsWithSameFormatting()

ReturnValue

Количество выполненных объединений. Когда объединяются N соседних участков, они считаются как N - 1 объединений.

Примеры

Показывает, как упростить абзацы, объединяя избыточные фрагменты.

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

// Вставьте четыре фрагмента текста в абзац.
builder->Write(u"Run 1. ");
builder->Write(u"Run 2. ");
builder->Write(u"Run 3. ");
builder->Write(u"Run 4. ");

// Если открыть этот документ в Microsoft Word, абзац будет выглядеть как единое непрерывное тело текста.
// Однако он будет состоять из четырёх отдельных фрагментов с одинаковым форматированием. Фрагментированные абзацы такого типа
// могут возникать, когда мы вручную редактируем части одного абзаца многократно в Microsoft Word.
System::SharedPtr<Aspose::Words::Paragraph> para = builder->get_CurrentParagraph();

ASSERT_EQ(4, para->get_Runs()->get_Count());

// Измените стиль последнего фрагмента, чтобы отличить его от первых трёх.
para->get_Runs()->idx_get(3)->get_Font()->set_StyleIdentifier(Aspose::Words::StyleIdentifier::Emphasis);

// Мы можем вызвать метод "JoinRunsWithSameFormatting", чтобы оптимизировать содержимое документа
// объединяя похожие фрагменты в один, уменьшая их общее количество.
// Этот метод также возвращает количество фрагментов, объединённых этим методом.
// Эти два объединения произошли для комбинирования фрагментов #1, #2 и #3,
// пропуская Run #4, потому что у него несовместимый стиль.
ASSERT_EQ(2, para->JoinRunsWithSameFormatting());

// Количество оставшихся запусков будет равно исходному количеству
// минус количество объединений запусков, выполненных методом "JoinRunsWithSameFormatting".
ASSERT_EQ(2, para->get_Runs()->get_Count());
ASSERT_EQ(u"Run 1. Run 2. Run 3. ", para->get_Runs()->idx_get(0)->get_Text());
ASSERT_EQ(u"Run 4. ", para->get_Runs()->idx_get(1)->get_Text());

См. также

Paragraph::JoinRunsWithSameFormatting(const System::SharedPtr<Aspose::Words::JoinRunsOptions>&) method

Объединяет участки текста с одинаковым форматированием в абзаце.

int32_t Aspose::Words::Paragraph::JoinRunsWithSameFormatting(const System::SharedPtr<Aspose::Words::JoinRunsOptions> &options)
ПараметрТипОписание
параметрыconst System::SharedPtr<Aspose::Words::JoinRunsOptions>&Дополнительные параметры

ReturnValue

Количество выполненных объединений. Когда объединяются N соседних участков, они считаются как N - 1 объединений.

Примеры

Показывает, как объединять пробеги с одинаковым форматированием, игнорируя избыточные и незначительные атрибуты.

auto doc = System::MakeObject<Aspose::Words::Document>();
auto builder = System::MakeObject<Aspose::Words::DocumentBuilder>(doc);

// Создайте пробеги с одинаковым видимым форматированием, но с некоторыми внутренними различиями.
builder->get_Font()->set_Name(u"Arial");
builder->get_Font()->set_Size(12);
builder->Write(u"Hello ");
builder->Write(u"world");

// Проверьте пробеги перед объединением.
ASSERT_EQ(2, doc->get_FirstSection()->get_Body()->get_FirstParagraph()->get_Runs()->get_Count());
ASSERT_EQ(u"Hello ", doc->get_FirstSection()->get_Body()->get_FirstParagraph()->get_Runs()->idx_get(0)->get_Text());
ASSERT_EQ(u"world", doc->get_FirstSection()->get_Body()->get_FirstParagraph()->get_Runs()->idx_get(1)->get_Text());

// Настройте параметры для игнорирования избыточных и незначительных атрибутов во время объединения.
auto options = System::MakeObject<Aspose::Words::JoinRunsOptions>();
options->set_IgnoreRedundant(true);
// Игнорировать избыточные свойства пробегов, которые не влияют на внешний вид.
options->set_IgnoreInsignificant(true);
// Игнорировать незначительные различия, такие как пробеги, содержащие только пробелы.

// Объедините участки, имеющие одинаковое видимое форматирование, используя расширенные параметры.
doc->get_FirstSection()->get_Body()->get_FirstParagraph()->JoinRunsWithSameFormatting(options);

// Проверьте, что участки были успешно объединены.
ASSERT_EQ(1, doc->get_FirstSection()->get_Body()->get_FirstParagraph()->get_Runs()->get_Count());
ASSERT_EQ(u"Hello world", doc->get_FirstSection()->get_Body()->get_FirstParagraph()->get_Runs()->idx_get(0)->get_Text());

doc->Save(get_ArtifactsDir() + u"Paragraph.JoinRunsWithSameFormattingWithOptions.docx");

См. также