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

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

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

Чтобы добавить изображение в PDF, мы будем использовать API Aspose.PDF for C++, который представляет собой многофункциональный, мощный и простой в использовании 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++

В этом примере кода показано, как добавлять изображения в PDF - 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();