Saudações galera do GUJ, estou com problemas ao realizar a extração de texto de alguns arquivos PDF. Estou obtendo a seguinte pilha:
Caused by: java.lang.NoSuchMethodError: org.apache.fontbox.cmap.CMap.lookup(II)Ljava/lang/String;
at org.apache.pdfbox.pdmodel.font.PDFont.cmapEncoding(PDFont.java:449)
at org.apache.pdfbox.pdmodel.font.PDFont.encode(PDFont.java:474)
at org.apache.pdfbox.pdmodel.font.PDType0Font.encode(PDType0Font.java:178)
at org.apache.pdfbox.util.PDFStreamEngine.processEncodedText(PDFStreamEngine.java:394)
at org.apache.pdfbox.util.operator.ShowTextGlyph.process(ShowTextGlyph.java:62)
at org.apache.pdfbox.util.PDFStreamEngine.processOperator(PDFStreamEngine.java:551)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:274)
at org.apache.pdfbox.util.PDFStreamEngine.processSubStream(PDFStreamEngine.java:251)
at org.apache.pdfbox.util.PDFStreamEngine.processStream(PDFStreamEngine.java:225)
at org.apache.pdfbox.util.PDFTextStripper.processPage(PDFTextStripper.java:442)
at org.apache.pdfbox.util.PDFTextStripper.processPages(PDFTextStripper.java:366)
at org.apache.pdfbox.util.PDFTextStripper.writeText(PDFTextStripper.java:322)
at br.jus.tjac.legis.util.LeitorPDF.lerPDF(LeitorPDF.java:21)
at br.jus.tjac.legis.contoller.DocumentoController.tratarArquivo(DocumentoController.java:106)
at br.jus.tjac.legis.contoller.DocumentoController.adicionar(DocumentoController.java:90)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
A classe responsável pela extração é a seguinte:
package br.jus.tjac.legis.util;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.util.Properties;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.util.PDFTextStripper;
public class LeitorPDF {
public static String lerPDF(File file) throws IOException {
PDDocument doc = null;
StringWriter sw = new StringWriter();
try{
doc = PDDocument.load(file);
PDFTextStripper stripper = new PDFTextStripper();
stripper.setStartPage( 1 );
stripper.setEndPage(Integer.MAX_VALUE);
stripper.writeText(doc, sw);
}finally {
if (doc!=null)
doc.close();
}
String texto=mudarEncoding(sw);
return texto;
}
private static String mudarEncoding(StringWriter sw)
throws UnsupportedEncodingException {
String texto=sw.toString();
byte[] textoUtf8=texto.getBytes("UTF8");
String textoIso=new String(textoUtf8, "ISO-8859-1");
return textoIso;
}
}
O que pode estar acontecendo? Funciona na maioria dos arquivos, mas em alguns tenho o erro acima descrito. Por favor alguem me socorra. Forte abraço a todos.