Sdílet prostřednictvím


Podpora ovladačů pro OpenXPS

Důležité

Moderní tisková platforma je upřednostňovaná pro komunikaci s tiskárnami ve Windows. Doporučujeme použít ovladač třídy doručené pošty IPP od Microsoftu spolu s tiskovými podpůrnými aplikacemi (PSA) k přizpůsobení prostředí tisku ve Windows 10 a 11 pro vývoj zařízení tiskárny.

Další informace najdete v průvodci návrhem aplikace podpory tisku v1 a v2.

OpenXPS je formát Open XML Paper Specification pro dokumenty a je založený na standardní specifikaci Ecma International.

Nejaktuálnější informace o této specifikaci najdete v tématu Specifikace dokumentu Open XML.

Systém Windows 8 poskytuje plnou podporu pro OpenXPS, souběžně s trvalou podporou existujícího formátu Microsoft XPS. Toto téma se zaměřuje na podporu OpenXPS prostřednictvím modelu ovladače v4. Informace o podpoře OpenXPS, která je relevantní pro vývojáře aplikací pro Windows, naleznete v tématu Podpora aplikací pro OpenXPS Tisk.

Podporované scénáře OpenXPS

Cesta k tisku systému Windows byla vyvinuta tak, aby se zajistilo, že odeslaný formát XPS odpovídá podporovanému formátu cílového ovladače tisku a podle potřeby převede formáty. Systém Windows také poskytuje rozhraní API pro dotazování ovladače tisku, aby aplikace mohla poskytovat kompatibilní prvky a vyhnout se jakémukoli dalšímu převodu v tiskovém systému.

Ovladač tisku může použít jeho manifest k označení, zda podporuje Microsoft XPS, Open XPS nebo oba formáty. Microsoft XPS nebo OpenXPS lze předložit filtrům v kanálu filtru tisku pomocí existujících rozhraní streamu a objektového modelu (OM) – ovladače nepotřebují žádná nová rozhraní pro podporu OpenXPS. Formát, který se zobrazí filtrům, závisí na formátu, který ovladač podporuje, nebo na formátu, který aplikace poskytuje.

Microsoft XPS Document Writer (MXDW) byl aktualizován tak, aby umožnil výstup ve formátu Microsoft XPS nebo OpenXPS z libovolné desktopové aplikace Windows. Podobně může prohlížeč Microsoft XPS a aplikace Čtenář ve Windows 8 otevřít oba formáty XPS. V případě potřeby můžou uživatelé tisknout z prohlížeče XPS do MXDW, aby mohli převést formáty.

Nepodporované scénáře OpenXPS

Některé starší funkce se buď nepodporují, nebo poskytují downgradované prostředí při použití s OpenXPS.

Nepodporované: Odesílání souborů OpenXPS přímo do tiskové fronty (obcházející rozhraní XPS Print API) je nepodporovaný scénář. Tímto způsobem dojde k následujícím problémům s funkcemi:

  • Soubory spool XPS odeslané přímo do zařazování budou považovány za MSXPS a zpracovány podle toho.

  • Výsledky odeslání souboru OpenXPS přímo do zařazování nejsou definovány a pravděpodobně způsobí selhání tiskové úlohy.

Poznámka Pro tento scénář se neplánuje poskytovat podporu.

Nedoporučuje se: Odeslání streamu OpenXPS z aplikace přímo do rozhraní XPS Print API není doporučenou technikou. Například neodesílejte stream OpenXPS přímo do metody StartXPSPrintJob. Pokud to uděláte, výsledkem převodu z jedné verze XPS na jinou jako datový proud může být velmi nákladný na výkon.

Místo toho byste měli použít IPrintDocumentPackageTarget k odeslání tiskové úlohy jako OM XPS, abyste se vyhnuli snížení výkonu.

Nedoporučuje se: Odeslání XPS spool souboru přímo do spooleru. Pokud to uděláte, tiskový systém nenajde požadovaná metadata přidaná rozhraními API tiskové cesty, předpokládejme, že formát je MSXPS a pokusí se ho převést na OpenXPS. Pokud byl soubor zařazování, který byl odeslán přímo do zařazování, ve formátu OpenXPS, pokus potrubí tiskového filtru převést jej na OpenXPS bude mít nedefinované výsledky. Pokud byl soubor odeslaný do spouštěče tisku ve formátu MSXPS a ovladač podporuje pouze OpenXPS, bude převod potrubím filtru tisku do OpenXPS úspěšný. Tento převod pozdní fáze ale způsobí významnou ztrátu výkonu tiskového systému.

Dopad na vývojáře aplikací

Informace o dopadu na vývojáře aplikací v souvislosti s podporou Windows 8 pro OpenXPS najdete v tématu Podpora aplikací pro tisk OpenXPS.

Dopad na vývojáře ovladačů

Níže jsou uvedené základní kroky pro povolení OpenXPS v ovladači tisku v4:

  • Manifest ovladače: Do části Vykreslení ovladače přidejte OpenXPS.

  • Manifest ovladače: Pokud je to možné, přidejte do části FileSave "oxps".

  • Filtrovací kanál: Aktualizujte filtry tisku tak, aby zpracovávaly elementy OpenXPS.

