Leitura de Ficheiro em PDF

7 respostas
B

Olá pessoal é assim, estou a ler conteúdo de um ficheiro em java, até aqui td bem.Só que é o seguinte, consigo ler os conteudos dos ficheiro com extensao ‘TXT’, so que quando a extensao for ‘PDF’ que é o que estou a precisar ou mesmo ficheiros ‘.DOC’ em vez de aparecer os conteudos aparecem caracteres ki nao tem nada haver com o conteudo do ficheiro.

Em baixo está o codigo que estou a usar:

import java.io.File;
import java.io.FileInputStream;

public class Ficheiro {

private String NomeIn;

private String NomeOut;

public  Ficheiro (String NomeIn, String NomeOut)

{

this.NomeIn=NomeIn;

}
public static void main(String[] args) throws Exception
  {
    File f_lei = new File("C:/ex.PDF"); 
    FileInputStream fr = new FileInputStream(f_lei);
    
    int i = fr.read();
    while (i!=-1){
    	System.out.print( (char)i);
	    i=fr.read();
    }
    fr.close();
  }

}

se alguem poder ajudar eu agradecia, é que procurei na google nao encontrei.
Desde já um mega abraço para tds vos.

7 Respostas

rodrigo_gomes

Ola,

Arquivos pdf e .doc não são arquivos texto como um txt. Eles são arquivos binarios e devem ser lidos de maneira especifica (com bibliotecas que sabem o seu padrao, etc).

Para ler arquivos .doc você pode usar esse aqui:
http://poi.apache.org/

Agora para pdf eu não conheço. Mas certamente fazendo uma busca no google deve encontrar varios exemplos.

[]'s

rodrigo_gomes

Veja, está entre os primeiros links de uma gooogleada por :read pdf java
http://www.developer.com/java/other/article.php/626501

espero que funcione

B

Olá rodrigo_gomes, thks pela ajuda.
é assim eu consegui ler o conteudo do ficheiro pdf como o rodrigo disse e bem, usando uma bibliteca especifica.
Como não vi nenhum exemplo no forum vou deixar um exemplo bem simples para ajudar o pessoal futuramente.
Primeiro tem que ser feito o download da asprise Library (AspriseJavaPDF.jar) e adicionar ao seu projecto (eu uso o eclipse IDE).
Podem fazer o downlad do trial version nesse link aqui : http://asprise.com/product/javapdf/index.php
Dps para ler o conteudo do pdf podem usar o codigo abaixo:

import java.io.File;

import java.io.FileNotFoundException;

import java.io.IOException;

import com.asprise.util.pdf.PDFReader;

public class LerFichPdf {

public static void main( String[] args ){    
	PDFReader reader;
	try {
		reader = new PDFReader(new File("C://ex.pdf"));
			reader.open();

		int pages = reader.getNumberOfPages();
		 
		for(int i=0; i < pages; i++) {
		   String text = reader.extractTextFromPage(i);
		   System.out.println("Page " + i+ ": " + text ); 
		}
		 
		 // perform other operations on pages.
		 
		reader.close(); // finally, close the file.
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} // open the file. 

}

}

Valeu pessoal espero que o codigo seja util para alguem futuramente.Abraço

derheimen

BlackFace, era isso que eu estava procurando.

Vou implementar uma solução web para um cartório para pesquisar conteudo de arquivo pdf.

Show de bola.

Fuiii

B

Ok pá força ai e bom trabalho, espero que tenhas socesso…

Abraço

adriano_si

Só um comentário… quando for incluir código, colocar na Tag CODE:

Valew
derheimen

Pena é o Asprise é limitado.
Tentei utilizar o PDFBox, mas nao tive sucesso.
Segue as duas classes de teste que utilizei com o PDFBox.

package pdfbox;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.pdfbox.cos.COSDocument;
import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;

public class LerConteudoPdf {

	/**
	 * @param args
	 */
	public static void main(String[] args) {

		File file = new File( "D://PDF/Guia de instalação do Apache Axis 1.4 e Apache Tomcat 6.x.pdf" );  
		FileInputStream is = null;

		try {
			is = new FileInputStream( file );
		} catch (FileNotFoundException e1) {
			e1.printStackTrace();
		}

		PDFParser parser = null;
		try {
			parser = new PDFParser( is );
			
			parser.parse();  
			COSDocument cosDoc = parser.getDocument();  

			PDFTextStripper stripper = new PDFTextStripper();  
			String docText = stripper.getText( new PDDocument( cosDoc ) );

		}  catch (IOException e) {
			e.printStackTrace();
		}
	}

}
package pdfbox;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;

import org.pdfbox.pdfparser.PDFParser;
import org.pdfbox.pdmodel.PDDocument;
import org.pdfbox.util.PDFTextStripper;

public class PdfParser {

	public static void main(String[] args) {
		PdfParser pdfParser = new PdfParser();
		
		pdfParser.setEnderecoRecurso("D://PDF/Guia de instalação do Apache Axis 1.4 e Apache Tomcat 6.x.pdf");
		String s = pdfParser.getConteudo();

		System.out.println(s);
	}
	
	/***
	* Extract the content from the given PDF file. As a side effect most other fields are set too.
	*
	* @see org.zilverline.extractors.AbstractExtractor#getContent(java.io.File)
	*/
	private String enderecoRecurso;

	public void setEnderecoRecurso(String enderecoRecurso)
	{
		this.enderecoRecurso = enderecoRecurso; //caminho do arquivo
	}

	public String getConteudo()
	{

		File f = new File(this.enderecoRecurso);
		FileInputStream is = null;
		
		try	{
			is = new FileInputStream(f);
		} 
		catch(IOException e) {
			System.out.println("ERRO: " + e.getMessage());
			return null;
		}
	
		PDDocument pdfDocument = null;
		try {
			PDFParser parser = new PDFParser(is);

			parser.parse();

			pdfDocument = parser.getPDDocument();

			PDFTextStripper stripper = new PDFTextStripper();

			return stripper.getText(pdfDocument);
		}
		catch (IOException e) {
			return "ERRO: Can't open stream" + e;
		}
		catch (Throwable e)	{
			// catch this, since we need to close the resources
			return "ERRO: An error occurred while getting contents from PDF\n" + e;
		}
		finally {
			if (pdfDocument != null) {
				try {
					pdfDocument.close();
				}
				catch (IOException e) {
					return "ERRO: Can't close pdf." + e;
				}
			}
		}
	}
}

[color=red]OBS.:[/color] O erro ocorre nos dois exemplos ao tentar realizar uma instancia de PDFTextStripper.

PDFTextStripper stripper = new PDFTextStripper();

Exception:

Alguém passou por isso e poderia dar um help, rsrs.

Desde de já agradeço.

Criado 1 de maio de 2008
Ultima resposta 29 de ago. de 2008
Respostas 7
Participantes 4