Salve forummisti, ho sviluppato un progetto in cui uso la libreria itextpdf. Ho creato una classe gestione testo che mi serve per estrarre il testo di un file pdf, dopo aver aggiornato la jdk alla versione 7 ,appena uscita, tale codice non mi esegue come prima.
Mi da un errore sui pdf protetti da cui non riesce ad estrarre il testo, e non riesco a catturare l'eccezione per gestirla. Ma la cosa che più mi incuriosisce è che se lancio il programma dal compilatore con un main esegue normalmente mentre dal prompt dei comandi mi genera gli errori.
L'errore è segnalato al comando return pulisciStringa(PdfTextExtractor.getTextFromPage(le ttore, pagina));. Ho riscritto la classe in alcuni punti per cercare di risolvere il problema, ma non riesco a catturare l'eccezione. Fatemi sapere se avete delle proposte per migliorare o risolvere la situazione o se avete bisogno di altre info.codice:import java.io.FileInputStream; import java.io.IOException; import com.itextpdf.text.pdf.PdfReader; import com.itextpdf.text.pdf.parser.PdfReaderContentParser; import com.itextpdf.text.pdf.parser.PdfTextExtractor; import com.itextpdf.text.pdf.parser.SimpleTextExtractionStrategy; // classe per estrarre il contenuto da un file .pdf public class GestioneTesto{ private static PdfReader lettore; private String fileName; private PdfReaderContentParser parserLettore; private static boolean protetto; public GestioneTesto(FileInputStream filePdf, String nome) throws IOException{ fileName=pulisciStringa(nome); try { lettore=new PdfReader(filePdf); parserLettore = new PdfReaderContentParser(lettore); protetto=false; } catch (NoClassDefFoundError e) { System.out.println("Gestione testo non creabile"); lettore=null; parserLettore=null; protetto=true; } } //il metodo elimina spazi vuoiti ripetuti ed il carattere ' che genere problemi in alcuni casi private String pulisciStringa(String testo) { return testo.replaceAll("'", " ").replaceAll("\\s+", " "); } //ritorna il testo della pagina richiesta public String getTestoPagina(int pagina) throws IOException{ parserLettore.processContent(pagina,new SimpleTextExtractionStrategy()); return pulisciStringa(PdfTextExtractor.getTextFromPage(lettore, pagina)); } //ritorna il numero di pagine del pdf public int getNumeroPg(){ return lettore.getNumberOfPages(); } //ritorna il nome del pdf public String getNome(){ return fileName; } public boolean protetto() { return protetto; } }
P.S. spero di non aver commesso qualche stupidata da qualche parte.

Rispondi quotando