Delphi - Word dokumentumokat konvertáló komponens készítése

forráskód letöltése
Készítünk egy komponenst, amely a Microsoft Word által ismert formátumok közti konvertálást teszi lehetővé. A forrásállomány és a célállomány formátumai a következők lehetnek: Word dokumentum, Word dokumentumsablon, Rich Text, DOS Text, HTML, Unicode.
A mellékelt példaprogram megnyitása előtt az MSWordConverter.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Az OldDocument tulajdonságban adhatjuk meg a konvertálandó állomány, a NewDocument-ben pedig a célállomány nevét. Az állománynevek megadásánál az állományhoz vezető elérési utaknak is szerepelniük kell.
A SaveFormat tulajdonságban beállított érték határozza meg a létrejövő célállomány formátumát. Az itt megadható értékek a következők:
TSaveFormat = (Document, DOSText, HTML, RTF, Template, UnicodeText);
A konvertáláshoz az Execute metódust kell meghívni.
Komponensünket a TComponent osztályból származtatjuk.
A használható formátumok kiválasztásához létre kell hoznunk egy új típust, a TSaveFormat-ot. Az állománynevek és a mentés formátum megadására szolgáló tulajdonságokkal a létrehozásukon kívül semmilyen különösebb teendők nincs. A komponens működésének kulcsa az Execute metódus.
procedure TMSWordConverter.Execute;
var
  WordApp: OleVariant;
  sf: Integer;
A konvertálást úgy hajtjuk végre, hogy a háttérben megnyitjuk a Microsoft Word programot. Betöltjük a forrásállományt, majd elmentjük a NewDocument-ben megadott néven, a SaveFormat property-ben megadott formátumban.
A Word megnyitásához a WordApp, OleVariant típusú objektumot használjuk. Az OleVariant típus használatához a uses listát bővítenünk kell a COMOBJ unit nevével.
Az OldDocument property-ben megadott dokumentumot megnyitjuk a háttérben, a szokásos módon.
WordApp:=CreateOleObject('Word.Application');
WordApp.Documents.Open(FOldDocument);
A dokumentum megnyitásakor szerencsénk van, mert a Word automatikusan felismeri a megadott állomány formátumát.
Ha az állomány betöltődött, akkor a SaveAs metódus meghívásával menthetjük el, más néven és formátumban.
WordApp.ActiveDocument.SaveAs(FNewDocument,sf);
A mentésnél már nekünk kell megadnunk a létrejövő állomány formátumát. A használható formátumok számára létrehoztuk a megfelelő konstansokat. A SaveFormat property-ben beállított értéknek megfelelő konstans tartalmát kell az sf változóban elhelyeznünk. Erre egy Case elágazás tökéletesen alkalmas.
case FSaveFormat of
        Document: sf:=wdFormatDocument;
        DOSText: sf:=wdFormatText;
        HTML: sf:=wdFormatHTML;
        RTF: sf:=wdFormatRTF;
        Template: sf:=wdFormatTemplate;
        UnicodeText: sf:=wdFormatUnicodeText;
      end;
Miután létrejött az új állomány, nincs más dolgunk, mint bezárni a Word programot.
WordApp.ActiveDocument.Close;
WordApp.Quit;
A konvertálás folyamata teljesen a háttérben zajlik, a felhasználó számára nem látható módon.