Die Blogs der ATE-Experten

Windows 8 – live von der Build Conference – Printing mit HTML oder XAML

15. September 2011 von Jens Peter Kleinau

“Papier ist trotz allem noch ein unverzichtbares Medium. In „Building Metro Style Apps that print“ von Jan Kay und Darren Davis werden die Kontrakte und Elemente beschrieben, die für den Prozess notwendig sind, damit die neuen Metro Apps auch fähig sind, sich in Form von Papier auszudrücken.

Windows 8 und die Metro Style Apps können auf die „Microsoft print experience“ zurückgreifen. Diese ist für alle Sprachen also auch HTML5/Javascript verfügbar. Die Erscheinungsform und auch die Eigenschaften der Print Experience lassen sich modifizieren. Dazu stehen verschiedene Möglichkeiten bereit, so kann man einstellen, welche Optionen und wie sichtbar sein sollen, wie der Inhalt gerendert werden soll, und welches die Default Einstellungen sein sollen. Optionen sind beispielsweise die Orientierung, Anzahl der Kopien, Farbe, Papiergröße usw. Kurzum alles, was wir von dem Einstellungsdialog zum Drucken auch kennen. Optionen, die vom Drucker nicht unterstützt werden, werden ausgeblendet.

Über HTML5 und Javascript stehen diese ebenso wie in C#, VB, C++ zur Verfügung, nur dass man in diesen Sprachen XAML für das Layout verwenden kann. Auch in Javascript kann man den Inhalt anpassen, um beispielsweise vollkommen sinnvoll dunkle Bildschirme nicht in tintentriefendes Papier umwandeln muss. Die Events onBeforPrint und onAfterPrint lassen zu, das der Inhalt dem Device entsprechend modifiziert werden kann. Zwar kann man dieses einfache Beispiel auch mit Ausgabegerät Definitionen im CSS abhandeln, aber spätestens bei Inhalten, die eine unterschiedliche Paginierung benötigen, wird es schwiering. CSS bietet beispielsweise page-break-inside, doch die Möglichkeiten sind eingeschränkt:

@media print
{
table {page-break-inside:avoid}
table {page-break-after:always}
}

Aber für die Umwandlung des Inhaltes eines 16:9 Formates in Landscape zu einem Din-A4 Papier in Portrait in gutem Layout benötigt es etwas mehr. Dafür helfen die Events in Javascript, mit denen der Content umgestaltet werden kann.

In den Nicht-Skriptsprachen stehen noch mehr Funktionen zur Verfügung. Mühelos kann man das Layout über XAML für den Drucker gestalten (PrintDocument). Der Eingriff in die PrintTaskAdvancedOptions erlaubt eine Manipulation des Druckvorgangs, also nicht nur der Inhalt, sondern auch der Vorgang kann angepasst werden. Es können dem Nutzer weitere Optionen angeboten werden, die speziell für die Anwendung sinnvoll sind.

Der Entwickler hat großen Einfluss auf das, was auf dem Drucker erscheint. Diesen Einfluss zum Wohl des Endkunden auszunutzen, ist nun etwas einfacher geworden.

Share it:

Weitere Einträge zu den Themen: , , ,

Einen Kommentar abgeben (Sie müssen dazu registriert und angemeldet sein!)

Bitte beachte: Die Kommentare werden moderiert. Dies kann zu Verzögerungen bei Deinem Kommentar führen. Es besteht kein Grund den Kommentar erneut abzuschicken.