Ejemplo n.º 1
0
        /// <inheritdoc/>
        public virtual TXpsPrinterDefinition[] GetXpsPrinterDefinitions()
        {
            var xpsPrinterDefinitions = new List <TXpsPrinterDefinition>();

            using (var localPrintServer = new LocalPrintServer())
            {
                PrintQueueCollection printQueueCollection;
                try
                {
                    printQueueCollection = localPrintServer.GetLocalAndRemotePrintQueues();
                }
                catch (PrintQueueException printQueueException)
                {
                    throw new InvalidOperationException("Failed to get print queues",
                                                        printQueueException);
                }

                using (printQueueCollection)
                {
                    foreach (PrintQueue printQueue in printQueueCollection)
                    {
                        try
                        {
                            var xpsPrinterDefinition = this.XpsPrinterDefinitionFactory.Create(printQueue);

                            xpsPrinterDefinitions.Add(xpsPrinterDefinition);
                        }
                        catch (InvalidOperationException)
                        {
                            continue;
                        }
                    }
                }
            }

            return(xpsPrinterDefinitions.ToArray());
        }