PDF Export / VBScript

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

ehvbs
*
Beiträge: 10
Registriert: Do, 13.07.2006 09:02
Wohnort: Kiel

PDF Export / VBScript

Beitrag von ehvbs »

Hallo,

ich möchte mit Hilfe von OpenOffice (2.0.2) und VBScript alle .odt Dateien in
einem Verzeichnis als .pdf Dateien exportieren. Das funktioniert auf einer
W2000 Maschine auch sehr gut, auf einem XP (SP2) Computer bricht das
Script nach einigen Dateien aber mit einer Fehlermeldung

Der Remoteservercomputer ist existiert nicht oder ist nicht verfügbar

ab.

Da ich neu in diesem Forum bin, möchte ich zunächst wissen, ob ich mit
dieser Frage hier 'on topic' bin.

Vielen Dank

ehvbs
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey ehvbs,
Da ich neu in diesem Forum bin, möchte ich zunächst wissen, ob ich mit
dieser Frage hier 'on topic' bin.
Na ja, mit VBScript (Was ist das überhaupt? VBA? Visual Basic?) wird dir hier wahrscheinlich kaum jemand helfen können. Aber - poste halt mal den code mit der exakten Stelle, wo der Fehler auftritt und der kmpletten Fehlermeldung. Vielleicht weiss ja jemand etwas?

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
ehvbs
*
Beiträge: 10
Registriert: Do, 13.07.2006 09:02
Wohnort: Kiel

Beitrag von ehvbs »

Hallo Toxitom,

vielen Dank für die Ermunterung. VBScript ist der 'kleine Bruder' von VB
und VBA (ein Basic-Dialekt, der von der Kommandozeile oder im IExplorer
verwendet werden kann).

Hier ist mein Code

Code: Alles auswählen

  Const cbSleep0 = False
  Const cbSleep1 = False
  Const cbSleep2 = False

  Dim oFS  : Set oFS = CreateObject( "Scripting.FileSystemObject" )
  Dim sDir : sDir    = oFS.GetAbsolutePathName( ".\Output" )

  Dim oSrv  : Set oSrv  = CreateObject( "com.sun.star.ServiceManager" )
  Dim oDTop : Set oDTop = oSrv.createInstance( "com.sun.star.frame.Desktop" )
  Dim oCRef : Set oCRef = oSrv.createInstance( "com.sun.star.reflection.CoreReflection" )

  Dim oFile, sFSpec, oOODoc, aArgs()

  For Each oFile In oFS.GetFolder( sDir ).Files
      sFSpec = oFile.Path
      If "odt" = LCase( oFS.GetExtensionName( sFSpec ) ) Then
         WScript.Echo sFSpec, oFS.GetExtensionName( sFSpec )
         
         Set oOODoc = oDTop.loadComponentFromURL(   ConvertToUrl( sFSpec ) _
                                                  , "_blank"               _
                                                  , 0                      _
                                                  , aArgs                  _
                                                )
         
         If cbSleep0 Then WScript.Sleep 2000 
         sFSpec = oFS.GetParentFolderName( sFSpec ) + "\" + oFS.GetBaseName( sFSpec ) + ".pdf"
         savePDF oSrv, oOODoc, sFSpec
         If cbSleep1 Then WScript.Sleep 2000
         oOODoc.Close True
         If cbSleep2 Then WScript.Sleep 2000
         
      End If
  Next

Sub savePDF( oSrv, oOODoc, sFSpec )
  Dim aProps( 1 ), oProp0, oProp1, vRet
  Set oProp0      = oSrv.Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )
  oProp0.Name     = "FilterName"
  oProp0.Value    = "writer_pdf_Export"
  Set aProps( 0 ) = oProp0
  Set oProp1      = oSrv.Bridge_GetStruct( "com.sun.star.beans.PropertyValue" )
  oProp1.Name     = "CompressMode"
  oProp1.Value    = 0
  Set aProps( 1 ) = oProp1
  vRet            = oOODoc.storeToURL( ConvertToUrl( sFSpec ), aProps )
End Sub

Function ConvertToUrl( sFSpec )
  ConvertToUrl = "file:///" + Replace( sFSpec, "\", "/" )
End Function
Der Fehler tritt - nach etwa drei erfolgreich bearbeiteten Dateien - bei dem
Aufruf von "loadComponentFromURL" auf; die Fehlermeldung (sicher
von Windows) lautet:

Der Remoteservercomputer ist existiert nicht oder ist nicht verfügbar

Wenn ich die cbSleep*-Konstanten alle auf True setzte, zwischen den
Aktionen also ca 2 Sekunden warte, läuft das Script durch (mit ca 10
Dateien getestet).

Vielen Dank

ehvbs
Antworten