Extract images from PDF

Extract images from PDF

This shows how to extract an image from pdf.

Extract images from an existing PDF document

This code sample illustrates how to iterate through existing content in a PDF document and to save each images found on every page as a new Image file.

static void Main(String[] args)
{
   using (FileStream fileIn = new FileStream("PackingLightBrochure.pdf", FileMode.Open, FileAccess.Read))
   {
      // open pdf document and cycle trhough all pages
      Document document = new Document(fileIn);
      int i = 0;

      foreach (Page page in document.Pages)
      {
         ShapeCollection shapes = page.CreateShapes();
         // go through all images
         saveImageShapes(shapes, i);
         i++;
      }
   }
}

static void saveImageShapes(ShapeCollection shapes, int i)
{
	foreach (Shape shape in shapes)
	{
		ImageShape imageShape = shape as ImageShape;

		if (imageShape != null)//if current shape is an imageshape, save it
		{
			System.Drawing.Bitmap bitmap = imageShape.CreateBitmap();
			bitmap.Save(string.Format(@"..\..\Image_{0}.png", i));
		}
		else
		{
			ShapeCollection shapeCollection = shape as ShapeCollection;
			//if current shape is a ShapeCollection, recurse
			if (shapeCollection != null)
			{
				saveImageShapes(shapeCollection, i++);
			}
		}
	}
}
Sub Main()

    Using fileIn As New FileStream("..\..\..\inputdocuments/PackingLightBrochure.pdf", FileMode.Open, FileAccess.Read)
        'open pdf document and cycle trhough all pages
        Dim document As New Document(fileIn)
        Dim i As Integer = 0

        For Each page As Page In document.Pages
            Dim shapes As ShapeCollection = page.CreateShapes()
            'go through all images
            saveImageShapes(shapes, i)
            i += 1
        Next
    End Using
End Sub

Private Sub saveImageShapes(shapes As ShapeCollection, i As Integer)
    For Each shape As Shape In shapes
        Dim imageShape As ImageShape = TryCast(shape, ImageShape)

        If imageShape IsNot Nothing Then
            'if current shape is an imageshape, save it
            Dim bitmap As Drawing.Bitmap = imageShape.CreateBitmap()
            bitmap.Save(String.Format("..\..\Image_{0}.png", i))
        Else
            Dim shapeCollection As ShapeCollection = TryCast(shape, ShapeCollection)
            'if current shape is a ShapeCollection, recurse
            If shapeCollection IsNot Nothing Then
                saveImageShapes(shapeCollection, System.Math.Max(System.Threading.Interlocked.Increment(i), i - 1))
            End If
        End If
    Next
End Sub