Wieso benötigt List & Label zwingend einen Druckertreiber?

Hinweis: Ab List & Label in der Version 27 besteht die Möglichkeit, List & Label ohne Druckertreiber zu verwenden.

Es kann vorkommen, dass bei der ersten Verwendung von List & Label in der eigenen Anwendung eine Meldung angezeigt wird, dass kein Drucktreiber zur Verfügung steht. Oder aber in den Log-Ausgaben von Debwin wird der Fehler-Code NO_PRINTER (-11) ausgegeben:

-11 (Im System ist kein Drucker installiert oder der angegebene Drucker existiert nicht. Bitte installieren Sie einen Drucker(treiber).)

Beide Symptome weisen darauf hin, dass List & Label eben keinen Druckertreiber verwenden kann. Aber wieso braucht List & Label denn überhaupt einen Druckertreiber? Und oft stellt man sich auch die Frage, wieso ein Druckertreiber benötigt wird, wenn man doch nur das Layout im Designer bearbeiten oder gar nur einen PDF-Export durchführen möchte.

Der Grund ist, dass List & Label ausschließlich mit dem Windows-GDI (Graphics Device Interface) zusammenarbeitet, um mit Hilfe eines sogenannten Geräte-Kontexts basierend auf Papierformaten (hier Drucker(-treiber)) Zeichnungsfunktionen für geometrische Objekte wie bspw. Kreise, Linien etc., Verwendung von Farbpaletten und Ausgaben von Grafiken (meist Bitmap) und vieles mehr durchführen zu können.

Daher benötigt List & Label nicht nur für das Bearbeiten eines Layouts einen Druckertreiber, sondern auch für sämtliche Export-Formate und kann daher ohne Zugriff auf einen Drucker(-treiber) nicht verwendet werden. Hierbei spielt es jedoch keine signifikante Rolle, ob der Drucker auch tatsächlich physikalisch installiert ist. Es ist ausreichend, wenn der Treiber auf dem System eingerichtet ist und vom Windows-Benutzer verwendet werden kann - bspw. durch ausreichende Zugriffsberechtigung oder einer gültigen Netzwerkfreigabe. Auch der Microsoft XPS Document Writer (ab .NET Framework 3.5 auf allen Systemen automatisch installiert) eignet sich.

Hierbei gilt es jedoch eine Besonderheit in Bezug auf Server-Applikationen, Dienste oder Web-Anwendungen zu berücksichtigen:
Auf dem Server, auf dem die Funktionen von List & Label ausgeführt werden, muss zumindest ein Druckertreiber installiert sein, damit der Druck/Export erfolgreich durchgeführt werden kann. Dabei ist es jedoch wichtig, dass der Prozess in dem List & Label ausgeführt wird, oft in einem anderen Benutzer-Kontext ausgeführt wird und möglicherweise keinen Zugriff auf den im System installierten Druckertreiber hat.

Bei einer .NET Web-Anwendung bspw. ist das der Kontext des IIS (Internet Information Services). Dort muss der verwendete ApplicationPool so konfiguriert sein, dass entsprechend Zugriff auf den installierten Druckertreiber besteht. Neuere IIS-Versionen verwenden hierfür als Standard aber die Identity ‘ApplicationPoolIdentity’. Hierbei handelt es sich um einen sogenannten virtuellen Account, der unter Umständen keinen Zugriff auf die System-Ressourcen wie bspw. den Druckertreiber hat. Kann kein Drucker für das ApplicationPool-Konto freigegeben werden, muss die eingestellte Identity für den verwendeten ApplicationPool neu konfiguriert werden - bspw. in ‘NetworkService’ oder ein normales Benutzerkonto.