Existem várias bibliotecas para ler arquivo PDF em Java. Algumas são produtos pagos (iText e JPedal) e outras são grátis (PDF Box). No java-source há uma lista com várias opções.
Neste post vou mostrar um exemplo de como ler um arquivo pdf em Java através do PDFBox, um projeto Apache. Baixe aqui o PDF Box.
No Eclipse, crie um Java Project chamado ExemploLeitorPDF e adicione um Folder chamado “lib”, onde iremos copiar a biblioteca do PDF Box (pdfbox-app-1.5.0.jar). Veja a imagem:
[photopress:build_path.png,full,pp_image]
Adicione a biblioteca no classpath do projeto:
[photopress:libraries.png,full,pp_image]
O próximo passo é criar a classe UtilTexto, conforme a Listagem 1.
package net.marcoreis.util;
import java.io.*;
import org.apache.pdfbox.pdmodel.*;
import org.apache.pdfbox.util.*;
public class UtilTexto {
/**
* Le o conteudo (texto) de um arquivo pdf
*
*/
public static String extraiTextoDoPDF(String caminho) {
PDDocument pdfDocument = null;
try {
pdfDocument = PDDocument.load(caminho);
PDFTextStripper stripper = new PDFTextStripper();
String texto = stripper.getText(pdfDocument);
return texto;
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
if (pdfDocument != null) try {
pdfDocument.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}
/**
*
* Extrai o conteudo do arquivo indicado
*
*/
public static void main(String[] args) {
String caminho = "/Users/marcoreis/Downloads/cpc_L5869.pdf";
String texto = extraiTextoDoPDF(caminho);
System.out.println(texto);
}
}
Listagem 1.
Parabéns!!!
Pessoal, eu fiz um código exatamente igual, más no console sai desas forma. Alguém sabe pq?
NF ÍRS ÍCºCCISRº NFP CNÍEͺ CºICCRSCP CNR NONITNSAFTVLDDDDDDDDDDDDDDDD ÃBÀV!ÀÃVGD”GQDÇÀG APTO PARA PAGAMENTO
NF ÍRº ÍCºCCISRºCNNP CNÍEST N ICCRCSP CNR N IͺRAORVLDDDDDDDDDDDDDDDD GÀÁÇÃDÃBÀVIDGUMBIDÁDÃ.VG APTO PARA PAGAMENTO
NF ÍRF ÍCºCCISRÍFOSP CNÍEN CCICCNRRP CNS SºSI ÍOAF VLDDDDDDDDDDDDDDDD .DÁBQÁBJGVMG APTO PARA PAGAMENTO
Parece o encoding. Manda o pdf para eu dar uma olhada.
Boa tarde amigo,
Excelente exemplo, me salvou em um projeto. Mas agora quero complicar mais um pouco, já estou com três semana pesquisando e fazendo teste mas sem sucesso. Meu problema é : preciso fazer upload de arquivos PDF e gravar no banco de dados(até aqui só sucesso) mas preciso gravar um texto em cada pagina enviando onde tenho o ultimo numero de paginação. Ex. tenho o numero da ultima pagina gravado no banco, quero passar esse numero para seguir a sequencia no arquivo que estou anexando (upload) ultima pagina “Pagina: 33” estou subindo um arquivo com quatro paginas, então esse teria um texto em cada pagina “Pagina : 34”, “Pagina : 35”, “Pagina : 36” e “Pagina : 37”. Sistema de processo.
Você teria alguma ideia para me salvar ? ou alguma API mesmo que seja paga ? (iText e JPedal)
Att
Alessandro Péricles