>> Tecnologia Eletrônica >  >> Casa Inteligente >> Vida Inteligente

Como Ler Arquivo PDF em Java

Não é difícil ler arquivos PDF em Java usando bibliotecas prontamente disponíveis. Ler arquivos PDF permite que você escreva programas Java que podem processar o texto nesses arquivos. Uma opção para ler arquivos PDF é a biblioteca gratuita e open-source PDFBox disponível na Apache. A plataforma de desenvolvimento Java Eclipse torna esse trabalho mais fácil e gerencia as bibliotecas que você baixará. Você precisa estar familiarizado com programação Java para utilizar essas bibliotecas Java.

Obter Bibliotecas Necessárias

Passo 1

Baixe o Java JDK do site da Sun. Este é um arquivo executável que você pode instalar no seu sistema executando-o. Versões estão disponíveis para Windows, Mac e Linux. Clique no botão vermelho "Download". Salve um arquivo chamado "jdk-6uxx-windows-xxx.exe" quando solicitado. Salve este arquivo e clique duas vezes nele para iniciar o instalador do Java.

Passo 2

Baixe o sistema de desenvolvimento Eclipse e descompacte-o em um diretório de nível superior. Selecione "Eclipse IDE for Java Developers". Isso iniciará o download de "eclipse-java-galileo-SR2-win32.zip". Clique duas vezes no arquivo para descompactá-lo após o download completar. Selecione o diretório raiz "C:" para descompactar o Eclipse.

Passo 3

Inicie o Eclipse clicando duas vezes em "eclipse.exe" no diretório que você acabou de criar ao descompactar o arquivo zip do eclipse. No sistema Eclipse, crie um projeto chamado "PrintPdf". Selecione "Arquivo" depois "Novo" 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 "Criar pastas separadas para arquivos de origem e classe" esteja selecionado. Clique em "Concluir".

Passo 4

Crie uma pasta "lib" no seu projeto "PrintPdf". Clique com o botão direito no projeto "PrintPdf" e selecione "Novo" e depois "Pasta". Digite o nome "lib" e clique em "Concluir".

Passo 5

Baixe o "PDFBox.jar" da Apache do site da 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, ao clicar naquele arquivo jar, você será levado a uma página onde pode selecionar um dos vários servidores que podem fornecer este arquivo. Escolha cada um deles e cada arquivo jar será baixado. Copie cada arquivo jar para o diretório lib que você criou.

Passo 6

Baixe o pacote Apache log4j.jar da mesma forma e copie o arquivo log4j.jar para o diretório. A biblioteca Apache PDFBox usa esta biblioteca de log da Apache, então este arquivo precisa estar presente.

Passo 7

Baixe o pacote Apache Commons Discovery como arquivo zip. Clique duas vezes no arquivo zip, selecione "commons-discovery-nn.jar" e extraia-o para o diretório lib.

Passo 8

No Eclipse, clique no diretório "lib" e pressione "F5". Certifique-se de que todos os arquivos jar que você adicionou são exibidos.

Passo 9

Clique com o botão direito 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".

Escrever o Código para Ler PDFs

Passo 1

Clique com o botão direito na pasta "src" do seu projeto "PrintPDF" e selecione "Novo" e "Pacote". Crie um pacote usando qualquer nome significativo. Por exemplo, nomeie o pacote "com.pdf.util". Clique em "Concluir".

Passo 2

Clique com o botão direito 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 "public static void main..." para que o sistema crie um método "main".

Passo 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");
    //print out results
    System.out.println(pdf.getParsedText());
}

Note que o arquivo que você deseja imprimir está escrito no construtor do PDFTextParser ("data/JavaPDF.pdf"). Poderia facilmente ser um argumento de linha de comando:

PDFTextParser pdf = new PDFTextParser(argv[0])

ou selecionado de uma interface GUI.

Isso cria uma instância da classe PDFTextParser e chama seu método "getParsedText".

Passo 4

Insira o seguinte código logo abaixo da linha superior da classe "public class PDFTextParser" que foi criada para você.

private PDFParser parser = null;

// Extract text from PDF Document
public PDFTextParser(String fileName) {
    File file = new File(fileName);
    if (!file.isFile()) {
        System.err.println("File " + fileName + " does not exist.");
    }
    //Set up instance of PDF parser
    try {
        parser = new PDFParser(new FileInputStream(file));
    } catch (IOException e) {
        System.err.println("Unable to open PDF Parser. " + e.getMessage());
    }
}

//-------------------------------
public String getParsedText() {
    PDDocument pdDoc = null;
    COSDocument cosDoc = null;
    String parsedText = null;

    try {
        PDFTextStripper pdfStripper = new PDFTextStripper();
        parser.parse();
        cosDoc = parser.getDocument();
        pdDoc = new PDDocument(cosDoc);

        //get list of all pages
        List<PDPage> list = pdDoc.getDocumentCatalog().getAllPages();

        //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);
    } catch (IOException e) {
        System.err.println("An exception occured in parsing the PDF Document." + e.getMessage());
    } finally {
        try {
            if (cosDoc != null) cosDoc.close();
            if (pdDoc != null) pdDoc.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return parsedText;
}

Passo 5

Execute o programa. Clique com o botão direito na classe PDFTextParser e clique em "Executar como" e depois em "Aplicação Java". O programa deve rodar e imprimir o conteúdo de texto do arquivo PDF que você inseriu no seu código.

Suprimir Mensagem de Erro de Inicialização do Log4j

Passo 1

Crie um arquivo de configuração para suprimir a mensagem de erro do sistema de log Java log4j criada quando ele não encontra um arquivo de configuração na inicialização. Clique com o botão direito na pasta "src" do projeto PrintPDF e selecione "Novo" e depois "Arquivo". Nomeie o arquivo "log4j.properties". O Eclipse exibirá uma tela vazia para este novo arquivo.

Passo 2

Cole as seguintes linhas na tela vazia representando o arquivo "log4j.properties".

# Set root logger level to DEBUG and its only appender to A1.
log4j.rootLogger=WARN, A1

# A1 is set to be a ConsoleAppender.
log4j.appender.A1=org.apache.log4j.ConsoleAppender

# A1 uses PatternLayout.
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%-4r [%t] %-5p %c %x - %m%n

Passo 3

Salve o arquivo "log4j.properties". A presença deste 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 erros reais.

Dica

Existem também vários pacotes comerciais que você pode usar para extrair texto de arquivos PDF, mas eles não são baratos.