Se você tem um documento e deseja usar as imagens dentro desse documento em alguns outros documentos, aqui está uma das soluções. Neste artigo, aprenderemos a extrair imagens programaticamente de documentos PDF, Excel, PowerPoint e Word usando Java.

Extrair imagens de documentos em Java

API Java de extração de imagem

Analisar documentos e extrair dados em Java

Para a extração das imagens, usaremos GroupDocs.Parser for Java. Essa API Java oferece suporte à análise de documentos e extração de imagens, texto e metadados de documentos de processamento de texto, planilhas, apresentações, arquivos , e e-mail documentos. A seguir estão os formatos de documento suportados pela API Java para extração de imagem.

Antes de começar com os exemplos abaixo, recomendo configurar o ambiente baixando a versão mais recente da API Java de análise de documentos da seção de downloads ou você pode definir as seguintes configurações em seu *baseado em maven * aplicativos java:

<repository>
	<id>GroupDocsJavaAPI</id>
	<name>GroupDocs Java API</name>
	<url>http://repository.groupdocs.com/repo/</url>
</repository>
<dependency>
	<groupId>com.groupdocs</groupId>
	<artifactId>groupdocs-parser</artifactId>
	<version>20.8</version> 
</dependency>

Extraia imagens de documentos PDF em Java

Documento PDF para Extrair Imagens

Siga estes passos simples para obter todas as imagens do documento PDF.

  1. Instancie o objeto de classe Parser.
  2. Chame o método getImages da classe Parser para obter todas as imagens.
  3. Itere sobre imagens usando PageImageArea.
  4. Salve imagens usando o método save de PageImageArea.

Está feito. Veja o código completo abaixo. As imagens extraídas podem ser salvas nos formatos BMP, GIF, JPEG, PNG e WebP.

// Extraia imagens de documentos do Word, Excel, PowerPoint, PDF programaticamente usando GroupDocs.Parser para Java
try (Parser parser = new Parser("path/document.pdf")) {
	// Extrair imagens
	Iterable<PageImageArea> images = parser.getImages();

	// Crie as opções para salvar imagens no formato PNG
	ImageOptions options = new ImageOptions(ImageFormat.Png);
	int imageNumber = 0;

	// Iterar sobre imagens e salvar
	for (PageImageArea image : images) {
		// Imprima o índice de página, retângulo e tipo de arquivo de imagem:
		System.out.println(String.format("Page: %d, R: %s, Type: %s", image.getPage().getIndex(), 
				image.getRectangle(), image.getFileType()));
		image.save(String.format("filesPath/image_%d.png", imageNumber), options);
		imageNumber++;
	}
}

Estas são as imagens recuperadas do documento PDF usando o código acima.

Imagens extraídas do documento usando Java

Extraia imagens de arquivos do Word, Excel, PowerPoint em Java

Da mesma forma, todas as imagens podem ser retiradas dos arquivos de processamento de texto, planilhas, apresentações, com a base de código inalterada. O que você tem que mudar? Apenas o caminho do documento de origem e a extensão de arquivo correta.

Parser parser = new Parser("path/document.docx") // Word Document
// Parser parser = new Parser("path/document.xlsx") // Excel Spreadsheet
// Parser parser = new Parser("path/document.pptx") // PowerPoint Presentation
// Parser parser = new Parser("path/document.pdf") // PDF Document

Extração de imagem de página de documento específica em Java

Se você não deseja extrair todas as imagens de todo o documento, mas de alguma página específica. O código abaixo demonstra como podemos extrair imagens de uma determinada página do documento em Java.

// Extraia imagens de uma página específica do Word, Excel, PowerPoint, PDF em Java usando GroupDocs.Parser
try (Parser parser = new Parser("path/document.pdf"")) {
	// Obtenha as informações do documento
	IDocumentInfo documentInfo = parser.getDocumentInfo();

	// Crie as opções para salvar imagens no formato PNG
	ImageOptions options = new ImageOptions(ImageFormat.Jpeg);
	int imageNumber = 0;

	// Iterar nas páginas
	for (int pageIndex = 0; pageIndex < documentInfo.getPageCount(); pageIndex++) {
		// Imprimir números de página
		System.out.println(String.format("Page %d/%d", pageIndex + 1, documentInfo.getPageCount()));

		// Iterar sobre imagens - Ignorando NULL-Checking nos exemplos
		for (PageImageArea image : parser.getImages(pageIndex)) {
			// Imprimir informações de imagem e salvar arquivo
			System.out.println(String.format("R: %s, Text: %s", image.getRectangle(), image.getFileType()));
			image.save(String.format("filesPath/image_%d.jpeg", imageNumber), options);
			imageNumber++;
		}
	}
}

Conclusão

Hoje, aprendemos como extrair imagens de todo o documento e da página específica de documentos de processamento de texto, planilhas, apresentações e PDF em Java. Não há diferença no código se tivermos que extrair imagens dos arquivos de diferentes formatos de arquivo. Só temos que passar o caminho e o nome certos. É isso.

Veja também