Работа с заголовками в PDF

Применение стиля нумерации в заголовке

Любой текст в документе начинается с заголовка. Заголовки являются неотъемлемой частью содержания, независимо от стиля и темы. Заголовки помогают привлечь внимание к тексту и помогают пользователям находить необходимую информацию в документе, улучшая читаемость и визуальное восприятие. Используя стили заголовков, вы также можете быстро создать оглавление, изменить структуру документа. Итак, давайте рассмотрим, как работать с заголовками, используя библиотеку Aspose.PDF for C++.

Aspose.PDF for C++ предлагает множество предопределенных стилей нумерации. Эти предопределенные стили нумерации хранятся в перечислении NumberingStyle. Предопределенные значения перечисления NumberingStyle и их описания приведены ниже:

Типы заголовков Описание
NumeralsArabic Арабский тип, например, 1,1.1,…
NumeralsRomanUppercase Римский верхний тип, например, I,I.II, …
NumeralsRomanLowercase Римский нижний тип, например, i,i.ii, …
LettersUppercase Английский верхний тип, например, A,A.B, …
LettersLowercase Английский нижний тип, например, a,a.b, …

Свойство Style класса Aspose.PDF.Heading используется для установки стилей нумерации заголовков.

Рисунок: Предопределенные стили нумерации
Исходный код, для получения вывода, показанного на приведенной выше иллюстрации, приведен ниже в примере.
void WorkingWithHeadingsInPDF() {
    // Строка для имени пути
    String _dataDir("C:\\Samples\\");

    // Строка для имени входного файла
    String outputFileName("ApplyNumberStyle_out.pdf");

    // Открыть документ
    auto document = MakeObject<Document>();

    document->get_PageInfo()->set_Width(612.0);
    document->get_PageInfo()->set_Height(792.0);
    document->get_PageInfo()->set_Margin (MakeObject<MarginInfo>());
    document->get_PageInfo()->get_Margin()->set_Left(72);
    document->get_PageInfo()->get_Margin()->set_Right(72);
    document->get_PageInfo()->get_Margin()->set_Top (72);
    document->get_PageInfo()->get_Margin()->set_Bottom (72);
            
    auto pdfPage = document->get_Pages()->Add();
    pdfPage->get_PageInfo()->set_Width (612.0);
    pdfPage->get_PageInfo()->set_Height (792.0);
    pdfPage->get_PageInfo()->set_Margin(MakeObject<MarginInfo>());
    pdfPage->get_PageInfo()->get_Margin()->set_Left(72);
    pdfPage->get_PageInfo()->get_Margin()->set_Right(72);
    pdfPage->get_PageInfo()->get_Margin()->set_Top(72);
    pdfPage->get_PageInfo()->get_Margin()->set_Bottom(72);

    auto floatBox = MakeObject<FloatingBox>();
    floatBox->set_Margin(pdfPage->get_PageInfo()->get_Margin());

    pdfPage->get_Paragraphs()->Add(floatBox);

    auto textFragment = MakeObject<TextFragment>();
    auto segment = MakeObject<TextSegment>();

    auto heading = MakeObject<Heading>(1);
    heading->set_IsInList(true);
    heading->set_StartNumber(1);
    heading->set_Text (u"Список 1");
    heading->set_Style(NumberingStyle::NumeralsRomanLowercase);
    heading->set_IsAutoSequence(true);

    floatBox->get_Paragraphs()->Add(heading);

    auto heading2 = MakeObject<Heading>(1);
    heading2->set_IsInList (true);
    heading2->set_StartNumber(13);
    heading2->set_Text (u"Список 2");
    heading2->set_Style(NumberingStyle::NumeralsRomanLowercase);
    heading2->set_IsAutoSequence(true);;

    floatBox->get_Paragraphs()->Add(heading2);

    auto heading3 = MakeObject<Heading>(2);
    heading3->set_IsInList (true);
    heading3->set_StartNumber(1);
    heading3->set_Text (u"значение, на дату вступления в силу плана, имущества, подлежащего распределению в рамках плана в счет каждой разрешенной");
    heading3->set_Style(NumberingStyle::LettersLowercase);
    heading3->set_IsAutoSequence(true);

    floatBox->get_Paragraphs()->Add(heading3); 

    // Сохранить объединенный выходной файл
    document->Save(_dataDir + outputFileName);
}