/// <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()); }