Back to Blog

    Developer Blog

    Add images to PDF programmatically

    Foxit Quick PDF Library

    Adding images to PDF files is simple using the PDF API available with Foxit Quick PDF Library.

    The key functions involved when inserting an image into a PDF are the AddImageFromFile and DrawImage functions. The size of the image drawn onto the PDF is determined by the DPI value of the image (if present). The ImageHorizontalResolution and ImageVerticalResolution functions return the necessary DPI information.

    PNG and GIF image files do not have a DPI setting, however, image types such as BMP, JPEG and TIFF all do. A DPI value of 72 is presumed if a DPI setting is not found in the image.

    // Load the PDF that you want to add the image to
    DPL.LoadFromFile("test.pdf", "");
    
    // Call CompressImages prior to AddImageFromFile,
    // if image data is uncompressed it will be
    // compressed using flate, if already compressed
    // no change will occur
    DPL.CompressImages(1);
    
    // Load the image that you want to add to the PDF
    int id = DPL.AddImageFromFile("test_image.bmp", 0);
    
    // Select the image
    DPL.SelectImage(id);
    
    // Get the horizontal and vertical resolution
    // of the image if it exists
    int dpix = DPL.ImageHorizontalResolution();
    int dpiy = DPL.ImageVerticalResolution();
    
    // If image does not have a DPI use 72 as default
    if (dpix == 0) dpix = 72;
    if (dpiy == 0) dpiy = 72;
    
    // Calculate image width in points
    // taking into account the image size in
    // pixels and the DPI value
    double ImageWidthInPoints = (double)DPL.ImageWidth() / dpix * 72.0; // assumming dpi units
    double ImageHeightInPoints = (double)DPL.ImageHeight() / dpiy * 72.0;
    
    // Call SetOrigin to specify that coorindates
    // should be drawn from top left of the page
    DPL.SetOrigin(1);
    
    // Start drawing the top left corner of the image
    // 100 points from the left of the page
    // and 100 points down from the top of the page
    DPL.DrawImage(100, 100, ImageWidthInPoints, ImageHeightInPoints);
    
    // Save the updated PDF file to disk
    DPL.SaveToFile("test_updated.pdf");

    The same image can be added to a document multiple times without adding any extra size to the file due to the fact that the one image object can be referenced multiple times within a PDF file.

    This article refers to a deprecated product. If you are looking for support for Foxit PDF SDK, please click here.