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.
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.
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.
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.
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í.
Jak jsme si řekli výše, stačí jen vytvořit instanci třídy PdfDistillerClass a zavolat soubor, který chceme převést.
... string myPSfile = "mypsfile.ps"; string myPDFfile = "mypdffile.pdf"; ACRODISTXLib.PdfDistillerClass distiller = new ACRODISTXLib.PdfDistillerClass(); distiller.FileToPDF(myPSfile, myPDFfile); ... |
Příklad na komponenty s konverzí PS na PDF i se spustitelným souborem je ve formátu zip stažení zde. |