Beheer toestemming
Om de beste ervaringen te bieden, gebruiken wij technologieën zoals cookies om informatie over je apparaat op te slaan en/of te raadplegen. Door in te stemmen met deze technologieën kunnen wij gegevens zoals surfgedrag of unieke ID's op deze site verwerken. Als je geen toestemming geeft of uw toestemming intrekt, kan dit een nadelige invloed hebben op bepaalde functies en mogelijkheden.
Functioneel Altijd actief
De technische opslag of toegang is strikt noodzakelijk voor het legitieme doel het gebruik mogelijk te maken van een specifieke dienst waarom de abonnee of gebruiker uitdrukkelijk heeft gevraagd, of met als enig doel de uitvoering van de transmissie van een communicatie over een elektronisch communicatienetwerk.
Voorkeuren
De technische opslag of toegang is noodzakelijk voor het legitieme doel voorkeuren op te slaan die niet door de abonnee of gebruiker zijn aangevraagd.
Statistieken
De technische opslag of toegang die uitsluitend voor statistische doeleinden wordt gebruikt. De technische opslag of toegang die uitsluitend wordt gebruikt voor anonieme statistische doeleinden. Zonder dagvaarding, vrijwillige naleving door je Internet Service Provider, of aanvullende gegevens van een derde partij, kan informatie die alleen voor dit doel wordt opgeslagen of opgehaald gewoonlijk niet worden gebruikt om je te identificeren.
Marketing
De technische opslag of toegang is nodig om gebruikersprofielen op te stellen voor het verzenden van reclame, of om de gebruiker op een site of over verschillende sites te volgen voor soortgelijke marketingdoeleinden.
Beheer opties Beheer diensten Beheer {vendor_count} leveranciers Lees meer over deze doeleinden
Bekijk voorkeuren
Privacyverklaring {title}
  • Home
  • Blog

Archieven

  • mei 2025
  • april 2025
  • oktober 2024
  • september 2024
  • september 2023
  • maart 2022
  • maart 2021
  • september 2020
  • september 2019
  • februari 2019
  • september 2018
  • september 2016
  • september 2015
Davici
  • Home
  • Blog

.NET WPF: Aansturing van de printer bin

Het printen vanuit C# .NET WPF voorziet in veel flexibiliteit. Echter het aansturen van een specifieke printerlade (bin of tray genoemd) is niet heel eenvoudig. Hiervoor moet gebruikt worden van printQueue.GetPrintCapabilitiesAsXml() methode. Uit de xml is af te leiden welke bins aanwezig zijn.

Hieronder C# code om op te vragen welke printerlades voor een specifieke printer beschikbaar zijn.

public static List<PrinterBinModel> GetInputBins(PrintQueue printQueue)
        {
            var result = new List<PrinterBinModel>();
            XmlDocument xmlDoc = null;
            using (var stream = printQueue.GetPrintCapabilitiesAsXml())
            {
                xmlDoc = new XmlDocument();
                xmlDoc.Load(stream);
            }
            var manager = new XmlNamespaceManager(xmlDoc.NameTable);
            manager.AddNamespace(xmlDoc.DocumentElement.Prefix, xmlDoc.DocumentElement.NamespaceURI);
			
            // Select all job input bins.
            var nodeList = xmlDoc.
			  SelectNodes("//psf:Feature[@name='psk:JobInputBin']/psf:Option/psf:Property",manager);
            if (nodeList != null)
            {
                foreach (XmlNode node in nodeList)
                {
                    result.Add(new PrinterBinModel
                               {
                                   Name = node.LastChild.InnerText,
                                   SystemName = node.ParentNode.Attributes[0].Value
                               });
                }
            }
            return result;
        }

Om een specifieke printerlade aan te sturen worden eerst alle bins opgevraagd. Van de bin in de lijst die we zoeken komen we dan dan de systeem xml naam te weten. Die wordt gebruikt om nieuw PrintTicket te maken met de aangepaste bin.

        private static PrintTicket ModifyPrintTicketBin(PrintQueue printQueue, PrintTicket ticket
, string binName) { var bins = GetInputBins(printQueue); var binItem = bins. FirstOrDefault(n => string.Compare(n.Name, binName, StringComparison.InvariantCultureIgnoreCase) == 0); if (binItem == null || string.IsNullOrEmpty(binItem.SystemName)) return ticket; var newValue = binItem.SystemName; const string featureName = "psk:JobInputBin"; var xmlDoc = new XmlDocument(); xmlDoc.Load(ticket.GetXmlStream()); var manager = new XmlNamespaceManager(xmlDoc.NameTable); manager.AddNamespace(xmlDoc.DocumentElement.Prefix, xmlDoc.DocumentElement.NamespaceURI); string xpath = string.Format("//psf:Feature[@name='{0}']/psf:Option", featureName); XmlNode node = xmlDoc.SelectSingleNode(xpath, manager); var found = false; if (node != null) { if (node.Attributes["name"].Value != newValue) { node.Attributes["name"].Value = newValue; found = true; } } if (!found) return ticket; PrintTicket modifiedPrintTicket = null; using (var stream = new MemoryStream()) { xmlDoc.Save(stream); stream.Position = 0; modifiedPrintTicket = new PrintTicket(stream); } return modifiedPrintTicket; }

Tags

.NET Azure C# CTO Database DevOps Docker EDI Git HA IT developement director Microservices PostgreSQL SFTP Softwareontwikkeling Visual Studio Windows

Recent Posts

  • SFTP Server with SSH, Chroot, and authorized_keys

  • Technical Debt: een strategische aanpak voor duurzame softwareontwikkeling

  • How to set timezone in a Docker Windows Container

  • How to install fonts in a Docker Windows Container

  • Why WebView2 Applications Face Issues in the Program Files Folder (And How to Fix Them)

Tags: .NET,C#

Contact

Breda, Noord-Brabant, Nederland
info@davici.nl
K.v.K. 20099979
Twitter
LinkedIn

OVERIGE

  • Algemene Voorwaarden
  • Privacybeleid
  • Cookiebeleid

Copyright © 2025 — Davici. Alle rechten voorbehouden.

Designed by WPZOOM