Работа с изображениями в PDF-документе через C++

Современная библиотека C++ для работы с изображениями в PDF с помощью наших API.

Добавить изображение в PDF-документ с помощью библиотеки C++

Чтобы добавить изображение в PDF, мы будем использовать Aspose.PDF для C++ API, который представляет собой многофункциональный, мощный и простой в использовании API для работы с документами для платформы cpp. Откройте менеджер пакетов NuGet, найдите Aspose.pdf и установите. Вы также можете использовать следующую команду из консоли Package Manager.

Package Manager Console

PM > Install-Package Aspose.PDF.Cpp

Добавить изображение в PDF с помощью C++


Вам понадобится Aspose.PDF для C++, чтобы попробовать код в своей среде.

  1. Создайте объект Document и откройте входной PDF-документ.
  2. Найдите страницу, на которую вы хотите добавить изображение.
  3. Добавьте изображение в коллекцию ресурсов страницы.
  4. Используйте оператор GSave для сохранения текущего графического состояния.
  5. Используйте оператор concatenateMatrix, чтобы указать место размещения изображения.
  6. Используйте оператор Do, чтобы нарисовать изображение на странице.
  7. Используйте оператор GREStore для сохранения обновленного графического состояния.
  8. Сохраните PDF-файл.

Добавьте изображение в существующий PDF-файл — 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();