Trabajar con imágenes en documentos PDF a través de C++

Biblioteca moderna de C++ para manipular imágenes en PDF mediante nuestras API.

Agregar imagen a un documento PDF mediante la biblioteca C++

Para agregar Imagen en PDF, usaremos la API Aspose.PDF for C++, que es una API de manipulación de documentos rica en funciones, potente y fácil de usar para la plataforma cpp. Abra el administrador de paquetes NuGet, busque Aspose.pdf e instálelo. También puede usar el siguiente comando de la consola del administrador de paquetes.

Package Manager Console

PM > Install-Package Aspose.PDF.Cpp

Añadir imagen al PDF a través de C++


Necesitas Aspose.PDF for C++ para probar el código en tu entorno.

  1. Cree un objeto Document y abra el documento PDF de entrada.
  2. Consigue la página a la que quieres añadir una imagen.
  3. Agregue la imagen a la colección Resources de la página.
  4. Utilice el operador GSave para guardar el estado gráfico actual.
  5. Utilice el operador ConcatenateMatrix para especificar dónde se va a colocar la imagen.
  6. Utilice el operador Do para dibujar la imagen en la página.
  7. Utilice el operador GRestore para guardar el estado gráfico actualizado.
  8. Guarde el archivo PDF.

Agregar imagen a un archivo PDF existente: C++

Example: C++


    String _dataDir("C:\\Samples\\");

    auto document = MakeObject<Document>(_dataDir + u"AddImage.pdf");

    int lowerLeftX = 50;
    int lowerLeftY = 750;
    int upperRightX = 100;
    int upperRightY = 800;

    auto page = document->get_Pages()->idx_get(1);
    auto imageStream = System::IO::File::OpenRead(_dataDir + u"logo.png");

    page->get_Resources()->get_Images()->Add(imageStream);

    page->get_Contents()->Add(MakeObject<Aspose::Pdf::Operators::GSave>());

    auto rectangle = MakeObject<Rectangle>(lowerLeftX, lowerLeftY, upperRightX, upperRightY);

    auto matrix = MakeObject<Matrix>(
        MakeArray<double>({
            rectangle->get_URX() - rectangle->get_LLX(),
            0,                  0,
            rectangle->get_URY() - rectangle->get_LLY(),
            rectangle->get_LLX(), rectangle->get_LLY() }));

    page->get_Contents()->Add(MakeObject<Aspose::Pdf::Operators::ConcatenateMatrix>(matrix));
    auto ximage = page->get_Resources()->get_Images()->idx_get(page->get_Resources()->get_Images()->get_Count());

    page->get_Contents()->Add(MakeObject<Aspose::Pdf::Operators::Do>(ximage->get_Name()));

    page->get_Contents()->Add(MakeObject<Aspose::Pdf::Operators::GRestore>());

    document->Save(_dataDir + u"updated_document.pdf");

    imageStream->Close();