Se connecter avec
S'enregistrer | Connectez-vous

Compter les caractères d'un fichier .doc et .rtf

Dernière réponse : dans Programmation

Bonjour,

Pour un projet d'édition de livre en ligne, j'ai besoin de compter les caractères d'un fichier uploader. Ces fichiers sont au format .doc (word) et .rtf
taille approximative du nombre de caractère: entre 150 000 et + de 600 000.

J'ai pensé à un simple copier coller du livre et de faire une fonction php qui compte les caractère, mais cette solution ne me plait pas beaucoup puisque cela peu générer des erreurs de manipulation qui fausserait le résultat.

Est-ce que quelqu'un pourrait m'indiquer la marche à suivre (s'il en existe une) ou me donner une piste.

Merci d'avance.
Lassé par la pub ? Créez un compte

Bonjour,

Si tu cherches les stats sur un fichier *.doc, tu l'ouvres sous word, dans la barre de menu, tu clic sur outils>statistiques et toutes les infos relatives à ton fichier apparaîtront, nombre de caractères brut, espace compris, paragraphe, nombre de mots,etc

j'espère que c'est bien ce que tu cherchais :) 
Expert Programmation

Plombard, ta soluce a le mérite de fonctionner, mais je suppose que Tomtom s'attend en publiant dans la cat' Programmation à pouvoir le faire de façon automatique !

Tu as des fonctions en php qui te retourne la taille d'une variable, mais si ton fichier est de taille importante, oubli ça. Moi je serais pour le fait d'ouvrir un flot de lecture sur ton fichier, et de le parcourir, caractères par caractères, avec une incrémentation à chaque itération.

guilaumech, oui mais dans du rtf il y a des balises car c'est du XML, ce ne sont donc pas des caractères.

Pour le .doc c'est encore plius compliqué car on a un fichier qui est un binaire.
Expert Programmation

rhoooooooo! le RTF du XML :pfff: 
A ta décharge Sim, le RTF, c'est qunad même bien du texte bêtement balisé.

Il faudrait d'abord transformer le document en texte simple. Il existe des solutions payantes (http://www.google.fr/search?q=doc+txt+convert), mais il existe aussi un truc tout bête : le pilote d'imprimante générique texte seulement de Windows - en faisant une impression dans un fichier, évidemment. Puis compter les caractères, avec un bête wc -c (unixutils)
Expert Programmation

  1. ' /* COMPTEUR DE CARACTERES */
  2.  
  3. ' /* Démarrer Word */
  4. ' /* Ouvrir un document */
  5. ' /* Compter les caractères */
  6. ' /* Quitter. */
  7.  
  8.  
  9. Option Explicit
  10.  
  11. Dim i, args, file, ext
  12. Dim fso, dir
  13. Dim word, doc
  14.  
  15. Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
  16. Set args = Wscript.Arguments
  17. Set Word = wScript.CreateObject("word.application")
  18.  
  19. Word.Visible = False ' Inutile mais comme ça, on fixe les idées.
  20.  
  21. For i = 0 To args.Count -1
  22. wscript.echo args(i) & vbTab & Counter(args(i))
  23. Next
  24.  
  25. Function Counter(Filename)
  26. set doc = Word.Documents.Open(filename, False, True, False)
  27. Counter = doc.Characters.Count
  28. doc.Close
  29. End Function


Et voilà un tchot script à lancer avec le nom des fichiers en paramètres.
On enregistre ce code dans un fichier qui s'appelle tom_compte_les_chars_dans_word.vbs [:patch], et on lance la commande suivante :
C:\Mes Documents Word>cscript tom_compte_les_chars_dans_word.vbs mon_document1.doc mon_document2.doc


Enjoy!

Salut tout le monde,

Certaines solutions mérite de tirer le chapeau bas ! quels artistes !

Mon problème étant de faire un site web ou les utilisateur uploaderont leur fichier .rtf (on oubli le word qui est impossible a traiter). ensuite c'est le serveur web qui traite automatiquement le fichier rtf en comptant le nombre de caractère et retourne celui ci.
Le but étant de définir une tarification par rapport à un volume de caractères.

J'ai bien l'impression qu'une partie de la solution réside dans le fait de n'utiliser exclusivement des fichier .rtf mais maintenant je ne sais ou trouver les infos nécessaires au traitement de celui-ci en php.

Merci beaucoup pour toutes ces réponses, mon problème étant mal éxposé, vous avez été bien pertinent !
Expert Programmation

Ben, PHP ne peut pas connaître Word, la faute à Crosoft :o 

Mais PHP peut exécuter un script externe non ?
Ben alors, tu te sers de ce script que tu lances avec un exec() :
exec("cscript tom_compte_les_chars_dans_word.vbs" . le_doc)



(Ne m'en demande pas plus, je ne programme pas en PHP. :( 
Mais les autres sont là ;) )

zeb a dit :
Ben, PHP ne peut pas connaître Word, la faute à Crosoft :o 

Mais PHP peut exécuter un script externe non ?
Ben alors, tu te sers de ce script que tu lances avec un exec() :
exec("cscript tom_compte_les_chars_dans_word.vbs" . le_doc)



(Ne m'en demande pas plus, je ne programme pas en PHP. :( 
Mais les autres sont là ;) )



Le problème c'est que exec() est très souvent désactivé.
Lassé par la pub ? Créez un compte