Não é difícil ler arquivos PDF em Java usando bibliotecas que estão prontamente disponíveis. A leitura de arquivos PDF permite escrever programas Java que podem processar o texto nesses arquivos. Uma opção para ler arquivos PDF é a biblioteca PDFBox gratuita e de código aberto disponível no Apache. A plataforma de desenvolvimento Eclipse Java facilita esse trabalho e gerencia as bibliotecas que você fará download. Você precisa estar familiarizado com a programação Java para fazer uso dessas bibliotecas Java.
Reúna as bibliotecas necessárias
Etapa 1
Baixe o Java JDK do site da Sun. Este é um arquivo executável que você pode instalar em seu sistema executando-o. As versões estão disponíveis para Windows, Mac e Linux. Clique no botão vermelho "Baixar". Salve um arquivo chamado "jdk-6uxx-windows-xxx.exe" quando solicitado. Salve este arquivo e clique duas vezes nele para iniciar o instalador Java.
Etapa 2
Faça download do sistema de desenvolvimento Eclipse e descompacte-o em um diretório de nível superior. Selecione "Eclipse IDE para desenvolvedores Java". Isso iniciará o download de "eclipse-java-galileo-SR2-win32.zip". Clique duas vezes no arquivo para descompactá-lo após a conclusão do download. Selecione o local do diretório raiz "C:" para descompactar o Eclipse.
Etapa 3
Inicie o Eclipse clicando duas vezes em "eclipse.exe" no diretório que você acabou de criar descompactando o arquivo zip do eclipse. No sistema Eclipse, crie um projeto chamado "PrintPdf". Selecione “Arquivo” e depois “Novo” e depois “Projeto Java”. Digite o nome do projeto "PrintPdf" na caixa de diálogo que aparece. Certifique-se de que o botão de opção esteja selecionado que diz "Criar pastas separadas para arquivos de origem e de classe". Clique em "Concluir".
Etapa 4
Crie uma pasta "lib" em seu projeto "PrintPdf". Botão direito do mouse no projeto “PrintPdf” e selecione “Novo” e depois “Pasta”. Digite o nome “lib” e clique em “Finish”.
Etapa 5
Baixe o Apache "PDFBox.jar" do site do Apache e copie-o no diretório lib que você acabou de criar. Na mesma página, baixe o arquivo "fontbox-nn.jar" e o arquivo "jempbox-nn.jar". Em cada caso, quando você clicar nesse arquivo jar, ele o levará a uma página onde você pode selecionar um dos vários servidores que podem fornecer esse arquivo. Escolha cada um deles e cada arquivo jar será baixado. Copie cada arquivo jar para o diretório lib que você acabou de criar.
Etapa 6
Faça download do pacote Apache log4j.jar da mesma forma e copie o arquivo log4j.jar no diretório. A biblioteca Apache PDFBox usa essa biblioteca de log do Apache, portanto, esse arquivo precisa estar presente.
Etapa 7
Baixe o pacote Apache Commons Discovery como um arquivo zip. Dê um duplo clique no arquivo zip, selecione o "commons-discovery-nn.jar" e extraia-o no diretório lib.
Etapa 8
No Eclipse, clique no diretório “lib” e pressione “F5”. Certifique-se de que todos os arquivos jar adicionados sejam exibidos.
Etapa 9
Clique com o botão direito do mouse no projeto PrintPDF e selecione “Propriedades”. Selecione "Java Build Path" e selecione a guia "Bibliotecas". Clique em "Adicionar jars" e vá para o diretório lib que você acabou de criar e adicione "commons-logging-nn.jar" "fontbox-nn.jar", "jempbox-nn.jar", "log4j-nn.jar ," e "pdfbox-nn.jar." Clique em "OK".
Escreva o código para ler PDFs
Etapa 1
Clique com o botão direito do mouse na pasta “src” do seu projeto “PrintPDF” e selecione “New” e o “Package”. Crie um pacote usando qualquer nome significativo. Por exemplo, nomeie o pacote "com.pdf.util". Clique em "Concluir".
Etapa 2
Clique com o botão direito do mouse no nome do pacote que você acabou de criar e selecione “Novo” e depois “Classe”. Crie uma classe chamada "PDFTextParser". Certifique-se de clicar na caixa de seleção marcada como "public static void main..." para que o sistema crie um método "main".
Etapa 3
Edite o método "main" na classe "PDFTextParser" para conter o seguinte código:
public static void main(String args[]){ PDFTextParser pdf =new PDFTextParser("data/javaPDF.pdf") GO //imprime os resultados System.out.println(pdf.getParsedText()) GO }
Observe que o arquivo que você deseja imprimir está escrito no construtor para PDFTextParser ("data/JavaPDF.pdf"). Poderia facilmente ser um argumento de linha de comando:
PDFTextParser pdf = new PDFTextParser(argv[0])
VAI
ou selecionado de uma interface GUI.
Ele cria uma instância da classe PDFTextParser e, em seguida, chama seu método "getParsedText".
Etapa 4
Insira o seguinte código logo abaixo da linha de classe superior "classe pública PDFTextParser" que foi criada para você.
analisador PDFParser privado =null GO
// Extract text from PDF Document
public PDFTextParser(String fileName) {
File file = new File(fileName)
GO if (!file.isFile()) { System.err.println("File " + fileName + " não existe.") GO } //Configura a instância do analisador de PDF try { parser =new PDFParser(new FileInputStream( file)) GO } catch (IOException e) { System.err.println("Não foi possível abrir o analisador de PDF. " + e.getMessage()) GO } } //------------- ------------------ public String getParsedText() { PDDocument pdDoc =null GO COSDocument cosDoc =null;
String analisadoTexto =null; VAI
try {
PDFTextStripper pdfStripper = new PDFTextStripper()
GO parser.parse() GO cosDoc =analisador.getDocument() GO pdDoc =new PDDocument(cosDoc) GO
//get list of all pages
List<PDPage> list = pdDoc.getDocumentCatalog().getAllPages()
VAI
//note that you can print out any pages you want
//by choosing different values of the start and end page
pdfStripper.setStartPage(1); //1-based
int length = list.size(); //total number of pages
pdfStripper.setEndPage(length); //last page
//get the text for the pages selected
parsedText = pdfStripper.getText(pdDoc)
GO } catch (IOException e) { System.err .println("Ocorreu uma exceção ao analisar o documento PDF." + e.getMessage()) GO } finally { try { if (cosDoc !=null) cosDoc.close() GO if (pdDoc !=null) pdDoc.close() GO } catch (IOException e) { e.printStackTrace() GO } }
return texto analisado GO }
Etapa 5
Execute o programa. Clique com o botão direito do mouse na classe PDFTextParser e clique em “Executar como” e depois em “Programa Java”. O programa deve executar e imprimir o conteúdo de texto do arquivo PDF que você inseriu em seu código.
Suprimir a mensagem de erro de inicialização do Log4j
Etapa 1
Crie um arquivo de configuração para suprimir a mensagem de erro log4j do sistema de criação de log Java criada quando ele não puder localizar um arquivo de configuração quando for inicializado. Clique com o botão direito do mouse na pasta “src” do projeto PrintPDF e selecione “Novo” e depois “Arquivo”. Nomeie o arquivo como "log4j.properties" O Eclipse exibirá uma tela vazia para este novo arquivo.
Etapa 2
Cole as seguintes linhas na tela vazia que representa o arquivo "log4j.properties".
Defina o nível do logger raiz como DEBUG e seu único anexador como A1. log4j.rootLogger=AVISO, A1
A1 está configurado para ser um ConsoleAppender. log4j.appender.A1=org.apache.log4j.ConsoleAppender
A1 usa PatternLayout. log4j.appender.A1.layout=org.apache.log4j.PatternLayout log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n
Etapa 3
Salve o arquivo "log4j.properties". A presença desse arquivo no diretório "src" de nível superior suprimirá a mensagem de inicialização do log4j e quaisquer mensagens de log triviais. O sistema log4j imprimirá apenas os erros reais.
Dica
Há também vários pacotes comerciais que você pode usar para extrair texto de arquivos PDF, mas eles não são baratos.