Einzelnen Beitrag anzeigen

sbraun71

Registriert seit: 28. Feb 2005
10 Beiträge
 
Delphi 3 Professional
 
#1

Word über OLE funktioniert nicht wenn aus Dienst aufgerufen

  Alt 8. Feb 2014, 10:12
Hallo zusammen,

ich habe ein Kommando-Zeilen Programm geschrieben, dass rtf-Dateien mit Hilfe von Word in ein pdf umwandelt.

Dies funktioniert grundsätzlich. Das Problem ist, wenn das Programm aus einem Programm das als Dienst läuft aufgerufen wird.

Die Funktion:
Delphi-Quellcode:
function rtf2pdf(const verzeichnis: String; const datei: String;
  var log: TStringList): boolean;
const
  wdExportFormatPDF = 17;
  wdDoNotSaveChanges = 0;
var
  Word, Doc: OleVariant;
  dateiname1, dateiname2: OleVariant;
begin
  Result := false;
  dateiname1 := verzeichnis + datei + '.rtf';
  dateiname2 := verzeichnis + datei + '.pdf';
  log.Add('Create OLE Object');
  Word := CreateOLEObject('Word.Application');
  log.Add('Open Document');
  Doc := Word.Documents.Open(dateiname1);
  log.Add('Export as pdf');
  Doc.ExportAsFixedFormat(dateiname2, wdExportFormatPDF); //Hier kommt die Exception (EVariantInvalidOpError)
  log.Add('Close');
  Word.Quit(wdDoNotSaveChanges);
  log.Add('Done');
  Result := true;
end;
Läuft das Host-Programm nicht als Dienst funktioniert das Programm fehlerfrei und generiert das pdf.

Nur aus dem Dienst kommt folgende Exception:
Exception Message: Ungültige Variantenoperation
Exception ClassName: EVariantInvalidOpError

Entwicklungsumgebung: Delphi XE

Server: Windows 2008 R2 und Word 2010.

Hat mir jemand einen Tipp oder Lösungsansatz?

Vielen Dank und Grüsse

Stefan
  Mit Zitat antworten Zitat