2. COM v .NET Framework

V této kapitole se budeme zabývat problémem, jak v prostředí .Net načteme do naší aplikace COM objekt. Klient žádající o zpřístupnění patřičného COM objektu jej získá prostřednictvím RCW (Runtime-Callable Wrapper). RCW zabalí COM objekt a zprostředkuje mezi ním a .NET CLR (Common Language Runtime) prostředí tak, že se COM objekt bude .NET klientu jevit jako běžný .NET objekt a naopak COM objektu se bude .NET klient jevit jako běžný COM klient.

Obrázek 10.1. Přístup ke COM objektu přes RCW

Přístup ke COM objektu přes RCW

2.1. Generování RCW ve Visual Studiu pro komponentu Adobe Distiller

RCW je nutno generovat. Lze to provést (minimálně) dvěma způsoby. Prostřednictvím .NET Visual Studia nebo z příkazové řádky nástrojem nazvaným TlbImp.exe. Ukážeme si, jak se generuje RCW s použitím Visual Studia. Budeme volat modul Adobe Distiller pro konverzi formátu PostScript na PDF.

V sekci Sollution Explorer našeho projektu poklepeme pravým tlačítkem myši na References.

Obrázek 10.2. Solution Explorer - Add Reference

Solution Explorer - Add Reference

Vybereme záložku COM. Samozřejmě, pokud ji chceme použít, komponenta Adobe Distiller musí existovat v našem systému. Vybereme ji příkazem Select. Po stisknutí OK se v seznamu References objeví nová komponenta ACRODISTXLib.

Obrázek 10.3. Vybrání komponenty Adobe Distiller

Vybrání komponenty Adobe Distiller

Nyní, když máme komponentu zařazenu do našeho projektu, můžeme s ní zacházet jako se jmenným prostorem a přistupovat k jejím metodám. Prostředí Visual Studia umožňuje i pro komponenty funkci IntelliSense pro zobrazení dostupných metod a rozhraní. Pokud bychom se chtěli podívat, co všechno komponenta obsahuje, ve Visual Studiu na záložce Solution Explorer - References poklepeme pravým tlačítkem myši na komponentu a vybereme View in Object Browser. Naše komponenta ACRODISTXLib bude zařazena do assembly interop.acrodistxlib.

Obrázek 10.4. Object Browser - ACRODISTXLib

Object Browser - ACRODISTXLib

Na obrázku vidíme, co všechno Object Browser zobrazí - pokud budeme chtít zobrazit obsah PdfDistillerClass, poklepeme na ni myší a v pravém okně se zobrazí seznam všech metod, vlastností apod. Pod dvěma okny se zobrazuje popis aktuálně vybraného. Nyní se zobrazují informace o třídě PdfDistillerClass.

V této chvíli už nám nic nebrání vytvořit instanci této třídy a zacházet s ní jako s jinou běžnou instancí.

2.2. Použití komponenty Adobe Distiller

Jak jsme si řekli výše, stačí jen vytvořit instanci třídy PdfDistillerClass a zavolat soubor, který chceme převést.

[ukázka kódu]
...
string myPSfile = "mypsfile.ps";
string myPDFfile = "mypdffile.pdf";
ACRODISTXLib.PdfDistillerClass distiller = new ACRODISTXLib.PdfDistillerClass();
distiller.FileToPDF(myPSfile, myPDFfile);
...
[příklad ke stažení]

Příklad na komponenty s konverzí PS na PDF i se spustitelným souborem je ve formátu zip stažení zde.