Trabalhando com imagens em documentos PDF via C++

Biblioteca moderna C++ para manipular imagens em PDF usando nossas APIs.

Adicionar imagem ao documento PDF usando a biblioteca C++

Para adicionar Imagem em PDF, usaremos a API Aspose.PDF for C++, que é uma API de manipulação de documentos rica em recursos, poderosa e fácil de usar para a plataforma cpp. Abra o gerenciador de pacotes NuGet, pesquise Aspose.pdf e instale. Você também pode usar o seguinte comando no Console do Gerenciador de Pacotes.

Package Manager Console

PM > Install-Package Aspose.PDF.Cpp

Adicionar imagem ao PDF via C++


Você precisa do Aspose.PDF for C++ para testar o código em seu ambiente.

  1. Crie um objeto Document e abra o documento PDF de entrada.
  2. Obtenha a página que você deseja adicionar uma imagem.
  3. Adicione a imagem à coleção Resources da página.
  4. Use o operador GSave para salvar o estado gráfico atual.
  5. Use o operador ConcatenateMatrix para especificar onde a imagem deve ser colocada.
  6. Use o operador Fazer para desenhar a imagem na página.
  7. Use o operador GRestore para salvar o estado gráfico atualizado.
  8. Salve o arquivo PDF.

Adicionar imagem em um arquivo 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();