Wie könnte man ein Word-Dokument in ein HTML-File umwandeln? Das ist nicht schwierig! ...
Documents(1).SaveAs "FileName", wdHTML
Wer jetzt einen Blick in den Quellcode dieses HTML-Files wirft, der wird die Idee schnell wieder fallen lassen. Überflüssige Tags ohne Ende!
Seit Ende Januar gibt es dafür aber ein kostenloses Office-Tool. Den "Microsoft Office HTML-Filter 2.0". Nach der Vollinstallation steht in Word jetzt ein "Export to HTML"-Feature im Menü "Datei" zur Verfügung. Mehr Info über dieses Tool finden Sie hier...
http://office.microsoft.com/downloads/2000/Msohtmf2.aspx
Es gibt keine Möglichkeit den Word "Export" Filter über VBA anzusprechen. Dafür kann man ihn über Dos-Commando-Zeile aufrufen. z.B....
filter.exe -s -f Datei.htm DateiNeu.htm |
Was heißt jetzt -s -f???
Das sind einfach Parameter. Jeder Paramter hat seine eigene Filter-Funktion. Mehr dazu...
http://office.microsoft.com/Assistance/2000/wDosPeeler.aspx Genauso kann ich jetzt über WScript-Shell diesen Filter in ASP ansprechen. Dazu habe eine VB-Klasse geschrieben, die alle Filter-Funktionen für mich bereit stellt. Aber zu erst kommt noch die HTML-Generierung eines Word-Dokuments in ASP.
1. Speichern eines Word-Dokuments als HTML
<!--METADATA TYPE="TypeLib" NAME="Microsoft Word 9.0 Object Library" UUID="{00020905-0000-0000-C000-000000000046}" VERSION="8.1"--> |
wdHTML.asp
<% Pfad = Server.MapPath("./") Set oWord = Server.CreateObject("Word.Application") Set oDoc = oWord.Documents.Open(Pfad & "WordAsHTML.doc", , True, False) oDoc.SaveAs Pfad & "WordHTML.htm", wdFormatHTML oDoc.Close False oWord.Quit Set oWord = Nothing Response.Redirect ("./wordashtml.htm") %> |
2. Verwenden des "Office HTML Filter 2.0" in ASP.
2.1 Beschreibung + Code: Die Klasse, mit dem Filter-Funktionen
OffFilter.asp
Class HTMLFilter Private File Private NewFile Private P Public OW Private FileNotFound Private Sub Class_Initialize NewFile = " " OW = True FileNotFound = "OK" End Sub '--- Die Übergabe-Parameter werden in Filter-Funktionen umgewandelt Property Let LanguageTags(Par1) If Par1 = True Then P = P & " -l" End Property Property Let NoBackup(Par2) If Par2 = True Then P = P & " -b" End Property Property Let DelStyleElements(Par3) If Par3 = True Then P = P & " -s" End Property Property Let ExportCSS(Par5) If Par5 = True then P = P & " -x" End Property Property Let OriginatorMetaTags(Par6) If Par6 = True Then P = P & " -m" End Property Property Let DelStandardCSSProp(Par7) If Par7 = True Then P = P & " -c" End Property Property Let DelStaticImages(Par8) If Par8 = True Then P = P & " -f" End Property ' --- Der Dateiname wird zugewiesen. Vorher wird überprüft, ob die Datei existiert! Property Let FileName(Par9) Set oFileSys = Server.CreateObject("Scripting.FileSystemObject") x = CBool(oFileSys.FileExists(Par9)) Set oFileSys = Nothing If x = True then File = Par9 Else FileNotFound = "File Not Found" End If End Property Property Let FileNameNew(Par10) NewFile = Par10 End Property '--- mit Execute wird die Filter-Methode ausgelöst. Vorher wird überprüft, ob die Datei gefunden wurde. Public Sub Execute if FileNotFound = "File Not Found" Then Exit Sub allPara = "filter.exe" & P & " -f " & File & " " & NewFile Set oWsh = Server.CreateObject("WScript.Shell") oWsh.Run allPara, 1, True Set oWsh = Nothing End Sub '--- Ausgabe-Paramter "Info" so kann überprüft werden, ob das Filtern funktioniert hat. Property Get Info Info = FileNotFound End Property End Class %> |
Bedeutung der Property Let´s: LanguageTags (-l) = Filtern der Language-Tags.
NoBackup (-b) = Es wird keine Backup-Datei erzeugt.
DelStyleElements (-s) = Style-Elemente werden gelöscht
ExportCSS (-x) = Style-Sheet-Datei wird Exportiert
OriginatorMetaTags(-m) = Originator-Tags werden gelöscht
DelStandardCSSProp(-c) = Standard-Style-Sheets werden gelöscht
DelStaticImages(-f) = Statische Bilder einen Word-HTML-Files werden gelöscht.
....
auch wieder nachzulesen auf...
http://office.microsoft.com/Assistance/2000/wDosPeeler.aspx 2.2 Filtern des HTML-Files auf überfüssige Tags, unter Verwendung der Klasse "HTMLFilter"
wdFilter.asp
OffFilter.asp muß includiert werden...
<!--#include file="OffFilter.asp"--> <% '--- oH als Instanz zur Klasse HTMLFilter Set oH = New HTMLFilter '--- Notwendig, Dateiname, der zu filternden Datei zuweisen oH.FileName = Server.MapPath("./") & "WordHTML.htm" '--- Optional, Name des Neuen HTML-Files angeben. oH.FileNameNew = Server.MapPath("./") & "WdmFilter.htm" '--- Optionale Paramter zuweisen, z.B. DelStaticImages = True heißt, Statische Bilder im '--- HTML-File werden entfernt! oH.DelStandardCSSProp = True oH.DelStaticImages = True oH.LanguageTags = True oH.NoBackup = True oH.OriginatorMetaTags = True ' --- Ausführen der filter.exe nach Parameter-Zuweisung oH.Execute ' --- Status abfragen Status = oH.Info ' --- Klasse zerstören Set oH = Nothing '--- Status ausgeben Response.Write Status %> |
Unten gibts natürlich wieder sämtlichen Quell-Code zum Download!