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.
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;
	}
}
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.
P.S. spero di non aver commesso qualche stupidata da qualche parte.