Makro für RTF to HTML

Das Textverarbeitungsprogramm

Moderator: Moderatoren

Mitterbinder
Beiträge: 2
Registriert: Sa, 20.12.2003 18:02

Makro für RTF to HTML

Beitrag von Mitterbinder »

Hallo,

ich habe diese Frage schon auf der users@de.openoffice.org gestellt, und von Thomas Krumbein den Hinweis auf dieses Forum bekommen.
Ich möchte ein Makro erstellen, dass alle RTF-Dokumente eines Verzeichnises öffnet und anschließend in einem anderen V als HTML speicher. Ich hab inzwischen schon einiges hinbekommen, habe aber noch Fragen.

Code: Alles auswählen

Sub rtf2html

REM Alle RTFs im Verzeichnis lesen
dim args() 
Dim in_Path As String
Dim out_Path As String
Dim sDir as String
Dim sValue as String
Dim sEndung  as String

sDir="Dateien:"
in_Path = "/home/spo/tmp/tmp/"
out_Path = "/home/spo/tmp/tmp/HTML/"
sEndung = "*.rtf"
sWert = Dir$(in_Path + sEndung,0)
sValue = sWert

Do
if (GetAttr( in_Path + getPathSeparator + sValue) AND 0) =0 then
sUrl1$ = "file://" & in_Path & sValue

Rem Datei oeffnen
 objDokument = starDesktop.loadComponentFromURL(sUrl1, "_blank", 0, args())
   
Rem Datei als HTML speichern
dim args1(0) as new com.sun.star.beans.PropertyValue
sUrl =  "file://" & out_Path & sValue & ".html"
args1(0).Name = "FilterName"
args1(0).Value = "HTML (StarWriter)"

objDokument.storeAsUrl(sUrl, args1())
rem objDokument.close(-1) 
End If

sValue = Dir$
Loop until sValue = ""

MsgBox Chr(13) + sWert + Chr(13) + Chr(13) +  "wurde(n) als HTML gespeichert",0,"Meldung"
End sub

Wie kann ich von dem Dateinamen "file.rtf" die Endung ".rtf" entfernen. sonst bekomme ich immer "file.rtf.html" als neue Dateinamen?

Wie kann ich bei speicher steuern, dass enthaltene Bilder im HTML-Verzeichnis mitgespeichert werden, momentan werden Bilder nur ins RTF-Verzeichnis verlinkt?

Für evtl. Hilfen scho jetzt vilen Dank.

Johann
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hallo Johann,

tia, so trifft man sich wieder.
OK, hab dein Makro mal analysiert.
Um die Endung ".rtf" zu entfernen, einfach eine zusätzliche Codezeile einfügen und die Endung abschneiden:

Code: Alles auswählen

sValue=left(sValue, len(sValue)-4)  'diese Zeile hier einfügen!
sUrl = "file://" & out_path & sValue & ".html" 
mit "-4" schneidest du die letzten 4 Stellen des Strings ab., also ".rtf" . Nutzt du andere Endungen evt. anpasssen.

Zur zweiten Frage:
Das wird sehr kompliziert. Theoretisch müstest du alle Links im Dokument anspringen , per Makro den Link-Pfad ändern etc.
Ich glaube, das würde ich mir schenken und einfach gleiche Verzeichnise wählen.
Interessanter wäre übrigens die Frage, ob die Links relativ oder absolut gespeichert werden. Werden Sie relativ gespeichert, kannst du doch einfach nach der Umwandlung alle Dateien auf ein Verzeichnis deiner Wahl kopieren (ohne die RTF-Dateinen) - auch per Makro - , werden Sie absolut gespeichert, musst du sie sowieso alle nacharbeiten.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Mitterbinder
Beiträge: 2
Registriert: Sa, 20.12.2003 18:02

Beitrag von Mitterbinder »

Hallo Thomas,
vielen Dank für den Tip, nun läuft das Makro.
Eine kleine Umstellung war noch nötig, die Zeile:

Code: Alles auswählen

dim args1(0) as new com.sun.star.beans.PropertyValue
hab ich noch aus der Schleife rausnehmen müssen, sonnst lief das M beim zweiten Dokument auf einen Fehler.

Die Links werden relativ gespeichert, also müsste das mit demselben Verzeichnis klappen.
Dazu noch ne Frage, warum speichert OOo die Bilder bei RTFs nicht im RTF-Dokument wie z.B. MS_Word, weist du den Grund?

Übrigends, soll ich das fertige Makro nochmal hier reinstellen, falls mal jemand sowas braucht?

Besten Dank und viele Grüße
Johann

P.S. Kennst du eine gute Dokumentation zu Starbasic (Online oder als Buch)?
Antworten