Ciao a tutti,
sto scrivendo una classe che sia in grado di leggere un pdf esistente, modificare il testo (all'interno del PDF sono presenti alcuni marcatori da sostituire tipo @nome@) e salvare il tutto in un nuovo PDF, però nello sviluppo ho incontrato numerosi problemi. Volevo sapere se qualcuno di voi ha gia sviluppato del codice simile e se si che librerie ha utilizzato.
Innanzitutto per leggere il PDF iniziale ho utilizzato le librerie di PDFBox, anche perchè sono le uniche librerie che mi hanno permesso di leggere il contenuto del PDF (con iText non ho trovao nulla che mi permettesse di estrarre il contenuto). Purtroppo però il contenuto viene salvato all'interno di una stringa, quindi viene persa la formattazione (maiuscole, sottolineate, margini e anche le immagini). Alla stringa poi ho applicato un replaceAll e modificato i campi che mi interessavano.
Poi per ricostrire il PDF ho utilizzato le librerie di iText e ho salvato il nuovo file.
Il contenuto del file salvato è corretto, con tutte le stringhe modificate, però le immagini e la formattazione del testo sono andate perse. Volevo sapere se qualcuno di voi sa come effettuare un find e replace mantenendo la formattazione originale.
vi allego in seguito il codice:
//Apro il PDF e estraggo il testo con PDFbox
String text= "";
InputStream in = new FileInputStream("input.PDF");
StringWriter out = new StringWriter();
PDFTextStripper stripper = new PDFTextStripper();
PDFParser parser = new PDFParser( in );
parser.parse();
PDDocument document = parser.getPDDocument();
stripper.writeText(document,out);
text= out.toString();
// rimpiazzo la stringa desiderata
text= text.replaceAll("@nome@","pippo");
document.close();
// copio il contenuto del PDF in un paragrafo e lo salvo con iTEXT
Document document2 = new Document();
PdfWriter.getInstance(document2, new FileOutputStream("OUT.pdf"));
document2.open();
document2.add(new Paragraph(text));
document2.close();
Spero che possiate essermi di aiuto...
Grazie