2009-06-06 15 views
3

In einer Ruby-Webanwendung möchte ich, dass Benutzer Dokumente hochladen können. Wenn der Benutzer eine Microsoft Word-Datei (.doc) hochlädt, möchte ich, dass Ruby die Anzahl der Seiten in der Datei zählt. Es wäre sogar einfacher, die Anzahl der Wörter zu erhalten, aber die Anzahl der Seiten reicht aus.Wie zähle ich die Anzahl der Seiten in einer Microsoft Word-Datei mit Ruby?

Wie würde ich das tun? Gibt es eine Ruby-Bibliothek/ein Juwel, die das für mich tun können? Ist es angesichts des DOC-Formats überhaupt möglich?

Antwort

1

In Rubin, eine Word-Datei zu öffnen, die Sie verwenden müssen:

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) 

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

Siehe auch: http://www.perlmonks.org/?node_id=614609 für einen Algorithmus auf dem Erhalten der richtigen/erwartete Wortzahl (Anmerkung: die algo ist in perl)

Dann:

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

Der Win32ole-Juwel läuft nur unter Windows. Er spricht von einer Webanwendung, daher ist die Wahrscheinlichkeit, dass er diese unter Windows ausführt, verschwindend gering. Natürlich, wenn es Leute geben würde, die verrückt genug sind, es auszuprobieren, wären sie auf Stack Overflow ... –

+0

Okay, gibt es eine Möglichkeit, dies zu tun, während NICHT auf Windows läuft? – avdgaag

4

Rufen Sie die Compute() Methode auf das Range-Objekt des Dokuments:

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) 

Sie werden verschiedene Artikel über die Automatisierung von Word-Ruby here finden.

+0

+1 für eine ausgezeichnete ref –

Verwandte Themen