Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Como usar a biblioteca JavaScript pdf.js no Selenium com Java através da clase javaScriptExecutor

Encontrei está biblioteca que faz exatamene o que preciso, extrair o texto do PDF e transformar em uma String. http://git.macropus.org/2011/11/pdftotext/example/ https://github.com/hubgit/hubgit.github.com/tree/master/2011/11/pdftotext

Pelo que pesquisei (muito), me parece que a versão abaixo é a mais recente do pdf.js. Porém, não consigo após abrir o arquivo pdf no navegador, fazer com que essa biblioteca seja chamada e então use os métodos dela para copiar o texto. https://github.com/mozilla/pdf.js

Pesquisei muito durante 2 seguidos, de fato não sou grande conhecedor de js, mas encontrei está forma https://stackoverflow.com/questions/1554280/extract-text-from-pdf-in-javascript que parece ser a ideal de como implementar, porém, não consegui adaptar para o JavascriptExecutor de Selenium.

Eis minha tentativa tentando chamar da mesma forma que o index do primeiro exemplo http://git.macropus.org/2011/11/pdftotext/example/.

driver.get("file:///C:/Users/user/Desktop/arquivo.pdf");

        JavascriptExecutor jse = (JavascriptExecutor) driver;

        String script1 = "id=\"pdf-js\"";
        String script2 = "src=\"projeto/src/test/resources/js/pdf.js\"";
        String script3 = "PDFJS.workerSrc = cslight/src/test/resources/js/pdf.js";
        String script4 = "src=\"/projeto/src/test/resources/js/app.js\"";
        String script5 = "var app = new App;";

        jse.executeScript(script1);
        jse.executeScript(script2);
        jse.executeScript(script3);
        jse.executeScript(script4);
        jse.executeScript(script5);

Por favor, me ajudem haha!

2 respostas

Olá, pelo que entendi seu objetivo é extrair o texto de um PDF. Acho que entendi a estratégia que vc está tentando utilizar, mas pode haver formas mais simples. Achei este tópico no stackoverflow que tem um código todo em Java e parece ser bem direto: https://stackoverflow.com/questions/18098400/how-to-get-raw-text-from-pdf-file-using-java

Espero ter ajudado.

solução!

Tiago, muito obrigado, pelo que vi é muito válido.

Encontrei também uma outra solução que é muito fácil de ser implementada com a ApiITex. https://developers.itextpdf.com/examples/itext-action-second-edition/chapter-1

No maven basta colocar a seguinte dependência:

<!-- https://mvnrepository.com/artifact/com.itextpdf/itextpdf -->
        <dependency>
            <groupId>com.itextpdf</groupId>
            <artifactId>itextpdf</artifactId>
            <version>5.5.13</version>
        </dependency>

Após isso, basta implementar um método parecido com:

public void lerConteudoPdfUsandoApiIText() throws IOException {
    PdfReader pdfReader = new PdfReader(pdfUrl); 

    System.out.println("\n\n---------API ITEXT-----------------------------"+
            PdfTextExtractor.getTextFromPage(pdfReader,1));
}

Dai basta fazer o que quiser com o texto convertido em String :D