Exemple #1
0
        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()
Exemple #2
0
        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);
        }
Exemple #3
0
        /// <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();
                }
            }
        }
Exemple #4
0
        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();
            }
        }