public void PrintSelectedDocuments()
        {
            var prnbleDocs = PrintableDocuments.Where(d => d.Selected);

            if (!prnbleDocs.Any())
            {
                return;
            }

            List <IPrintableDocument> rdlToPrinter = new List <IPrintableDocument>();
            List <IPrintableDocument> odtToPrinter = new List <IPrintableDocument>();
            List <IPrintableDocument> imgToPrinter = new List <IPrintableDocument>();

            foreach (var document in prnbleDocs)
            {
                document.Document.CopiesToPrint = document.Copies;
                switch (document.Document.PrintType)
                {
                case PrinterType.ODT:
                    document.Document.CopiesToPrint = document.Copies;
                    odtToPrinter.Add(document.Document);
                    break;

                case PrinterType.RDL:
                    for (int i = 0; i < document.Copies; i++)
                    {
                        rdlToPrinter.Add(document.Document);
                    }
                    break;

                case PrinterType.Image:
                    for (int i = 0; i < document.Copies; i++)
                    {
                        imgToPrinter.Add(document.Document);
                    }
                    break;

                default:
                    throw new NotImplementedException("Печать документа не поддерживается");
                }
            }
            var printer = new DocumentPrinter(PrinterSettings);

            printer.DocumentsPrinted += (sender, e) => DocumentsPrinted?.Invoke(sender, e);
            printer.PrintingCanceled += (sender, e) => PrintingCanceled?.Invoke(sender, e);
            if (rdlToPrinter.Count > 0)
            {
                printer.PrintAll(rdlToPrinter);
            }
            DocumentPrinters.ImagePrinter?.Print(imgToPrinter.ToArray(), printer.PrintSettings);
            DocumentPrinters.OdtDocPrinter?.Print(odtToPrinter.ToArray(), printer.PrintSettings);
            PrinterSettings = printer.PrintSettings;
        }
 public void PrintDocument(SelectablePrintDocument doc)
 {
     PrintableDocuments?.Clear();
     PrintableDocuments.Add(doc);
     PrintSelectedDocuments();
 }