Con el poder de Internet, todo se ha vuelto digital y los sistemas sin papel se han vuelto populares. Los documentos digitales, es decir, PDF, se encuentran entre los componentes básicos de los sistemas sin papel que han facilitado la vida al proporcionar funciones de generación y procesamiento automatizados. La mayoría de las empresas utilizan la automatización de documentos PDF para generar informes, recibos, facturas y otros documentos comerciales de forma dinámica. Por lo tanto, en este artículo, demostraré cómo integrar las funciones de automatización de PDF en aplicaciones basadas en C++ y generar archivos PDF usando C++.

Biblioteca PDF de C++

Para crear archivos PDF, usaremos la API Aspose.PDF for C++, que es una biblioteca nativa de C++ para trabajar con documentos PDF mediante programación. Le permite crear documentos PDF interactivos con el apoyo de una variedad de elementos PDF. Aspose.PDF for C++ está disponible en NuGet, así como en la sección Descargas de Aspose.

Crear un archivo PDF en C++

En primer lugar, crearemos un archivo PDF simple y agregaremos texto a la primera página en forma de párrafo. Los siguientes son los pasos a seguir:

  • Cree un objeto Document.
  • Agregue una página a PageCollection del documento.
  • Obtener el párrafo de la página.
  • Cree un objeto TextFragment y agréguelo al párrafo.
  • Guarde el documento PDF.

El siguiente ejemplo de código muestra cómo crear un documento PDF en C++.

// Crear documento
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
// Numeración de Páginas a partir de 1
auto page = pages->idx_get(1);
auto paragraps = page->get_Paragraphs();	
// Crear fragmento de texto
auto text = MakeObject<TextFragment>(u"PDF API for C++");
auto ts = text->get_TextState();
// Establecer estado de texto
ts->set_FontSize(16);
ts->set_FontStyle(FontStyles::Italic);
// Agregar al párrafo
paragraps->Add(text);
// Agregar texto al párrafo
paragraps->Add(MakeObject<TextFragment>(u"This example shows how to create a PDF with text using Aspose.PDF for C++."));
// Guardar archivo PDF
doc->Save(u"Example1.pdf");

Producción

Crear archivos PDF en C++

Cree un archivo PDF usando TextBuilder en C++

En esta sección, le mostraré cómo usar la clase TextBuilder para agregar varios fragmentos de texto y párrafos en la página. Además, en este ejemplo, aprenderá cómo establecer la posición del fragmento de texto en la página. Los siguientes son los pasos para realizar esta operación:

  • Cree un objeto Documento.
  • Agregar una página al documento.
  • Cree un objeto TextBuilder.
  • Cree un TextFragment y agregue su texto.
  • Establece la posición del TextFragment.
  • Agregue TextFragment usando TextBuilder.
  • Guardar documento PDF.

El siguiente ejemplo de código muestra cómo crear un PDF usando TextBuilder en C++.

// Crear objeto de documento
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
// Crear TextBuilder
auto tb = MakeObject<TextBuilder>(pages->idx_get(1));
// Crear fragmento de texto
auto text = MakeObject<TextFragment>(u"Hello world!");
text->set_Position(MakeObject<Position>(100, 800));
// Añadir fragmento de texto
tb->AppendText(text);
// Crear otro fragmento de texto
text = MakeObject<TextFragment>(u"This example is created by Aspose.Pdf for C++.");
text->set_Position(MakeObject<Position>(150, 750));
tb->AppendText(text);
// Crear otro fragmento de texto
text = MakeObject<TextFragment>(u"It demonstrates how to use TextBuilder to append text into PDF file.");
text->set_Position(MakeObject<Position>(200, 700));
tb->AppendText(text);
// Crear párrafo de texto
auto par = MakeObject<TextParagraph>();
par->set_Position(MakeObject<Position>(250,650));
par->AppendLine(u"New paragraph");
par->AppendLine(u"Line 2");
par->AppendLine(u"Line 3");
tb->AppendParagraph(par);
// Guardar documento PDF
doc->Save(u"Created PDF.pdf");

Producción

API de PDF de C++

Crear un archivo PDF con imagen en C++

También puede crear y agregar imágenes a los documentos PDF usando Aspose.PDF for C++. Los siguientes son los pasos para realizar esta operación:

  • Cree un objeto Documento.
  • Agregar una página al documento.
  • Cree una imagen para ser agregada.
  • Agregue la imagen al archivo PDF.
  • Guardar archivo PDF.

El siguiente ejemplo de código muestra cómo crear y agregar una imagen a un documento PDF en C++.

// Crear objeto de documento
auto doc = MakeObject<Document>();
auto pages = doc->get_Pages();
pages->Add();
auto page = pages->idx_get(1);
// Crear una imagen
auto stream = MakeObject<IO::MemoryStream>();
SharedPtr<Bitmap> bitmap = MakeObject<Bitmap>(200, 200);
SharedPtr<Graphics> graphics = Graphics::FromImage(bitmap);
graphics->Clear(System::Drawing::Color::get_Yellow());
graphics->FillRectangle(Brushes::get_Blue(), System::Drawing::Rectangle(0, 0, 200, 100));
bitmap->Save(stream, Imaging::ImageFormat::get_Bmp());
// Crear rectángulo
double x = 100.0, y = 600.0, width = 200.0, height = 200.0;
auto rect = MakeObject<Aspose::Pdf::Rectangle>(x, y, x + width, y + height);
// Agregar imagen a PDF
stream->Seek(0, System::IO::SeekOrigin::Begin);
page->AddImage(stream, rect);
// Guardar documento PDF
doc->Save(u"Created PDF.pdf");

Producción

Biblioteca PDF de C++

Crear un archivo PDF con archivos adjuntos en C++

El formato PDF también permite agregar archivos adjuntos al documento. Existe una variedad de formatos de archivo que se pueden agregar como datos adjuntos al archivo PDF. Los siguientes son los pasos para incrustar un archivo en PDF utilizando Aspose.PDF for C++:

  • Cargue un archivo para adjuntarlo en SharedPtr .
  • Cree un objeto de la clase Documento.
  • Incruste el archivo en el documento.
  • Guarde el archivo PDF.

El siguiente ejemplo de código muestra cómo agregar un archivo adjunto al documento PDF en C++.

// Crear un archivo de texto
System::IO::File::WriteAllText(u"Attachment.txt", u"Some info");
SharedPtr<FileSpecification> fileSpecification = MakeObject<FileSpecification>(u"Attachment.txt", u"Sample text file");
// Agregar archivo adjunto a la colección de archivos adjuntos del documento
auto doc = MakeObject<Document>();
doc->get_EmbeddedFiles()->Add(fileSpecification);
// Añadir una página a PDF
doc->get_Pages()->Add();	 
// Guardar documento PDF
doc->Save(u"Created PDF.pdf");

Producción

Generar PDF en C++

Más información sobre Aspose.PDF for C++

Puede obtener más información sobre Aspose.PDF for C++ en la documentación y el código fuente ejemplos.

Ver también