DevTrain

Autor: Bernhard Elbl

Word-Doc to HTML + Office HTML Filter 2.0

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!


Erfasst am: 25.06.2001 - Artikel-URL: http://www.devtrain.de/news.aspx?artnr=474
© Copyright 2003 ppedv AG - http://www.ppedv.de