Architecture de l’interface utilisateur du pilote V4
Important
La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d'utiliser le pilote de classe IPP en boîte de Microsoft, ainsi que les applications de support d'impression (PSA), pour personnaliser l'expérience d'impression dans Windows 10 et 11 pour le développement de périphériques d'impression.
Pour plus d’informations, veuillez consulter la section Plateforme d’impression moderne et le Guide de conception des applications de support d’impression.
Un objectif de conception de haut niveau pour l'architecture du pilote v4 était de fournir un support intégré pour l'interface utilisateur de l'application Microsoft Store.
Le paradigme d'interface utilisateur basé sur l'application qui est employé en est un exemple clair. Les applications UWP pour appareils offrent aux utilisateurs une expérience plein écran qui est prise en charge par l'interface utilisateur des applications Microsoft Store. Les applications UWP pour appareils destinées à l'impression permettent d'étendre les préférences d'impression et les notifications d'imprimante pour les imprimantes prenant en charge le pilote d'impression v4. Les applications UWP pour appareils d'impression offrent également une visibilité de l'appareil d'impression sur le nouvel écran de démarrage.
Les applications d’extension d’imprimante prennent en charge les préférences d’impression et les notifications d’imprimante lorsque les utilisateurs exécutent des applications existantes sur le bureau Windows. Bien que les interfaces utilisateur de ces applications soient très différentes, l'une étant adaptée au tactile et l'autre optimisée pour les utilisateurs de souris et de clavier, la logique métier et la connexion aux pilotes d'impression v4 peuvent toujours être similaires, quelle que soit l'interface utilisateur.
Le diagramme suivant montre une architecture de haut niveau des applications d’appareil du Microsoft Store.
Comme le montre le diagramme précédent, l'architecture basée sur le modèle/la vue/le contrôleur permet aux applications de partager du code au niveau de la couche de modèle, écrite en C#.
Extension de PrinterExtensionLibrary
Le projet PrinterExtensionLibrary fourni avec les différents échantillons peut être étendu à l'aide de nouvelles classes ou en étendant l'ensemble des classes fournies. Étant donné que Microsoft met régulièrement à jour le code de l'exemple, nous recommandons aux partenaires de minimiser le nombre de modifications de code qu'ils apportent aux fichiers source fournis. Pour les partenaires qui étendent l'ensemble des classes fournies, nous vous recommandons de marquer les classes existantes comme « partielles » et d'ajouter de nouvelles fonctions ou des remplacements dans un fichier source distinct.
Partage des binaires compilés entre les applications UWP et les applications de bureau
Le projet PrinterExtensionLibrary qui est livré dans les échantillons d'applications pour appareils et d'extensions d'imprimantes du Microsoft Store utilise le même code source, mais il peut être intéressant de construire le code pour qu'il soit portable entre les projets sans être construit séparément pour chaque projet. Pour rendre le code du projet PrinterExtensionLibrary portable, vous devez convertir le projet en une bibliothèque de classes portable. Suivez les étapes suivantes pour effectuer la conversion.
Dans Microsoft Visual Studio, cliquez sur Fichier>Nouveau>Projet, puis recherchez « Portable » dans la boîte Recherche de modèles installés.
Sélectionnez Portable Class Library Visual C#, puis donnez un nom au projet dans la zone de texte Nom et cliquez sur OK.
Copiez le code source de votre projet PrinterExtensionLibrary existant dans le nouveau projet.
Cliquez avec le bouton droit de la souris sur votre projet Portable Class Library et choisissez Unload. Ouvrez ensuite le fichier .csproj et ajoutez la section suivante à votre fichier, juste avant la dernière balise du document.
<ItemGroup> <COMReference Include="PrinterExtensionLib"> <Guid>{91CE54EE-C67C-4B46-A4FF-99416F27A8BF}</Guid> <VersionMajor>1</VersionMajor> <VersionMinor>0</VersionMinor> <Lcid>0</Lcid> <WrapperTool>tlbimp</WrapperTool> <Isolated>False</Isolated> <EmbedInteropTypes>True</EmbedInteropTypes> </COMReference> </ItemGroup>
Si des avertissements apparaissent en raison des références COM, ajoutez ce qui suit à la balise <PropertyGroup> :
<ResolveComReferenceSilent>true</ResolveComReferenceSilent>
API pour les scénarios d'interface utilisateur d'impression
Une API a été développée dans le cadre du modèle de pilote d'impression v4 pour prendre en charge les extensions d'imprimante et les applications d'appareil UWP pour l'impression. À un niveau élevé, le scénario des préférences d'impression utilise PrintTicket, PrintCapabilities et les nouvelles propriétés bags pour obtenir et stocker toutes ses informations. Les notifications d'impression sont lecteurs d'un nouveau système d'événements basé sur le schéma de communication bidirectionnelle (Bidi), et ce nouveau système utilise le protocole AsyncUI entre le client et le serveur. La nature centrée sur les données de cette API signifie qu'une application pourrait facilement prendre en charge de nombreux appareils.
Les extensions d'imprimantes doivent être conçues de manière à pouvoir se dégrader gracieusement si les données requises ne sont pas disponibles. Par exemple, si une fonctionnalité particulière de PrintCapabilities n'est pas disponible, ou si une propriété dans l'un des sacs de propriétés n'est pas disponible, cela ne doit pas empêcher le reste de l'application de fonctionner. Lors de l'accès aux sacs de propriétés, ou à des propriétés spécifiques dans un sac de propriétés, l'application doit utiliser la syntaxe try-catch afin de s'assurer que les exceptions levées ne provoquent pas un plantage de l'application. Pour plus d'informations, voir Interfaces d'extension d'imprimante.