Vývojáři ovladačů pro většinu zařízení je bohužel moc netestují. Jinak si nedovedu vysvětlit, že téměř s polovinou zařízení mám nějaké problémy, jednou to nefunguje na 64 bitech, jinde se to zase hádá s něčím jiným a kdesi cosi.
Nedávno jsem koupil barevnou laserovou tiskárnu Konica Minolta MagiColor 2500W za poměrně výhodnou cenu. Obecně se levných věcí bojím a raději se jim vyhýbám (mám s tím své zkušenosti), takže jsem si pečlivě zkontroloval, jestli to pojede na 64bitobých sedmičkách. Když jsem ani na webu nenašel negativní zkušenosti a na webu výrobce měli ovladače, tak jsem tiskárnu vzal s tím, že teda asi bude fungovat.
Po připojení k notebooku tiskárna v pohodě tiskla, tak jsem ji zapojil do počítače, co mám pod stolem, a co je neustále zapnutý. Tam také zafungovala, ovšem ve chvíli, kdy jsem ji nasdílel po síti, z notebooku už tisknout nešlo, ve většině aplikací to hlásilo chybu “Handle is invalid”, Office tvrdošíjně psal, že “Word nemůže tisknout, tiskárna není připojena”. Tiskárna připojená i nainstalovaná byla a testovací stránka vytisknout šla, to ale bylo tak všechno.
Po několika hodinách laborování s ovladači jsem se naštval a za hodinku napsal triviální Windows službu, která sleduje jeden adresář a jakmile se tam objeví XPS soubor, tak jej vytiskne a smaže. Tuto službu jsem spustil na počítači, kde je tiskárna připojená, lokální tisk funguje.
Takže síťově nyní tisknu přes vestavěnou virtuální tiskárnu Microsoft XPS Writer, soubor uložím do síťové složky a Windows služba tento soubor vytiskne a smaže. Pokud je v názvu souboru slovo color, tak se soubor vytiskne barevně, jinak černobíle. Je to takové linuxí řešení (drbání se levou nohou za pravým uchem), ale funguje to.
Proč o tom vůbec píšu? Někomu by se to možná mohlo hodit, a tak zde zveřejňuji zdrojáky.
Navíc je to jednoduchá demonstrace toho, jak ve napsat službu, jak používat FileSystemWatcher pro sledování adresáře a jak vytisknout XPS dokument včetně nastavení režimu barevnosti.
Licence je “dělejte si s tím co chcete, support neposkytuji, na dotazy v komentářích budu odpovídat, pokud se mi bude chtít a pokud budu mít čas”.
Instalace (počítač, kde je tiskárna připojena)
1. Na počítači, kde je tiskárna připojena, vytvořte složku c:\print a nasdílejte ji uživatelům v síti.
2. Nakopírujte binárky aplikace někam (třeba do c:\Program Files\autoprint\autoprint.exe) a službu nainstalujte spuštěním tohot skriptu v příkazovém řádku:
c:\windows\microsoft.net\framework\v4.0.30319\installutil.exe “c:\Program Files\autoprint\autoprint.exe”
3. Po nainstalování spusťte services.msc, najděte službu AutoPrint Service a spusťte ji (je defaultně nastavena, že se má spouštět automaticky po startu systému, ale po nainstalování se musí spustit ručně).
4. Tiskárna, na které chcete takto tisknout, musí být nastavena jako výchozí.
Potřebuje to .NET Framework 4.0. Asi by to fungovalo i v nižším, není tam nic světoborného – kdyžtak si to předělejte.
Tisk (jiný počítač v síti)
Z aplikací tiskněte přes tiskárnu Microsoft XPS Printer, výsledný XPS soubor uložte do nasdílené síťové složky pro tisk. Pokud chcete barevně (a vaše tiskárna to umí), dejte do názvu souboru slovo color. Pokud tam nebude, tiskne se černobíle.