Pro daný datový proud a s příslušnými rozhraními objektů může klient použít formát OpenXPS k přenosu dat do filtrů v kanálu filtru tisku. K přenosu datového proudu používá klient rozhraní IID_IPrintReadStream a IID_IPrintWriteStream. K přenosu dat do komponenty OM používá klient rozhraní IID_IXpsDocumentProvider a IID_IXpsDocumentConsumer. Ovladače, které deklarují podporu OpenXPS, budou muset zajistit, aby zobrazené tiskové filtry mohly správně zpracovat formát OpenXPS při přijetí tohoto formátu ze správce kanálu.

Manifest ovladače: Oddíl DriverRender. Během instalace ovladače proces instalace zkontroluje část DriverRender manifestu a zjistí, zda položka XpsFormat obsahuje OpenXPS. Položka XpsFormat může obsahovat XPS (pro Microsoft XPS) i OpenXPS, aby bylo možné označit duální podporu. Pořadí, ve kterém jsou dva formáty uvedeny v položce XpsFormat, určuje preferovaný formát pro ovladač.

Tady je několik příkladů, jak aktualizovat oddíl DriverRender.

Označení podpory pouze pro OpenXPS:

[DriverRender]
XpsFormat = OpenXPS

Označuje pouze podporu MSXPS:

[DriverRender]
XpsFormat = XPS

Označuje podporu obou formátů s předvolbou OpenXPS:

[DriverRender]
XpsFormat = OpenXPS,XPS

Indikující podporu obou formátů s předvolbou MSXPS:

[DriverRender]
XpsFormat = XPS,OpenXPS

Vývojář ovladačů určuje upřednostňovaný formát ovladače tisku V4 a toto rozhodnutí vychází z funkcí, které ovladač navrhl k poskytování. Například ovladač tisku by mohl být vyvinut tak, aby poskytoval podporu JPEG XR pro obrázky s vysokou věrností.

Tiskový systém provádí různá rozhodnutí na základě informací DriverRender v manifestu. Tady je několik příkladů těchto rozhodnutí:

  • Tiskové úlohy založené na GDI odeslané na ovladače v4

    Microsoft XPS Document Converter (MXDC) přebírá vstup tiskové úlohy GDI a převede úlohu na XPS spool soubor. Formát tohoto spool souboru se bude shodovat s upřednostňovaným formátem XPS uvedeným v části DriverRender manifestu.

  • Převod formátu rozhraní XPS Print API

    Rozhraní XPS Print API se bude dotazovat na podporované formáty XPS pro cílový ovladač. Pokud ovladač podporuje oba formáty, rozhraní XPS Print API předá tiskovou úlohu XPS do spouštěče V TAKOVÉ PODOBĚ, V JAKÉ ji odeslala aplikace. Neprovedou se žádné převody.

    Pokud cílový ovladač podporuje pouze jeden nebo druhý formát, úloha se před spoolingem převede na správný formát.

    Pokud v manifestu není k dispozici žádný XpsFormat, chování bude ve výchozím nastavení pouze MSXPS. Vstup OpenXPS se převede na MSXPS. Toto chování poskytuje nejsilnější zpětnou kompatibilitu pro ovladače.

  • Soubory XPS odeslané přímo do spooleru

    Soubory XPS odeslané přímo do tiskového frontu jsou ve výchozím nastavení MSXPS. Odesílání OpenXPS přímo do spooleru není podporováno. .NET před 4.5+ serializoval vlastní MSXPS a odeslal úlohu přímo do zařazování. Toto chování bylo implementováno před zavedením rozhraní XPS Print API (xpsprint.dll).

    Aby bylo možné zajistit zpětnou kompatibilitu pro tyto aplikace .NET, správce pipeline filtru tisku zkontroluje soubor fronty tisku a určí, jestli byl přijat přímo do fronty tisku. Pokud ano, předpokládá se, že se jedná o MSXPS. Správce kanálu filtru tisku bude dotazovat formáty XPS ovladače v tomto okamžiku. Pokud ovladač podporuje MSXPS, neprovedou se žádné převody. Pokud ovladač podporuje pouze OpenXPS, správce kanálu filtru tisku provede převod souboru. Převod v této fázi úlohy je výpočetně nákladný; nicméně zajistí, aby starší aplikace .NET mohly tisknout na nové ovladače OpenXPS verze 4.

Manifest ovladače: Oddíl FileSave. Část FileSave manifestu ovladače tisku v4 poskytuje přípony dialogového okna Uložit soubor používaný portem PORTPROMPT: port. (PORTPROMPT: měl by být použit místo SOUBORU: ve Windows 8.1, protože PORTPROMPT: umožní uživatelům přístup ke všem umístěním souborů, ke kterým mají práva, i když aplikace běží v režimu s nízkými právy.) Položky v oddílu FileSave jsou přidružené k položkám v oddílu DriverRender podle indexu.

Příklad:

[FileSave]
xps=0
oxps=0

[DriverRender]
XpsFormat=XPS,OpenXPS

Tím zajistíte, že když uživatel odešle tiskové úlohy tomuto ovladači a port je nastavený na PORTPROMPT:, dialogové okno Uložit soubor zobrazí xpS a OpenXPS jako možnosti typu souboru v dialogovém okně a použije jako příponu souboru .xps nebo .oxps.

Další informace o dalších možnostech pro část Uložení souboru manifestu naleznete v části Manifest ovladače V4.

Podpora aplikací pro tisk OpenXPS

Specifikace dokumentu Open XML

manifest ovladače V4