Aspose.Words es una colección rica en funciones de API que le permite crear, editar y convertir documentos de MS Word mediante programación. Proporciona una amplia gama de funciones básicas y avanzadas para manipular documentos de procesamiento de texto. En este artículo, aprenderá a usar Aspose.Words for C++ y a crear documentos de MS Word desde cero usando C++. La guía paso a paso, así como los ejemplos de código, le permitirán saber cómo insertar texto, imágenes, tablas, listas y otros elementos en documentos de Word.
- API de procesamiento de textos C++
- Crear documentos de MS Word usando C++
- Edite o actualice MS Word DOC/DOCX existente usando C++
- Insertar imágenes en documentos de Word usando C++
- Insertar tabla en documentos de Word usando C++
- Agregar listas en documentos de Word usando C++
API de C++ para crear documentos de MS Word
Aspose.Words for C++ le permite generar y manipular los documentos de procesamiento de texto dentro de aplicaciones C++ sin MS Word. Puede descargar la API o instalarla dentro de sus aplicaciones C++ usando NuGet con el siguiente comando.
PM> Install-Package Aspose.Words.Cpp
Crear documentos de MS Word usando C++
Primero, creemos un documento de Word simple y guárdelo como un archivo .doc o .docx. Para esto, debe seguir los siguientes pasos:
- Cree un documento de Word en blanco usando la clase Document.
- Cree un objeto de la clase DocumentBuilder para agregar contenido al documento.
- Agregue texto usando el método DocumentBuilder->Writeln().
- Guarde el documento como archivo .doc o .docx utilizando el método Document->Save().
El siguiente ejemplo de código muestra cómo crear un documento DOCX de Word usando C++.
// Inicializar un documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
// Use un generador de documentos para agregar contenido al documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Añadir texto
builder->Writeln(u"Hello World!");
// Guarde el documento en el disco.
doc->Save(u"document.docx");
Edite o actualice Word DOC/DOCX existente usando C++
También puede editar los documentos de Word existentes usando Aspose.Words for C++. Para ello, la API utiliza el Modelo de objetos de documento (DOM) para la representación en memoria de un documento. El DOM le permite acceder a los elementos de un documento de Word, como encabezado/pie de página, párrafos, tablas, etc. Lea más sobre el DOM aquí.
Para actualizar un documento de Word, simplemente cárguelo usando la clase Document y procéselo como desee. Los siguientes son los pasos para editar y actualizar un documento de Word existente.
- Cargue el documento de Word usando la clase Document.
- Cree un objeto de la clase DocumentBuilder para acceder al contenido.
- Accede al párrafo deseado (o cualquier otro elemento) y actualiza el contenido.
- Guarde el documento actualizado utilizando el método Document->Save().
El siguiente ejemplo de código muestra cómo actualizar el texto de un párrafo en un documento de Word usando C++.
// Inicializar un documento.
System::SharedPtr<Document> doc = System::MakeObject<Document>(u"document.docx");
// Use un generador de documentos para agregar contenido al documento.
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Obtener sección
auto section = doc->get_Sections()->idx_get(0);
// Obtener cuerpo
auto body = section->get_Body();
// obtener el primer párrafo
auto para = body->get_FirstParagraph();
// Actualizar texto
auto run = para->get_Runs()->idx_get(0);
run->set_Text(u"This is the updated text.");
// Guarde el documento en el disco.
doc->Save(u"updated_document.docx");
Insertar imágenes en un documento de Word usando C++
Los siguientes son los pasos para insertar una imagen dentro de documentos de MS Word usando C++.
- Cree un nuevo documento de Word o cargue uno existente usando la clase Document.
- Cree un objeto DocumentBuilder e inicialícelo con el objeto Documento.
- Inserte la imagen usando el método DocumentBuilder->InsertImage(String fileName, RelativeHorizontalPosition horzPos, double left, RelativeVerticalPosition vertPos, double top, double width, double height, WrapType wrapType).
- Guarde el documento como un archivo de Word.
El siguiente ejemplo de código muestra cómo insertar una imagen en un documento de Word usando C++.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Agregue un logotipo en la parte superior izquierda de la página. La imagen se coloca delante de todo el resto del texto.
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");
Insertar tabla en documentos de Word usando C++
La tabla es un elemento importante de los documentos de Word para mantener los datos en forma de filas y columnas. Para generar una tabla dentro de los documentos de Word, siga los pasos a continuación.
- Cree un nuevo documento de Word utilizando la clase Document.
- Cree un objeto de la clase Table.
- Inserte la tabla en el documento usando el método Document->getFirstSection()->getBody()->AppendChild().
- Cree una nueva fila usando la clase Row.
- Inserte una fila en la tabla usando el método Table->AppendChild(row).
- Cree una nueva Cell e inserte texto en ella usando el método Cell->getFirstParagraph()->AppendChild().
- Inserte la celda en la fila usando el método Row->AppendChild().
- Repita el proceso para agregar varias filas.
- Guarde el documento usando el método Document->Save().
El siguiente ejemplo de código muestra cómo insertar una tabla en un documento de Word usando C++.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<Table> table = System::MakeObject<Table>(doc);
// Agregue la tabla al documento.
doc->get_FirstSection()->get_Body()->AppendChild(table);
System::SharedPtr<Row> row = System::MakeObject<Row>(doc);
row->get_RowFormat()->set_AllowBreakAcrossPages(true);
table->AppendChild(row);
// Ahora podemos aplicar cualquier configuración de ajuste automático.
table->AutoFit(AutoFitBehavior::FixedColumnWidths);
// Crea una celda y agrégala a la fila.
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);
// Agregue un párrafo a la celda, así como una nueva ejecución con algo de texto.
cell->AppendChild(System::MakeObject<Paragraph>(doc));
cell->get_FirstParagraph()->AppendChild(System::MakeObject<Run>(doc, u"Row 1, Cell 1 Text"));
// Agregue la celda a la fila.
row->AppendChild(cell);
// Luego repetiríamos el proceso para las otras celdas y filas de la tabla.
// También podemos acelerar las cosas clonando celdas y filas existentes.
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"));
// Guarde el documento en el disco.
doc->Save(u"document_with_table.docx");
Agregar listas en documentos de Word usando C++
Por último, pero no menos importante, crear una lista en los documentos de Word. Los siguientes son los pasos para crear una lista de viñetas.
- Cree un nuevo documento de Word o cargue uno existente usando la clase Document.
- Defina un nuevo objeto DocumentBuilder e inicialícelo con el objeto Documento.
- Cree una lista usando el método DocumentBuilder->getListFormat()->setList(Document->getLists()->Add(ListTemplate::NumberArabicDot)).
- Rellene la lista y establezca el nivel de la lista.
- Guarde el documento como un archivo.
El siguiente ejemplo de código muestra cómo crear una lista en un documento de Word usando C++.
System::SharedPtr<Document> doc = System::MakeObject<Document>();
System::SharedPtr<DocumentBuilder> builder = System::MakeObject<DocumentBuilder>(doc);
// Cree una lista numerada basada en una de las plantillas de lista de Microsoft Word y
// aplicarlo al párrafo actual en el generador de documentos.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::NumberArabicDot));
// Hay 9 niveles en esta lista, intentémoslos todos.
for (int32_t i = 0; i < 9; i++)
{
builder->get_ListFormat()->set_ListLevelNumber(i);
builder->Writeln(System::String(u"Level ") + i);
}
// Cree una lista con viñetas basada en una de las plantillas de lista de Microsoft Word
// and aplicarlo al párrafo actual en el generador de documentos.
builder->get_ListFormat()->set_List(doc->get_Lists()->Add(ListTemplate::BulletDiamonds));
// Hay 9 niveles en esta lista, intentémoslos todos.
for (int32_t i = 0; i < 9; i++)
{
builder->get_ListFormat()->set_ListLevelNumber(i);
builder->Writeln(System::String(u"Level ") + i);
}
// Esta es una forma de detener el formato de la lista.
builder->get_ListFormat()->set_List(nullptr);
// Guarde el documento en el disco.
builder->get_Document()->Save(u"document_with_list.docx");
Conclusión
En este artículo, ha visto cómo crear documentos de MS Word desde cero usando C++. Además, ha aprendido a insertar elementos como texto, imágenes, tablas y listas en documentos de Word nuevos o existentes. Puede explorar más sobre las características avanzadas de la API utilizando la documentación.