2009-06-06 5 views
3

Dans une application Web Ruby, je souhaite que les utilisateurs puissent télécharger des documents. Si l'utilisateur télécharge un fichier Microsoft Word (.doc), je veux que Ruby compte le nombre de pages dans le fichier. Il serait encore plus facile d'obtenir le nombre de mots, mais le nombre de pages suffira.Comment compter le nombre de pages dans un fichier Microsoft Word en utilisant Ruby?

Comment est-ce que je ferais cela? Y a-t-il une bibliothèque/gemme Ruby qui peut le faire pour moi? Est-ce même possible, compte tenu du format DOC?

Répondre

1

En ruby, pour ouvrir un fichier de texte que vous devez utiliser:

require 'win32ole' 
word = WIN32OLE.new('word.application') 
word.visible = true 
word.documents.count 

# open/create new document 
word.documents.add 

# or open file 
word.documents.open(path_to_file) 

(source: http://www.ruby-forum.com/topic/99742#214485)

Voir: http://www.perlmonks.org/?node_id=614609 pour un algorithme à obtenir le nombre de mots approprié/prévu (note: l'algo est en perl)

Puis:

word.activedocument.close(false) 
word.quit 
+0

La gemme win32ole fonctionne uniquement sous Windows. Il parle d'une application web, donc la probabilité qu'il l'exécute sous Windows est infime. Bien sûr, s'il y avait des gens assez fous pour l'essayer, ils seraient sur Stack Overflow ... –

+0

Bon, y a-t-il un moyen de le faire sans fonctionner sous Windows? – avdgaag

4

Appelez le ComputeStatistics() méthode sur l'objet Range du document:

require 'win32ole' 

WdStatisticWords = 0 
WdStatisticPages = 2 

word = WIN32OLE.connect('Word.Application') 
doc = word.ActiveDocument 

word_count = doc.Range.ComputeStatistics(WdStatisticWords) 
page_count = doc.Range.ComputeStatistics(WdStatisticPages) 

Vous trouverez divers articles sur l'automatisation de Word avec Ruby here.

+0

+1 pour une excellente ref –

Questions connexes