Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Word über OLE funktioniert nicht wenn aus Dienst aufgerufen (https://www.delphipraxis.net/179009-word-ueber-ole-funktioniert-nicht-wenn-aus-dienst-aufgerufen.html)

sbraun71 8. Feb 2014 11:12

Word über OLE funktioniert nicht wenn aus Dienst aufgerufen
 
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

sbraun71 9. Feb 2014 15:12

AW: Word über OLE funktioniert nicht wenn aus Dienst aufgerufen
 
Hallo zusammen,

Der Fehler scheint nicht so offensichtlich zu sein. Ich denke aber, dass es mit der Word-Installation zusammenhängt.

Kennt jemand eine Komponente die es ermöglicht rtf in pdfs umzuwandeln ohne auf Word angewiesen zu sein.

Vielen Dank und Grüsse

Stefan

Sir Rufo 9. Feb 2014 16:31

AW: Word über OLE funktioniert nicht wenn aus Dienst aufgerufen
 
Mit der Installation hat es nichts zu tun, sondern damit, dass Word einen aktiven Desktop benötigt.

hstreicher 9. Feb 2014 20:01

AW: Word über OLE funktioniert nicht wenn aus Dienst aufgerufen
 
im Prinzip doch ganz einfach

RTF also Richedit drucken, und als Drucker einen PDF Drucker verwenden


http://www.delphipraxis.net/139544-r...t-drucken.html

oder TRichview

hth Hannes


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz