private PrintTicket GetPrintTicketFromPrinter(Report_Template printerSettings) { PrintQueue printQueue = null; LocalPrintServer localPrintServer = new LocalPrintServer(); // Retrieving collection of local printer on user machine PrintQueueCollection localPrinterCollection = localPrintServer.GetPrintQueues(); System.Collections.IEnumerator localPrinterEnumerator = localPrinterCollection.GetEnumerator(); if (localPrinterEnumerator.MoveNext()) { // Get PrintQueue from first available printer printQueue = (PrintQueue)localPrinterEnumerator.Current; MessageBox.Show(printQueue.Name); } else { // No printer exist, return null PrintTicket return(null); } // Get default PrintTicket from printer PrintTicket printTicket = printQueue.DefaultPrintTicket; PrintCapabilities printCapabilites = printQueue.GetPrintCapabilities(); // Modify PrintTicket if (printCapabilites.CollationCapability.Contains(Collation.Collated)) { printTicket.Collation = Collation.Collated; } if (printCapabilites.DuplexingCapability.Contains( Duplexing.TwoSidedLongEdge)) { printTicket.Duplexing = Duplexing.TwoSidedLongEdge; } if (printCapabilites.StaplingCapability.Contains(Stapling.StapleDualLeft)) { printTicket.Stapling = Stapling.StapleDualLeft; } printTicket.PageMediaSize = new PageMediaSize(PageMediaSizeName.JISB4); printTicket.PageOrientation = PageOrientation.Unknown; printTicket.Duplexing = Duplexing.TwoSidedShortEdge; printTicket.PageResolution = new PageResolution(PageQualitativeResolution.Draft); return(printTicket); }// end:GetPrintTicketFromPrinter()
public Report_Template GetPrinterSettings(string metaData, Model_PDFFinder context) { Report_Template report = context.Report_Template.Where(x => x.report_name == metaData).FirstOrDefault(); if (report != null) { return(report); } Group_Template group = context.Group_Template.Where(x => metaData.Contains(x.group_name)).FirstOrDefault(); if (group == null) { return(null); } List <Report_Template> reports = context.Report_Template.Where(x => x.report_name.Contains(group.group_name)).ToList(); string printerName, paperFormat; bool? reportDuplex; if (reports.Count != 0) { Report_Template defaultReport = reports.First(); printerName = reports.All(x => x.printer_name == defaultReport.printer_name) ? defaultReport.printer_name : group.printer_name; reportDuplex = reports.All(x => x.duplex == defaultReport.duplex) ? defaultReport.duplex : group.duplex; paperFormat = reports.All(x => x.paper_format == defaultReport.paper_format) ? defaultReport.paper_format : group.paper_format; } else { printerName = group.printer_name; reportDuplex = group.duplex; paperFormat = group.paper_format; } Report_Template printerSettings = new Report_Template() { report_name = metaData, printer_name = printerName, duplex = reportDuplex, paper_format = paperFormat }; return(printerSettings); }
/// <summary> /// Простой пример работы функции /// </summary> /// <param name="fileName"></param> public void Execute(string fileName) { string title = Parser.Parse(fileName); FileAssociationManager associationManager = new FileAssociationManager(); //Временная заглушка (названия процесса) string processName = associationManager.GetAssociatedApplication(".pdf").Path; using (var context = new Model_PDFFinder()) { Report_Template printerSettings = Analizer.GetPrinterSettings(title, context); if (printerSettings != null) { Printer.Print(fileName, printerSettings); Logger.LogOpenForPrinting(title); } else { Viewer.View(fileName, processName); Logger.LogOpenForView(); } } }
public void Print(string fileName, Report_Template printerSettings) { PdfDocument doc = new PdfDocument(); doc.LoadFromFile(fileName); PrintDialog dialogPrint = new PrintDialog(); dialogPrint.PrintQueue = new PrintQueue(new PrintServer(), printerSettings.printer_name); dialogPrint.PrintTicket = GetPrintTicketFromPrinter(printerSettings); //тут трабла - навіть якщо правильно вибраний принтер - не завантажує налаштування if (dialogPrint.ShowDialog() == true) { //dialogPrint.PrintDocument(fixedDocument.DocumentPaginator, "Digital Scale"); /*dialogPrint.PrintTicket.PageMediaSize = new PageMediaSize(PageMediaSizeName.);*/ PrintDocument printDoc = doc.PrintDocument; printDoc.Print(); } }