/// <summary> /// Converts the PrintJobStatus bit fields to a display string. /// </summary> internal static string ToString(PrintJobStatus printJobStatus) { StringBuilder statusString = new StringBuilder(); // Iterate through each of the PrintJobStatus bits that are set and convert it to a display string. foreach (var printJobStatusDisplayName in printJobStatusDisplayNames) { if ((printJobStatusDisplayName.Key & printJobStatus) != 0) { statusString.Append(printJobStatusDisplayName.Value); } } int stringlen = statusString.Length; if (stringlen > 0) { // Trim the trailing comma from the string. return(statusString.ToString(0, stringlen - 1)); } else { // If no print job status field was set, display "Not available". return("Not available"); } }
/// ManagementBaseObject #region ManagementBaseObject /// <summary> /// Gets print job status from the specified management object /// </summary> /// <param name="printJob">print job</param> /// <returns>print job status</returns> public static PrintJobStatus JobStatus(this ManagementBaseObject printJob) { if (printJob == null) { return(new PrintJobStatus(PrintJobStatusEnum.None, null)); } string JobStatusString; if (printJob.Properties["JobStatus"] == null) { return(new PrintJobStatus(PrintJobStatusEnum.None, null)); } if (printJob.Properties["JobStatus"].Value == null) { return(new PrintJobStatus(PrintJobStatusEnum.None, null)); } PrintJobStatus JobStatus = new PrintJobStatus(PrintJobStatusEnum.None, null); JobStatusString = printJob.Properties["JobStatus"].Value.ToString(); if (!string.IsNullOrWhiteSpace(JobStatusString)) { //LogHelper.LogDebug(JobStatusString); if (JobStatusString.Contains("Spooling")) { JobStatus.JobStatus |= PrintJobStatusEnum.Spooling; } if (JobStatusString.Contains("Printing")) { JobStatus.JobStatus |= PrintJobStatusEnum.Printing; } if (JobStatusString.Contains("Paused")) { JobStatus.JobStatus |= PrintJobStatusEnum.Paused; } if (JobStatusString.Contains("Deleting")) { JobStatus.JobStatus |= PrintJobStatusEnum.Deleting; } if (JobStatusString.Contains("Error")) { JobStatus.JobStatus |= PrintJobStatusEnum.Error; } } else { JobStatus.JobStatus = PrintJobStatusEnum.None; } JobStatus.JobStatusString = JobStatusString; return(JobStatus); }
public PrintJobStatusResponse(String printRequestId, String status) { this.printRequestId = printRequestId; try { this.status = (PrintJobStatus)Enum.Parse(typeof(PrintJobStatus), status); } catch (ArgumentException) { Console.WriteLine("{0} is not a member of the PrintJobStatus enumeration.", status); this.status = PrintJobStatus.UNKNOWN; } }
public IHttpActionResult ChangeState(string userName, string fileName, PrintJobStatus status) { try { if (userName == null || userName.Length == 0 || fileName == null || fileName.Length == 0) { return(BadRequest("Incorrect username or filename provided")); } PrintJob printJob = db.PrintJobs.Where(p => p.UserName == userName && p.FileName == fileName).FirstOrDefault(); if (printJob == null) { return(BadRequest("Incorrect username or filename provided. No corresponding printjob exists.")); } if (status == PrintJobStatus.Printed) { return(BadRequest("Invalid operation. Cannot set status to printed manually")); } if (printJob.Status == PrintJobStatus.Printed && status == PrintJobStatus.Pending) { return(BadRequest("The status cannot be changed directly from printed to pending")); } printJob.Status = status; db.SaveChanges(); return(Ok()); } catch (Exception e) { string sSource; string sLog; sSource = "Smart Printer Service"; sLog = "Application"; if (!EventLog.SourceExists(sSource)) { EventLog.CreateEventSource(sSource, sLog); } string errorMessage = e.Message + "\n\n"; while (e.InnerException != null) { errorMessage += e.InnerException + "\n"; e = e.InnerException; } EventLog.WriteEntry(sSource, errorMessage, EventLogEntryType.Error); return(InternalServerError()); } }
/// <summary> /// Converts the PrintJobStatus bit fields to a display string. /// </summary> internal static string ToString(PrintJobStatus printJobStatus) { StringBuilder statusString = new StringBuilder(); // Iterate through each of the PrintJobStatus bits that are set and convert it to a display string. foreach (var printJobStatusDisplayName in printJobStatusDisplayNames) { if ((printJobStatusDisplayName.Key & printJobStatus) != 0) { statusString.Append(printJobStatusDisplayName.Value); } } int stringlen = statusString.Length; if (stringlen > 0) { // Trim the trailing comma from the string. return statusString.ToString(0, stringlen - 1); } else { // If no print job status field was set, display "Not available". return "Not available"; } }
private void DoPrint() { try { Status = PrintJobStatus.Printing; OnStatusUpdate("Printing Started"); var printerSettings = new PrinterSettings { PrinterName = "Microsoft XPS Document Writer", PrintToFile = true, PrintFileName = string.Format("{0}\\{1}.xps", FullPrintJobFolder, SOPInstanceUID.UID) }; _printDocument = new PrintDocument { PrinterSettings = printerSettings, DocumentName = Thread.CurrentThread.Name, //PrintController = new StandardPrintController() }; _printDocument.PrinterSettings.Collate = true; _printDocument.PrinterSettings.Copies = (short)Session.NumberOfCopies; _printDocument.QueryPageSettings += OnQueryPageSettings; _printDocument.PrintPage += OnPrintPage; PreviewProc(); // I would use some kind of if statement below in a production environment and flow a variable //throught to the sever to triger it "_preview" //if (_preview) // PreviewProc(printDocument); //else // printDocument.Print(); Status = PrintJobStatus.Done; OnStatusUpdate("Printing Done"); } catch { Status = PrintJobStatus.Failure; OnStatusUpdate("Printing failed"); } finally { if (_printDocument != null) { //dispose the print document and unregister events handlers to avoid memory leaks _printDocument.QueryPageSettings -= OnQueryPageSettings; _printDocument.PrintPage -= OnPrintPage; _printDocument.Dispose(); } } }
public void Print(List<FilmBox> filmBoxList,Boolean save = false, Boolean preview = false) { _preview = preview; FilmBoxList = filmBoxList; try { Status = PrintJobStatus.Pending; OnStatusUpdate("Preparing films for printing"); var printJobDir = new System.IO.DirectoryInfo(FullPrintJobFolder); if (!printJobDir.Exists) { printJobDir.Create(); } if (save) { int filmsCount = FilmBoxFolderList.Count; for (int i = 0; i < filmBoxList.Count; i++) { var filmBox = filmBoxList[i]; var filmBoxDir = printJobDir.CreateSubdirectory(string.Format("F{0:000000}", i + 1 + filmsCount)); var file = new DicomFile(filmBox.FilmSession); file.Save(string.Format(@"{0}\FilmSession.dcm", filmBoxDir.FullName)); FilmBoxFolderList.Add(filmBoxDir.Name); filmBox.Save(filmBoxDir.FullName); } } var thread = new Thread(DoPrint) { Name = string.Format("PrintJob {0}", SOPInstanceUID.UID), IsBackground = true }; thread.Start(); } catch (Exception ex) { Error = ex; Status = PrintJobStatus.Failure; OnStatusUpdate("Print failed"); DeletePrintFolder(); } }