If you're looking to develop an application such as this, I would recommend checking out the LEADTOOLS Document Imaging SDK. LEADTOOLS provides .NET libraries for handling this, and there's an example project posted on the Support Forums here:
https://www.leadtools.com/support/forum/posts/m41715-Extracting-embedded-images-from-a-PDF-file#post41715
The relevant sample code is here:
// Open PDF file
using (PDFDocument pdfDoc = new PDFDocument(filename, password))
{
// Set load resolution for the embeded images
pdfDoc.Resolution = 150;
// Parse the pages
pdfDoc.ParsePages(PDFParsePagesOptions.Objects, 1, -1);
using (RasterCodecs codecs = new RasterCodecs())
foreach (PDFDocumentPage page in pdfDoc.Pages)
if (page.Objects != null && page.Objects.Count > 0)
foreach (PDFObject obj in page.Objects)
if (obj.ObjectType == PDFObjectType.Image)
using (RasterImage image = pdfDoc.DecodeImage(obj.ImageObjectNumber))
codecs.Save(image, targetDir + obj.ImageObjectNumber + "." + saveFormat.Extension, saveFormat.Format, 0, 1, 1, -1, CodecsSavePageMode.Overwrite);
}
Disclaimer: I am an employee of the company that wrote this library.