Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Office 2007 mit OLE als PDF speichern (https://www.delphipraxis.net/135702-office-2007-mit-ole-als-pdf-speichern.html)

GeraldK 16. Jun 2009 10:01


Office 2007 mit OLE als PDF speichern
 
Hallo,

ich arbeite mit Delphi 2 und möchte eine MS-WORD Datei speichern, was soweit ganz gut funktioniert.

Allerdings möchte ich dazu die "neue" Funktion von MS-Word 2007 SPEICHERN UNTER PDF verwenden.
Zwar habe ich dazu im Forum einige Vorschläge gefunden, jedoch gelten diese offensichtlich nicht für Delphi 2.

Das MS-WORD Dokument speichere ich mit folg. Befehl:
ObjWord.FileSaveAs('c:\test\msword.doc');

Mit der Dateiextension '.pdf' klappt es leider nicht.

Ich möchte die konvertierte MS-WORD Datei NICHT mittels eines PDF-Creators ausdrucken.


Besten Dank für Eure Hilfe !

Grüße
Gerald

API 16. Jun 2009 10:38

Re: Office 2007 mit OLE als PDF speichern
 
Hallo Gerald

Zeichne mal ein Macro auf. Dann siehst du, wie der Code sein sollte.

GeraldK 16. Jun 2009 10:55

Re: Office 2007 mit OLE als PDF speichern
 
Hallo API,

danke für den raschen Tip, aber wie kann ich die Parameter defieren, die hier übergeben werden:

sDateiname := 'c:\test.pdf';

ObjWord.ActiveDocument.ExportAsFixedFormat.OutputF ileName := sDateiName,
ExportFormat :=wdExportFormatPDF,
OpenAfterExport :=False,
OptimizeFor :=wdExportOptimizeForPrint,
Range:=wdExportAllDocument, From:=1, To:=1,
Item:=wdExportDocumentContent,
IncludeDocProps:=True,
KeepIRM:=True,
CreateBookmarks:=wdExportCreateNoBookmarks,
DocStructureTags:=True, _
BitmapMissingFonts:=True,
UseISO19005_1:=False;

Erhalte Syntaxerror bei Semicolon von sDateiName (END erwartet aber ',' gefunden).

Auch habe ich folg. Syntax probiert:

ObjWord.ActiveDocument.ExportAsFixedFormat
(OutputFileName := sDateiName,
ExportFormat :=wdExportFormatPDF,
OpenAfterExport :=False,
OptimizeFor :=wdExportOptimizeForPrint,
Range:=wdExportAllDocument, From:=1, To:=1,
Item:=wdExportDocumentContent,
IncludeDocProps:=True,
KeepIRM:=True,
CreateBookmarks:=wdExportCreateNoBookmarks,
DocStructureTags:=True,
BitmapMissingFonts:=True,
UseISO19005_1:=False);

Nun meckert Delphi wegen der nicht vorhandenen Variablen wdExportFormatPDF, etc.
Welches Format (string, etc.) gehört hier definiert, bzw. zugewiesen.


Nun habe ich die Variablen wdExportFormatPDF etc. gegen fixe Werte ausgetauscht, und zumindest kann ich das Programm kompilieren.
Aber beim Testen erhalte ich dann die Meldung "Exception der Klasse EOleError: Methode ActiveDocument wird vom OLE-Object nicht unterstützt".
Soweit ich mich erinnere, arbeitet Delphi 2 mit OLE 2.0.

Was könnte ich noch ändern, oder scheitert jeder Versuch an OLE 2.0 ??

Danke für Eure Hilfe !

Gerald

toms 16. Jun 2009 18:13

Re: Office 2007 mit OLE als PDF speichern
 
ungetestet:

Delphi-Quellcode:
procedure ConvertDocToPdf(const Filename: string; DestFileName: string);
const
  wdExportFormatPDF = 17;
  wdExportOptimizeForPrint = 0;
var
  ObjWord, ObjDoc: Variant;
  EmptyParam: OleVariant;
begin
  ObjWord := CreateOleObject('Word.Application');
  ObjWord.Visible := True;
  ObjDoc := ObjWord.Documents.Open(FileName);
  ObjDoc.ExportAsFixedFormat(
    DestFileName,
    wdExportFormatPDF,
    False, // OpenAfterExport
    wdExportOptimizeForPrint, // OptimizeFor
    EmptyParam, // etc.
    EmptyParam,
    EmptyParam,
    EmptyParam,
    EmptyParam,
    EmptyParam,
    EmptyParam,
    EmptyParam,
    );
  ObjWord.Quit;
  ObjWord := Unassigned;
end;

GeraldK 17. Jun 2009 11:01

Re: Office 2007 mit OLE als PDF speichern
 
Hallo Toms,

vielen Dank für Deine Hilfestellung.

In Delphi 2 erhalte ich beim Compilieren den Hinweis, dass der Typ der Variable Emptyparam mit OLEVariant nicht erkannt wird.
Nun habe ich diese gegen Konstanten beim Aufruf der Procedure mit Wert 0 geändert, UND ES FUNKTIONIERT !!!


Vielen Dank nochmals !

Liebe Grüße
Gerald


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 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