Convertir un PDF en Texte via Java

Convertir un PDF en Texte via Java - Java - Programmation

Marsh Posté le 17-06-2008 à 15:10:48    

Bonjour à tous,
 
J'ai utilisé la librairie itext de Lowalgie pour pouvoir créer et manipuler des fichiers PDF sur Eclipse, via les méthodes et les objets qu'elle propose.
Mais maintenant est il possible que via cet librairie (ou une autre) de convertir un fichier PDF (avec plusieurs pages) en fichier texte (.txt, .doc, ou encore .rtf).
 
J'ai trouvé quelques bribes de codes sur internet mais rien de très utiles. Un m'a aidé à pouvoir convertir une page, mais en utilisant des librairies que je ne connais pas (http://forum.java.sun.com/thread.jspa?threadID=5211294&messageID=9851731), mais le problème c'est qu'il converti qu'une page, je n'arrive pas à concaténer les autres pages en faisant une boucle (en récupérant le nombre de pages), car il écrase en mémoire ce que j'avais inscrit dans le fichier rtf et écrit la dernière page...
 
J'ai regardé quelques logiciels, mais n'étant pas extrement fortiche en anglais et en programmation (plus déjà XD), j'ai eu du mal a comprendre leur fonctionnement (sur le site de pdf tools par exemple).
 
Donc si jamais vous avez une idée, un code, ou une modification à faire dans le code que je vous ai montré ce serait excellent !
 
Merci encore !
 
Djinner

Reply

Marsh Posté le 17-06-2008 à 15:10:48   

Reply

Marsh Posté le 26-08-2008 à 17:12:42    

merci djinner pour le lien ca m'a aide. ca fait 4 jours que je me prends la tete avec ce probleme. grace au code du lien j'ai pu resoudre le probleme. tu as peut etre garde l'instruction "FileOutputStream stream2=new FileOutputStream("D:\\Workspace\\Test\\HelloWorld.rtf" );" dans la boucle et c'est ce qui fait que le fichier est a chaque fois ecrase. voici mon code pour convertir tout le document pdf en .txt :
PdfReader pdfr = new PdfReader(ff.getAbsolutePath());
int nbpage= pdfr.getNumberOfPages();
  int x = 1;
  stream2=new FileOutputStream("D:\\monfichier.txt" );
  while (x<nbpage){
  PdfDictionary page = pdfr.getPageN(x);
  PRIndirectReference objectReference = (PRIndirectReference) page.get(PdfName.CONTENTS);
  PRStream stream = (PRStream) PdfReader.getPdfObject(objectReference);
  byte[] streamBytes = PdfReader.getStreamBytes(stream);
  PRTokeniser tokenizer = new PRTokeniser(streamBytes);    
        strbufe = new StringBuffer();
  while (tokenizer.nextToken()) {
  if (tokenizer.getTokenType() == PRTokeniser.TK_STRING) {
  strbufe.append(tokenizer.getStringValue());
    }
  }
  String test=strbufe.toString();
  StringReader reader1 = new StringReader(test);
  int t;
  while((t=reader1.read())>0)
  stream2.write(t);
  x++;
  }
   


---------------
bon courage
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed