Aspose.Words — это многофункциональный набор API-интерфейсов, который позволяет программно создавать, редактировать и преобразовывать документы MS Word. Он предоставляет широкий спектр основных, а также расширенных функций для работы с текстовыми документами. В этой статье вы узнаете, как использовать Aspose.Words for C++ и создавать документы MS Word с нуля с помощью C++. Пошаговое руководство, а также примеры кода помогут вам узнать, как вставлять текст, изображения, таблицы, списки и другие элементы в документы Word.
- API обработки текстов C++
- Создание документов MS Word с помощью C++
- Редактировать или обновлять существующие файлы MS Word DOC/DOCX с помощью C++
- Вставка изображений в документы Word с помощью C++
- Вставить таблицу в документы Word с помощью C++
- Добавление списков в документы Word с помощью C++
C++ API для создания документов MS Word
Aspose.Words for C++ позволяет генерировать текстовые документы и управлять ими в приложениях C++ без MS Word. Вы можете загрузить API или установить его в своих приложениях C++ с помощью NuGet с помощью следующей команды.
PM> Install-Package Aspose.Words.Cpp
Создание документов MS Word с помощью C++
Давайте сначала создадим простой документ Word и сохраним его как файл .doc или .docx. Для этого вам необходимо выполнить следующие шаги:
- Создайте пустой документ Word, используя класс Document.
- Создайте объект класса DocumentBuilder, чтобы добавить содержимое в документ.
- Добавьте текст, используя метод DocumentBuilder->Writeln().
- Сохраните документ как файл .doc или .docx, используя метод Документ->Сохранить().
В следующем примере кода показано, как создать документ Word DOCX с помощью C++.
// Инициализировать документ.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Используйте конструктор документов, чтобы добавить содержимое в документ.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Добавить текст
builder->Writeln(u"Hello World!");
// Сохраните документ на диск.
doc->Save(u"document.docx");
Редактировать или обновлять существующий документ Word DOC/DOCX с помощью C++
Вы также можете редактировать существующие документы Word, используя Aspose.Words для C++. Для этого API использует объектную модель документа (DOM) для представления документа в памяти. DOM позволяет получить доступ к элементам документа Word, таким как верхний и нижний колонтитулы, абзацы, таблицы и т. д. Подробнее о DOM здесь.
Для обновления документа Word просто загрузите его с помощью класса Document и обработайте его по желанию. Ниже приведены шаги по редактированию и обновлению существующего документа Word.
- Загрузите документ Word, используя класс Document.
- Создайте объект класса DocumentBuilder для доступа к содержимому.
- Получите доступ к нужному абзацу (или любому другому элементу) и обновите содержимое.
- Сохраните обновленный документ методом Документ->Сохранить().
В следующем примере кода показано, как обновить текст абзаца в документе Word с помощью C++.
// Инициализировать документ.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Используйте конструктор документов, чтобы добавить содержимое в документ.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Получить раздел
auto section = doc->get_Sections()->idx_get(0);
// Получить тело
auto body = section->get_Body();
// Получить первый абзац
auto para = body->get_FirstParagraph();
// Обновить текст
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text.");
// Сохраните документ на диск.
doc->Save(u"updated_document.docx");
Вставка изображений в документ Word с помощью C++
Ниже приведены шаги для вставки изображения в документы MS Word с использованием C++.
- Создайте новый документ Word или загрузите существующий с помощью класса Document.
- Создайте объект DocumentBuilder и инициализируйте его с помощью объекта Document.
- Вставьте изображение, используя метод DocumentBuilder->InsertImage(String fileName, RelativeHorizontalPosition horzPos, double left, RelativeVerticalPosition vertPos, double top, double width, double height, WrapType wrapType).
- Сохраните документ как файл Word.
В следующем примере кода показано, как вставить изображение в документ Word с помощью C++.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Добавьте логотип в верхний левый угол страницы. Изображение размещается перед всем остальным текстом.
System::SharedPtr<Shape> shape = builder->InsertImage( u"Aspose Logo.png", RelativeHorizontalPosition::Page, 60.0, RelativeVerticalPosition::Page, 60.0, -1.0, -1.0, WrapType::None);
doc->Save(u"document_with_image.docx");
Вставить таблицу в документы Word с помощью C++
Таблица является важным элементом документов Word для хранения данных в виде строк и столбцов. Чтобы создать таблицу в документах Word, выполните следующие действия.
- Создайте новый документ Word, используя класс Document.
- Создайте объект класса Table.
- Вставить таблицу в документ с помощью метода Document->getFirstSection()->getBody()->AppendChild().
- Создайте новую строку, используя класс Row.
- Вставить строку в таблицу методом Table->AppendChild(row).
- Создайте новую Cell и вставьте в нее текст с помощью метода Cell->getFirstParagraph()->AppendChild().
- Вставьте ячейку в строку, используя метод Row->AppendChild().
- Повторите процесс для добавления нескольких строк.
- Сохраните документ методом Документ->Сохранить().
В следующем примере кода показано, как вставить таблицу в документ Word с помощью C++.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Добавьте таблицу в документ.
doc->get_FirstSection()->get_Body()->AppendChild(table);
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);
// Теперь мы можем применить любые настройки автоматической подгонки.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Создайте ячейку и добавьте ее в строку
System::SharedPtr<Cell> cell = System::MakeObject<Cell>(doc);
cell->get_CellFormat()->get_Shading()->set_BackgroundPatternColor(System::Drawing::Color::get_LightBlue());
cell->get_CellFormat()->set_Width(80);
// Добавьте абзац в ячейку, а также новый запуск с текстом.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Добавьте ячейку в строку.
row->AppendChild(cell);
// Затем мы повторили бы процесс для других ячеек и строк в таблице.
// Мы также можем ускорить работу, клонируя существующие ячейки и строки.
row->AppendChild((System::StaticCast<Node>(cell))->Clone(false));
row->get_LastCell()->AppendChild(System::MakeObject<Paragraph>(doc));
row->get_LastCell()->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 2 Text"));
// Сохраните документ на диск.
doc->Save(u"document_with_table.docx");
Добавление списков в документы Word с помощью C++
И последнее, но не менее важное: создание списка в документах Word. Ниже приведены шаги для создания маркированного списка.
- Создайте новый документ Word или загрузите существующий с помощью класса Document.
- Определите новый объект DocumentBuilder и инициализируйте его с помощью объекта Document.
- Создайте список, используя метод DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)) .
- Заполните список и установите уровень списка.
- Сохраните документ в виде файла.
В следующем примере кода показано, как создать список в документе Word с помощью C++.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Создайте нумерованный список на основе одного из шаблонов списка Microsoft Word и
// применить его к текущему абзацу в конструкторе документов.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// В этом списке 9 уровней, давайте попробуем их все.
for (int32_t i = 0; i < 9; i++)
{
builder->get_ListFormat()->set_ListLevelNumber(i);
builder->Writeln(System::String(u"Level ") + i);
}
// Создайте маркированный список на основе одного из шаблонов списка Microsoft Word.
// and применить его к текущему абзацу в конструкторе документов.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// В этом списке 9 уровней, давайте попробуем их все.
for (int32_t i = 0; i < 9; i++)
{
builder->get_ListFormat()->set_ListLevelNumber(i);
builder->Writeln(System::String(u"Level ") + i);
}
// Это способ остановить форматирование списка.
builder->get_ListFormat()->set_List(nullptr);
// Сохраните документ на диск.
builder->get_Document()->Save(u"document_with_list.docx");
Вывод
В этой статье вы увидели, как создавать документы MS Word с нуля с помощью C++. Кроме того, вы узнали, как вставлять такие элементы, как текст, изображения, таблицы и списки, в новые или существующие документы Word. Вы можете узнать больше о расширенных функциях API, используя документацию.