C++: Insert, Replace or Delete Images in PDF

Inserting images into a document is a great way to enhance its visual appearance and make it more understandable for readers. For example, if you are creating a product guide for a piece of furniture that has complex assembly steps, including images of each step can help users understand how to assemble the product quickly. In this article, you will learn how to insert images into PDF documents along with how to replace and delete images in PDF documents in C++ using Spire.PDF for C++.

Install Spire.PDF for C++

There are two ways to integrate Spire.PDF for C++ into your application. One way is to install it through NuGet, and the other way is to download the package from our website and copy the libraries into your program. Installation via NuGet is simpler and more recommended. You can find more details by visiting the following link.

Integrate Spire.PDF for C++ in a C++ Application

Insert an Image into a PDF Document in C++

Spire.PDF for C++ offers the PdfPageBase->GetCanvas()->DrawImage(intrusive_ptr<PdfImage> image, float x, float y, float width, float height) method to add an image to a specific page in a PDF document. The detailed steps are as follows:

  • Initialize an instance of the PdfDocument class.
  • Load a PDF document using the PdfDocument->LoadFromFile(LPCWSTR_S filename) method.
  • Get a specific page of the PDF document using the PdfDocument->GetPages()->GetItem(int index) method.
  • Initialize an instance of the PdfImage class.
  • Load an image using the PdfImage->FromFile(LPCWSTR_S filename) method.
  • Draw the image to a specific location on the page using the PdfPageBase->GetCanvas()->DrawImage(intrusive_ptr<PdfImage> image, float x, float y, float width, float height) method.
  • Save the result document using the PdfDocument->SaveToFile(LPCWSTR_S filename) method.
  • C++
#include "Spire.Pdf.o.h"

using namespace Spire::Pdf;

int main()
{
    //Initialize an instance of the PdfDocument class
    intrusive_ptr<PdfDocument> pdf = new PdfDocument();
    //Load a PDF file
    pdf->LoadFromFile(L"Input.pdf");

    //Get the first page of the PDF file
    intrusive_ptr<PdfPageBase> page = pdf->GetPages()->GetItem(0);
   
    //Initialize an instance of the PdfImage class
    intrusive_ptr<PdfImage> image = new PdfImage();
    //Load an image
    image = image->FromFile(L"PDF-CPP.png");
    float width = image->GetWidth() * 0.5;
    float height = image->GetHeight() * 0.5;
    float x = (page->GetCanvas()->GetClientSize()->GetWidth() - width) / 2;

    //Draw the image to a specific location on the page
    page->GetCanvas()->DrawImage(image, x, 120, width, height);

    //Save the result file
    pdf->SaveToFile(L"AddImage.pdf");
    pdf->Close();
}

C++: Insert, Replace or Delete Images in PDF

Replace an Image with Another Image in a PDF Document in C++

You can use the PdfPageBase->ReplaceImage(int imageIndex, intrusive_ptr<PdfImage> image) method to replace an existing image on a PDF page with another image. The detailed steps are as follows:

  • Initialize an instance of the PdfDocument class.
  • Load a PDF document using the PdfDocument->LoadFromFile(LPCWSTR_S filename) method.
  • Get a specific page of the PDF document using the PdfDocument->GetPages()->GetItem(int index) method.
  • Get images of the page using the PdfPageBase->GetImagesInfo() method.
  • Initialize an instance of the PdfImage class.
  • Load an image using the PdfImage->FromFile(LPCWSTR_S filename) method.
  • Replace a specific image on the page with the loaded image using the PdfPageBase->ReplaceImage(int imageIndex, intrusive_ptr<PdfImage> image) method.
  • Save the result document using the PdfDocument->SaveToFile(LPCWSTR_S filename) method.
  • C++
#include "Spire.Pdf.o.h"

using namespace Spire::Pdf;

int main()
{
    //Initialize an instance of the PdfDocument class
    intrusive_ptr<PdfDocument> pdf = new PdfDocument();
    //Load a PDF file
    pdf->LoadFromFile(L"AddImage.pdf");

    //Get the first page of the PDF file
    intrusive_ptr<PdfPageBase> page = pdf->GetPages()->GetItem(0);

    //Get images of the first page
vector<intrusive_ptr<PdfImageInfo>> imageInfo = page->GetImagesInfo();

    //Initialize an instance of the PdfImage class
    intrusive_ptr<PdfImage> image = new PdfImage();
    //Load an image
    image = image->FromFile(L"PDF-java.png");

    //Replace the first image on the first page with the loaded image
    page->ReplaceImage(imageInfo[0]->GetIndex(), image);

    //Save the result file
    pdf->SaveToFile(L"ReplaceImage.pdf");
    pdf->Close();
}

C++: Insert, Replace or Delete Images in PDF

Delete an Image from a PDF Document in C++

You can use the PdfPageBase->DeleteImage(int imageIndex) method to delete a specific image from a PDF page. The detailed steps are as follows:

  • Initialize an instance of the PdfDocument class.
  • Load a PDF document using the PdfDocument->LoadFromFile(LPCWSTR_S filename) method.
  • Get a specific page of the PDF document using the PdfDocument->GetPages()->GetItem(int index) method.
  • Get images of the page using the PdfPageBase->GetImagesInfo() method.
  • Delete a specific image on the page using the PdfPageBase->DeleteImage(int imageIndex) method.
  • Save the result document using the PdfDocument->SaveToFile(LPCWSTR_S filename) method.
  • C++
#include "Spire.Pdf.o.h"

using namespace Spire::Pdf;

int main()
{
    //Initialize an instance of the PdfDocument class
    intrusive_ptr<PdfDocument> pdf = new PdfDocument();
    //Load a PDF file
    pdf->LoadFromFile(L"AddImage.pdf");

    //Get the first page of the PDF file
intrusive_ptr<PdfPageBase> page = pdf->GetPages()->GetItem(0);

    //Get images of the first page
vector<intrusive_ptr<PdfImageInfo>> imageInfo = page->GetImagesInfo();

    //Delete the first image on the first page
    page->DeleteImage(imageInfo[0]->GetIndex());

    //Save the result file
    pdf->SaveToFile(L"DeleteImage.pdf");
    pdf->Close();
}

C++: Insert, Replace or Delete Images in PDF

Apply for a Temporary License

If you'd like to remove the evaluation message from the generated documents, or to get rid of the function limitations, please request a 30-day trial license for yourself.