Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
Het moderne afdrukplatform is de voorkeursmiddel van Windows om te communiceren met printers. We raden aan om de IPP inbox class driver van Microsoft te gebruiken, samen met Print Support Apps (PSA), om de afdrukervaring in Windows 10 en 11 aan te passen voor de ontwikkeling van printerapparaten.
Zie de ontwerphandleiding voor Print Support App v1 en v2 voor meer informatie.
OpenXPS is de Open XML Paper Specification-indeling voor documenten en is gebaseerd op de Ecma International-standaardspecificatie.
Zie Open XML Paper Specification voor de meest recente informatie over deze specificatie.
Windows 8 biedt volledige ondersteuning voor OpenXPS, naast continue ondersteuning voor de bestaande Microsoft XPS-indeling. Dit onderwerp is gericht op ondersteuning voor OpenXPS via het v4-stuurprogrammamodel. Voor OpenXPS-ondersteuning die relevant is voor Ontwikkelaars van Windows-toepassingen, raadpleegt u App-ondersteuning voor OpenXPS-afdrukken.
Ondersteunde OpenXPS-scenario's
Het Windows-afdrukpad is ontwikkeld om ervoor te zorgen dat de ingediende XPS-indeling overeenkomt met een ondersteunde indeling van het beoogde afdrukstuurprogramma en indelingen indien nodig converteert. Windows biedt ook API's voor het uitvoeren van query's op het afdrukstuurprogramma, zodat de toepassing compatibele elementen kan bieden en geen extra conversie binnen het afdruksysteem kan uitvoeren.
Een afdrukstuurprogramma kan het manifest gebruiken om aan te geven of het ondersteuning biedt voor Microsoft XPS, Open XPS of beide indelingen. Microsoft XPS of OpenXPS kunnen worden gepresenteerd aan de filters in de afdrukfilterpijplijn, met behulp van de bestaande om-interfaces (stream- en objectmodel): er zijn geen nieuwe interfaces vereist voor stuurprogramma's ter ondersteuning van OpenXPS. De indeling die aan de filters wordt gepresenteerd, is afhankelijk van de indeling die wordt ondersteund door het stuurprogramma of de indeling die wordt geleverd door de toepassing.
De Microsoft XPS Document Writer (MXDW) is bijgewerkt zodat MXDW microsoft XPS of OpenXPS kan uitvoeren vanuit een Windows-bureaubladtoepassing. Op dezelfde manier kunnen de Microsoft XPS Viewer en de app Lezer in Windows 8 beide XPS-indelingen openen. Indien nodig kunnen gebruikers afdrukken vanuit de XPS Viewer naar MXDW om indelingen te converteren.
Niet ondersteunde OpenXPS-scenario's
Sommige verouderde functionaliteit wordt niet ondersteund of biedt een downgrade-ervaring wanneer deze wordt gebruikt met OpenXPS.
Niet ondersteund: Het rechtstreeks verzenden van OpenXPS-bestanden naar de spooler (het omzeilen van de XPS Print-API) is een niet-ondersteund scenario. Als u dit doet, worden de volgende functionaliteitsproblemen veroorzaakt:
XPS-spoolbestanden die rechtstreeks naar de spooler worden verzonden, worden behandeld als MSXPS en worden dienovereenkomstig afgehandeld.
De resultaten van het rechtstreeks verzenden van een OpenXPS-bestand naar de spooler zijn niet gedefinieerd en veroorzaken waarschijnlijk dat de afdruktaak mislukt.
Notitie Er zijn geen plannen om ondersteuning te bieden voor dit scenario.
Niet aanbevolen: het rechtstreeks verzenden van een OpenXPS-stream vanuit een toepassing naar de XPS Print-API is geen aanbevolen techniek. Verzend bijvoorbeeld geen OpenXPS-stream rechtstreeks naar de methode StartXPSPrintJob. Als u dit doet, kan de conversie van de ene variant van XPS naar een andere in de vorm van een stream zeer belastend zijn voor de prestaties.
In plaats daarvan moet u IPrintDocumentPackageTarget gebruiken om de afdruktaak in te dienen als XPS OM om prestatievermindering te voorkomen.
Niet aanbevolen: een XPS-spoolbestand rechtstreeks naar de spooler verzenden. Als u dit doet, vindt het afdruksysteem niet de vereiste metagegevens die zijn toegevoegd door de API's van het afdrukpad, wordt ervan uitgegaan dat de indeling MSXPS is en probeert het te converteren naar OpenXPS. Als het spoolbestand dat rechtstreeks naar de spooler is verzonden een bestand met openXPS-indeling was, heeft de poging van de afdrukfilterpijplijn om het te converteren naar OpenXPS niet-gedefinieerde resultaten. Als het bestand dat naar de spooler is verzonden een bestand met MSXPS-indeling is en het stuurprogramma een alleen OpenXPS-stuurprogramma is, is de conversie door de afdrukfilterpijplijn naar OpenXPS geslaagd. Maar deze late faseconversie leidt tot een aanzienlijk verlies in de prestaties van het afdruksysteem.
Impact op app-ontwikkelaars
Zie App-ondersteuning voor OpenXPS-afdrukken voor informatie over de impact op app-ontwikkelaars met betrekking tot de Windows 8-ondersteuning voor OpenXPS.
Impact op ontwikkelaars van stuurprogramma's
Hier volgen de basisstappen voor het inschakelen van OpenXPS in een v4-afdrukstuurprogramma:
Stuurprogrammamanifest: Voeg OpenXPS toe aan de sectie Driver Render.
Stuurprogrammamanifest: Voeg 'oxps' toe aan de FileSave-sectie, indien van toepassing.
Filterpijplijn: Afdrukfilters bijwerken om OpenXPS-elementen te verwerken.
Voor een bepaalde stream en met de juiste objectinterfaces kan een client de OpenXPS-indeling gebruiken om gegevens over te dragen naar de filters in de afdrukfilterpijplijn. Voor het overdragen van een gegevensstroom gebruikt de client de interfaces IID_IPrintReadStream en IID_IPrintWriteStream. De client gebruikt de IID_IXpsDocumentProvider- en IID_IXpsDocumentConsumer-interfaces om gegevens over te dragen naar een OM-onderdeel. Stuurprogramma's die ondersteuning voor OpenXPS declareren, moeten ervoor zorgen dat de opgegeven afdrukfilters de OpenXPS-indeling correct kunnen verwerken wanneer deze indeling wordt ontvangen van de pijplijnbeheerder.
Stuurprogrammamanifest: sectie DriverRender. Tijdens de installatie van het stuurprogramma controleert het installatieproces de sectie DriverRender van het manifest om te zien of de Vermelding XpsFormat OpenXPS bevat. De vermelding XpsFormat kan zowel XPS (voor Microsoft XPS) als OpenXPS bevatten om dubbele ondersteuning aan te geven. De volgorde waarin de twee indelingen worden vermeld in de vermelding XpsFormat bepaalt de voorkeursindeling voor het stuurprogramma.
Hier volgen enkele voorbeelden van het bijwerken van de sectie DriverRender.
Alleen ondersteuning voor OpenXPS aangegeven:
[DriverRender]
XpsFormat = OpenXPS
Alleen ondersteuning voor MSXPS aangegeven:
[DriverRender]
XpsFormat = XPS
Ondersteuning van beide documentformaten, met een voorkeur voor OpenXPS.
[DriverRender]
XpsFormat = OpenXPS,XPS
Aangeven van ondersteuning voor beide indelingen, met een voorkeur voor MSXPS:
[DriverRender]
XpsFormat = XPS,OpenXPS
De ontwikkelaar van het stuurprogramma bepaalt de voorkeursindeling voor hun V4-afdrukstuurprogramma. Deze beslissing is gebaseerd op de functionaliteit die het stuurprogramma is ontworpen om te leveren. Een afdrukstuurprogramma kan bijvoorbeeld worden ontwikkeld om JPEG XR-ondersteuning te bieden voor afbeeldingen met hoge kwaliteit.
Het afdruksysteem neemt verschillende beslissingen op basis van de DriverRender-informatie in het manifest. Hier volgen enkele voorbeelden van deze beslissingen:
Op GDI gebaseerde afdruktaken die zijn verzonden naar v4-stuurprogramma's
De Microsoft XPS Document Converter (MXDC) neemt GDI-afdruktaakinvoer en converteert de taak naar een XPS-spoolbestand. De indeling van dat spool-bestand komt overeen met de gewenste XPS-indeling die wordt aangeduid in de sectie DriverRender van het manifest.
Conversie van XPS Print API-indeling
De XPS Print-API voert een query uit op ondersteunde XPS-indelingen voor het doelstuurprogramma. Als het stuurprogramma beide indelingen ondersteunt, geeft de XPS Print-API de XPS-afdruktaak door aan de spooler zoals ingediend door de toepassing. Er wordt geen conversie uitgevoerd.
Als het doelstuurprogramma slechts een of meer indelingen ondersteunt, wordt de taak geconverteerd naar de juiste indeling voordat de spool wordt uitgevoerd.
Als er geen XpsFormat is opgegeven in het manifest, zal het gedrag standaard alleen MSXPS zijn. OpenXPS-invoer wordt geconverteerd naar MSXPS. Dit gedrag biedt de sterkste achterwaartse compatibiliteit voor stuurprogramma's.
XPS-bestanden die rechtstreeks naar spooler worden verzonden
XPS-bestanden die rechtstreeks naar de spooler worden verzonden, zijn standaard MSXPS. Het verzenden van OpenXPS rechtstreeks naar de spooler wordt niet ondersteund. .NET vóór versie 4.5 serialiseerde zijn eigen MSXPS en verzond de taak rechtstreeks naar de spooler. Dit gedrag is geïmplementeerd vóór de introductie van de XPS Print-API (xpsprint.dll).
Om achterwaartse compatibiliteit voor deze .NET-applicaties te verzekeren, controleert de printfilterpipelinebeheerder het spoolbestand om vast te stellen of het direct aan de spooledienst is doorgegeven. Als dat het zo is, wordt ervan uitgegaan dat het MSXPS is. Het beheer van de afdrukfilterpijplijn zal op dat moment de XPS-indelingen van het stuurprogramma opvragen. Als het stuurprogramma MSXPS ondersteunt, wordt er geen conversie uitgevoerd. Als het stuurprogramma alleen OpenXPS ondersteunt, voert het afdrukfilterpijplijnbeheer een conversie van het bestand uit. Conversie op dit moment in de taak is prestatie-intensief; het zorgt er echter voor dat verouderde .NET-applicaties kunnen afdrukken naar nieuwe v4 OpenXPS-stuurprogramma's.
Stuurprogrammamanifest: sectie FileSave. De sectie FileSave van het manifest van het v4-afdrukstuurprogramma bevat extensies voor het dialoogvenster Bestand opslaan dat wordt gebruikt door portPROMPT: port. (PORTPROMPT: moet worden gebruikt in plaats van BESTAND: in Windows 8.1, omdat PORTPROMPT: gebruikers toegang geven tot alle bestandslocaties waartoe ze rechten hebben, zelfs wanneer de toepassing wordt uitgevoerd in de modus met lage rechten.) De vermeldingen in de sectie FileSave zijn gekoppeld aan de vermeldingen in de sectie DriverRender per index.
Voorbeeld:
[FileSave]
xps=0
oxps=0
[DriverRender]
XpsFormat=XPS,OpenXPS
Dit zorgt ervoor dat wanneer de gebruiker een afdruktaak naar dit stuurprogramma verzendt en de poort is ingesteld op PORTPROMPT:, het dialoogvenster Bestand opslaan XPS en OpenXPS weergeeft als bestandstypeopties in het dialoogvenster, en .xps of .oxps toe te passen als de bestandsextensie.
Zie V4-stuurprogrammamanifest voor meer informatie over andere opties voor de sectie Bestand opslaan van het manifest.