/// <summary> /// Exexutes the Print Job /// </summary> /// <returns></returns> private PluginExecutionResult ExecutePrintJob() { PluginExecutionResult printResult = new PluginExecutionResult(PluginResult.Passed); try { PrintQueue defaultPrintQueue; PrintQueueInfo printQueueInfo = ExecutionData.PrintQueues.GetRandom(); UpdateStatus("Print Activity: Retrieving print queue for " + printQueueInfo.QueueName); defaultPrintQueue = PrintQueueController.Connect(printQueueInfo); PrintingEngine engine = new PrintingEngine(); // Select a documents to print DocumentCollectionIterator documentIterator = new DocumentCollectionIterator(CollectionSelectorMode.ShuffledRoundRobin); Document document = documentIterator.GetNext(ExecutionData.Documents); // Download the document and log the starting information for the print job Guid jobId = SequentialGuid.NewGuid(); FileInfo localFile = ExecutionServices.FileRepository.GetFile(document); UpdateStatus($"Print Activity: Printing {localFile.Name} to {defaultPrintQueue.FullName}"); var result = engine.Print(localFile, defaultPrintQueue); UpdateStatus($"Print Activity: Finished printing {localFile.Name}"); return(printResult); } catch (Exception genericException) { printResult = new PluginExecutionResult(PluginResult.Failed, genericException.ToString()); ExecutionServices.SystemTrace.LogError(genericException.ToString()); return(printResult); } }
/// <summary> /// starts the print and cancels it before it gets to be printed /// </summary> /// <param name="docIdString"></param> /// <param name="delay"></param> private Status CancelDocument(string docIdString, int delay) { //DocumentLibraryManager manager = new DocumentLibraryManager(); Guid docId; var jobFileName = Guid.TryParse(docIdString, out docId) ? ExecutionServices.FileRepository.GetFile(_documentCollection.First(x => x.DocumentId == docId)).FullName : ExecutionServices.FileRepository.GetFile(_documentCollection.First()).FullName; PrintingEngine engine = new PrintingEngine(); var result = engine.Print(jobFileName, _defaultPrintQueue); Thread.Sleep(TimeSpan.FromSeconds(delay)); return(CancelJob(_defaultPrintQueue, result.UniqueFileName)); }