![]() |
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:
Läuft das Host-Programm nicht als Dienst funktioniert das Programm fehlerfrei und generiert das pdf.
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; 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 |
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 |
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.
|
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 ![]() oder TRichview hth Hannes |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz