Ankündigung

Einklappen
Keine Ankündigung bisher.

LibreOffice via Groovy anstossen

Einklappen
X

LibreOffice via Groovy anstossen

Einklappen
  • Filter
  • Zeit
Alles löschen
neue Beiträge

  • LibreOffice via Groovy anstossen

    Hallo zusammen

    ich versuche in einem Prozess per Groovy-Skript LibreOffice anzustossen, damit es ein Dokument in ein PDF umwandelt.
    Zwar läuft der Prozess ohne Fehler durch, aber das Dokument wird nicht umgewandelt. wo könnte mein Fehler liegen?
    wenn ich die Befehlszeile in einem CMD-Batch starte funktioniert es direkt auf dem Server.

    PHP-Code:
    def pOut = new StringBuffer()
    def pErr = new StringBuffer()

    def proc = ["""C:\\Program Files\\LibreOffice\\program\\swriter.exe --headless --convert-to pdf E:\\temp\\TEST.docx --outdir E:\\temp\\pdf"""].execute()

    proc.consumeProcessOutput(pOutpErr)
    proc.waitForOrKill(10000// 10 seconds

    if (proc.exitValue() == 0)
    {
        
    // success
        // ...
    }
    else
    {
        
    // an error occurred
        
    g_log.error(pErr.toString())

    Danke für euer Feedback

  • #2
    Ich habe das noch nie gemacht, habe aber mal gelesen wie die Reihenfolge der Attribute eine Reihe gespielt hat.
    Mach mal das --headless ans Ende des Befehls. Oder lass es ganz weg, ich meine --convert-to beinhaltet automatisch schon auch --headless
    Außerdem habe ich meist gesehen, dass nicht die swrite.exe ausgeführt wurde sondern die soffice.exe, aber das sollte denke ich trotzdem gehen.

    Kommentar


    • #3
      Hallo MartinW
      Danke für die Tipps.
      Leider startet das Programm auch nicht so. im CMD klappt es auch mit soffice.exe und nur dem -convert-to pdf Befehl.
      Ich wollte nun mal sehen ob soffice.exe überhaupt geöffnet würde und habe es ohne Parameter hinterlegt.
      Nun müsste eigentlich ja auf dem Server das LibreOffice aufstarten?
      PHP-Code:
      def pOut = new StringBuffer()
      def pErr = new StringBuffer()

      def proc = ["""C://Program Files//LibreOffice//program//soffice.exe"""].execute()

      proc.consumeProcessOutput(pOutpErr)
      proc.waitForOrKill(10000// 10 seconds

      if (proc.exitValue() == 0)
      {
          
      // success
          // ...
      }
      else
      {
          
      // an error occurred
          
      g_log.error(pErr.toString())

      Kommentar


      • #4
        Naja ganz so ist es ja nicht.
        Der Portaldienst startet den soffice-Prozess in seiner Session. Wenn du dich als User am Server anmeldest hast du deine eigene Session.
        Im Task-Manager solltest du den Prozess aber sehen können. Der wird dann evtl. als User "LocalSystem" ausgeführt.

        Kommentar


        • #5
          Hallo MartinW
          Habe im Taskmanager nun gehen, dass LibreOffice gestartet wird.
          Jetzt klappt dieser Task auch mit den Parametern.
          Allerdings wird der Prozess etwa 4 mal angestossen.

          PHP-Code:
          def pOut = new StringBuffer()
          def pErr = new StringBuffer()

          def proc = ["""C://Program Files//LibreOffice//program//soffice.exe" -convert-to pdf E:\\temp\\TEST.docx -outdir E:\\temp\\pdf"""].execute()

          proc.consumeProcessOutput(pOut, pErr)
          proc.waitForOrKill(10000) // 10 seconds

          if (proc.exitValue() == 0)
          {
              // success
              // ...
          }
          else
          {
              // an error occurred
              g_log.error(pErr.toString())

          Kommentar

          Lädt...
          X