1

I put some images to a PDF file. And Now, I want to get this images from PDF file use itext7. How to get images from PDF?

coder
  • 8,346
  • 16
  • 39
  • 53
Mr.Wang
  • 19
  • 2
  • 1
    *"I put some images to a PDF file."* - how? Have you added them as file attachments? If yes, at document level or at page level? Or have you added them to some page content? Or some annotation content? – mkl Jul 03 '18 at 04:18
  • Check this link https://stackoverflow.com/questions/37809019/itext7-pdf-to-image – Gagan V Jul 03 '18 at 04:46
  • @GaganV That answer is specifically about using a pdf page as an image. Which does not seem to be what the user ultimately wants. – Joris Schellekens Jul 06 '18 at 11:41

1 Answers1

4

The idea would be to use IEventListener to process each page, and have the IEventListener implementation do something whenever it encounters an image.

PdfDocument pdfDocument = new PdfDocument(new PdfReader(inputFle));

ImageExtractor imgs = new ImageExtractor();
PdfCanvasProcessor pdfCanvasProcessor = new PdfCanvasProcessor(imgs);
pdfCanvasProcessor.processPageContent(pdfDocument.getPage(1));

pdfDocument.close();

for(BufferedImage bi : imgs.getImages()){
    // TODO : enter your image handling code here 
}

Of course, you would still need to write ImageExtractor to process the incoming page.

class ImageExtractor implements IEventListener{

    private List<BufferedImage> imgs = new ArrayList<>();

    @Override
    public void eventOccurred(IEventData data, EventType type) {
        if(type != EventType.RENDER_IMAGE)
            return;

        ImageRenderInfo img = (ImageRenderInfo) data;
        try {
            imgs.add(img.getImage().getBufferedImage());
        } catch (IOException e) {}
    }

    public List<BufferedImage> getImages(){ return imgs; }

    @Override
    public Set<EventType> getSupportedEvents() { return null; }

}
Joris Schellekens
  • 8,483
  • 2
  • 23
  • 54