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.
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).
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:
publicstaticvoidmain(String[]args){PDFReaderreader;try{reader=newPDFReader(newFile("C://ex.pdf"));reader.open();intpages=reader.getNumberOfPages();for(inti=0;i<pages;i++){Stringtext=reader.extractTextFromPage(i);System.out.println("Page "+i+": "+text);}// perform other operations on pages.reader.close();// finally, close the file.}catch(FileNotFoundExceptione){// TODO Auto-generated catch blocke.printStackTrace();}catch(IOExceptione){// TODO Auto-generated catch blocke.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
BlackFace
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.
packagepdfbox;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.IOException;importorg.pdfbox.cos.COSDocument;importorg.pdfbox.pdfparser.PDFParser;importorg.pdfbox.pdmodel.PDDocument;importorg.pdfbox.util.PDFTextStripper;publicclassLerConteudoPdf{/** * @param args */publicstaticvoidmain(String[]args){Filefile=newFile("D://PDF/Guia de instalação do Apache Axis 1.4 e Apache Tomcat 6.x.pdf");FileInputStreamis=null;try{is=newFileInputStream(file);}catch(FileNotFoundExceptione1){e1.printStackTrace();}PDFParserparser=null;try{parser=newPDFParser(is);parser.parse();COSDocumentcosDoc=parser.getDocument();PDFTextStripperstripper=newPDFTextStripper();StringdocText=stripper.getText(newPDDocument(cosDoc));}catch(IOExceptione){e.printStackTrace();}}}
packagepdfbox;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importorg.pdfbox.pdfparser.PDFParser;importorg.pdfbox.pdmodel.PDDocument;importorg.pdfbox.util.PDFTextStripper;publicclassPdfParser{publicstaticvoidmain(String[]args){PdfParserpdfParser=newPdfParser();pdfParser.setEnderecoRecurso("D://PDF/Guia de instalação do Apache Axis 1.4 e Apache Tomcat 6.x.pdf");Strings=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) */privateStringenderecoRecurso;publicvoidsetEnderecoRecurso(StringenderecoRecurso){this.enderecoRecurso=enderecoRecurso;//caminho do arquivo}publicStringgetConteudo(){Filef=newFile(this.enderecoRecurso);FileInputStreamis=null;try{is=newFileInputStream(f);}catch(IOExceptione){System.out.println("ERRO: "+e.getMessage());returnnull;}PDDocumentpdfDocument=null;try{PDFParserparser=newPDFParser(is);parser.parse();pdfDocument=parser.getPDDocument();PDFTextStripperstripper=newPDFTextStripper();returnstripper.getText(pdfDocument);}catch(IOExceptione){return"ERRO: Can't open stream"+e;}catch(Throwablee){// catch this, since we need to close the resourcesreturn"ERRO: An error occurred while getting contents from PDF\n"+e;}finally{if(pdfDocument!=null){try{pdfDocument.close();}catch(IOExceptione){return"ERRO: Can't close pdf."+e;}}}}}
[color=red]OBS.:[/color] O erro ocorre nos dois exemplos ao tentar realizar uma instancia de PDFTextStripper.
PDFTextStripperstripper=newPDFTextStripper();
Exception:
Alguém passou por isso e poderia dar um help, rsrs.