Como diferenciar texto de imagem em PDF com iText?

3 respostas
F

Boa tarde!

Estou utilizando a biblioteca iText para "ler" arquivos .pdf e transformá-los em .txt.
O problema é que dentro desses arquivos(.pdf) têm imagens e ele me retorna ao invés de imagem, algo parecido com isso .

Há uma maneira de trazer apenas o texto e quando for imagens tratar a exceção para não trazer nada?

Segue o código:

public class teste {
      public void seila() throws IOException
      {
      String path = "C:/arquivo.pdf";
      PdfReader reader = new PdfReader(path);
      int numberOfPages = reader.getNumberOfPages();
      PdfTextExtractor extractor = new PdfTextExtractor(reader);
    try {  

        File arquivo;
        String texto;

        arquivo = new File("c:/arquivo.txt");  

        FileOutputStream fos = new FileOutputStream(arquivo);

      for (int i = 0;i<numberOfPages;i++)
      {

            texto = extractor.getTextFromPage(i+1);

            fos.write(texto.getBytes());  

     }
      
      	fos.close();  
      	
     }  

     catch (Exception ee) { 
    
        ee.printStackTrace();  

     }  

     }

      public static void main(String[] args) throws IOException

      {
            teste ha = new teste();

            ha.seila();   

      }
}

Fico no aguardo.

Grato!>

3 Respostas

F

Alguma sugestão?

A

Olá Fabinhoocara,

Uma possível solução seria a seguinte:

try {
			//Criação do objeto Documento
			Document d2 = new Document(PageSize.A4);
			
			//Abertura do arquivo PDF
			PdfReader reader = new PdfReader("c:/MeuArquivoPDF.pdf");
			
			//Leitura do total de páginas
			int numPages = reader.getNumberOfPages();
			
			String texto = "";			
	        FileOutputStream fos = new FileOutputStream(new File("c:/arquivo.txt"));
   			
	        // Realiza a leitura apenas do TEXTO de cada página e
	        // escreve no arquivo de saída
			for (int i = 1; i <= numPages; i++) {
				texto = PdfTextExtractor.getTextFromPage(reader, i);						
				fos.write(texto.getBytes());
			}
			
			// Fechamento do arquivo de saída
			fos.close();
			
			// Fechamento do PDF
			d2.close();
		} catch (Exception e) {
			e.printStackTrace();
		}

Espero ter ajudado. Se ainda tiver qualquer dúvida é só entrar em contato.
Abraços.

F

Olá, Andrefelix!

Estive um tempo fora e ainda não pude testar a solução acima.
Estarei dando uma olhada e qualquer novidade lhe retorno.

De qualquer forma, muito obrigado!

Um abraço.

Criado 18 de março de 2010
Ultima resposta 10 de mai. de 2010
Respostas 3
Participantes 2