Exemple #1
0
        public Task PrintCanvasAsync(Canvas canvas, CancellationToken token = default(CancellationToken))
        {
            System.Windows.Controls.PrintDialog     printDialog      = new System.Windows.Controls.PrintDialog();
            System.Drawing.Printing.PrinterSettings printer          = new System.Drawing.Printing.PrinterSettings();
            System.Printing.LocalPrintServer        localPrintServer = new System.Printing.LocalPrintServer();

            System.Printing.PrintTicket pt = new System.Printing.PrintTicket();
            System.Printing.PrintQueue  pq = new System.Printing.PrintQueue(localPrintServer, printer.PrinterName, System.Printing.PrintSystemDesiredAccess.UsePrinter);

            System.Printing.PageMediaSize PMS      = new System.Printing.PageMediaSize(canvas.ActualWidth + 20, canvas.ActualHeight + 20);
            System.Windows.Size           pageSize = new System.Windows.Size(canvas.ActualWidth + 20, canvas.ActualHeight + 20);
            canvas.Arrange(new Rect(0, 0, pageSize.Width, pageSize.Height));
            canvas.Measure(pageSize);

            pt.PageMediaSize = PMS;
            pt.PageMediaType = System.Printing.PageMediaType.Unknown;

            pq.DefaultPrintTicket.PageMediaSize = PMS;
            pq.DefaultPrintTicket.PageMediaType = System.Printing.PageMediaType.Unknown;

            printDialog.PrintQueue  = pq;
            printDialog.PrintTicket = pt;
            //printDialog.PrintQueue.Commit();

            if (printDialog.ShowDialog() == true)
            {
                printDialog.PrintVisual(canvas, "Состояние холста");
            }
            return(Task.FromResult(0)); //Task.CompletedTask;
        }
        private void FileCmdExecuted(object sender, ExecutedRoutedEventArgs e)
        {
            RoutedCommand rc = e.Command as RoutedCommand;

            if (rc == null)
            {
                return;
            }

            switch (rc.Name)
            {
            case "Open":
                OpenFileDialog dlg = new OpenFileDialog();
                dlg.Filter = AtalaDemos.HelperMethods.CreateDialogFilter(true);

                if (dlg.ShowDialog().Value)
                {
                    this.AnnotationViewer.Open(dlg.FileName, 0, null);
                }
                break;

            case "SaveAs":
                SaveFileDialog save = new SaveFileDialog();
                save.Filter = "JPEG (*.jpg)|*.jpg|TIFF (*.tif)|*.tif|PDF (*.pdf)|*.pdf";
                if (save.ShowDialog().Value)
                {
                    if (save.FilterIndex == 1)
                    {
                        SaveImage(save.FileName, new Atalasoft.Imaging.Codec.JpegEncoder());
                    }
                    else if (save.FilterIndex == 2)
                    {
                        SaveImage(save.FileName, new Atalasoft.Imaging.Codec.TiffEncoder());
                    }
                    else
                    {
                        if (Atalasoft.Imaging.AtalaImage.Edition == Atalasoft.Imaging.LicenseEdition.Document)
                        {
                            SaveImage(save.FileName, new Atalasoft.Imaging.Codec.Pdf.PdfEncoder());
                            SavePdfAnnotations(save.FileName);
                        }
                        else
                        {
                            MessageBox.Show("A 'DotImage Document Imaging' license is required to save as PDF.", "License Required", MessageBoxButton.OK, MessageBoxImage.Information);
                        }
                    }
                }
                break;

            case "Print":
                PrintDialog pdlg = new PrintDialog();
                if (pdlg.ShowDialog().Value)
                {
                    System.Printing.PageMediaSize sz = pdlg.PrintTicket.PageMediaSize;
                    pdlg.PrintVisual(this.AnnotationViewer.CreateVisual(new Size(sz.Width.HasValue ? sz.Width.Value : 0, sz.Height.HasValue ? sz.Height.Value : 0), _printScaleMode, new Thickness(10)), "WPF Annotation Printing");
                }
                break;
            }
        }
        /// <summary>
        /// Печать.
        /// </summary>
        /// <param name="canvas"></param>
        /// <param name="description"></param>
        public void Print(Canvas canvas, string description)
        {
            if (canvas == null)
            {
                MessageBox.Show("Не заполнена область печати!");
                return;
            }
            if (canvas.Width < 100 || canvas.Height < 100)
            {
                MessageBox.Show("Область печати имеет недопустимый размер!");
                return;
            }

            //var children = canvas.Children.Cast<UIElement>().ToArray();
            var canvasPrint = GetCanvasCopy(canvas);

            // Получить PrintTicket по умолчанию с принтера.
            var localPrintServer = new System.Printing.LocalPrintServer();
            // Получение коллекции локального принтера на компьютере пользователя.
            var localPrinterCollection = localPrintServer.GetPrintQueues();

            System.Collections.IEnumerator localPrinterEnumerator = localPrinterCollection.GetEnumerator();
            if (localPrinterEnumerator.MoveNext())
            {
                // Получить PrintQueue с первого доступного принтера.
                var printQueue = (System.Printing.PrintQueue)localPrinterEnumerator.Current;
                // Получить PrintTicket по умолчанию с принтера.
                if (printQueue != null)
                {
                    var printTicket   = printQueue.DefaultPrintTicket;
                    var pageMediaSize = new System.Printing.PageMediaSize(canvasPrint.Width, canvasPrint.Height);
                    printTicket.PageMediaSize = pageMediaSize;
                    //printTicket.PageMediaType = System.Printing.PageMediaType.Unknown;
                    //var printCapabilites = printQueue.GetPrintCapabilities();
                    // Modify PrintTicket
                    //if (printCapabilites.CollationCapability.Contains(System.Printing.Collation.Collated))
                    //    printTicket.Collation = System.Printing.Collation.Collated;
                    //if (printCapabilites.DuplexingCapability.Contains(System.Printing.Duplexing.TwoSidedLongEdge))
                    //    printTicket.Duplexing = System.Printing.Duplexing.TwoSidedLongEdge;
                    //if (printCapabilites.StaplingCapability.Contains(System.Printing.Stapling.StapleDualLeft))
                    //    printTicket.Stapling = System.Printing.Stapling.StapleDualLeft;
                    var printDialog = new PrintDialog
                    {
                        //PrintQueue = printQueue,
                        PrintTicket = printTicket,
                    };
                    printDialog.PrintQueue.Commit();
                    if (printDialog.ShowDialog() == true)
                    {
                        printDialog.PrintVisual(canvasPrint, description);
                    }
                }
            }
        }
Exemple #4
0
        /// <summary>
        /// Print the controls list
        /// </summary>
        /// <param name="controls">Visuals to Print</param>
        /// <param name="paperSize">The Size of the Paper</param>
        /// <param name="printJobName">Job Description</param>
        /// <remarks>Waring!: Only print paper size of "A4"</remarks>
        ///
        public static void Print(UserControl[] controls, PaperSize paperSize = PaperSize.A4, string printJobName = "A Imprimir Trabalhos Meio Mundo")
        {
            PrintDialog printDialog = new PrintDialog();
            Paper       paper       = new Paper(paperSize);

            System.Printing.PageMediaSize a4 = new System.Printing.PageMediaSize(System.Printing.PageMediaSizeName.ISOA4);
            printDialog.PrintTicket.PageMediaSize = a4;

            if (printDialog.ShowDialog() == true)
            {
                var document = new FixedDocument();
                document.DocumentPaginator.PageSize = new Size(
                    (double)new LengthConverter().ConvertFromString("21cm"),
                    (double)new LengthConverter().ConvertFromString("29,7cm")
                    );



                for (int pages = 0; pages < controls.Length; pages++)
                {
                    Size      pageSize  = new Size(controls[pages].Width, controls[pages].Height);
                    FixedPage fixedPage = new FixedPage();
                    fixedPage.Width  = pageSize.Width;
                    fixedPage.Height = pageSize.Height;

                    fixedPage.Children.Add((UIElement)controls[pages]);
                    fixedPage.Measure(pageSize);
                    fixedPage.Arrange(new Rect(new Point(), pageSize));
                    fixedPage.UpdateLayout();

                    // Add page to document
                    var pageContent = new PageContent();
                    ((IAddChild)pageContent).AddChild(fixedPage);
                    document.Pages.Add(pageContent);
                }

                printDialog.PrintDocument(document.DocumentPaginator, printJobName);
            }
        }
        public static void PrintModelos(Modelos modelo, PagEncomendasEscolares[] pags)
        {
            PrintDialog printDialog = new PrintDialog();

            System.Printing.PageMediaSize a4 = new System.Printing.PageMediaSize(System.Printing.PageMediaSizeName.ISOA4);
            printDialog.PrintTicket.PageMediaSize = a4;

            if (printDialog.ShowDialog() == true)
            {
                var document = new FixedDocument();
                document.DocumentPaginator.PageSize = new Size(
                    (double)new LengthConverter().ConvertFromString("21cm"),
                    (double)new LengthConverter().ConvertFromString("29,7cm")
                    );
                for (int i = 0; i < pags.Length; i++)
                {
                    for (int copies = 0; copies < pags[i].Copies; copies++)
                    {
                        // Add visual, measure/arrange page.
                        UserControl control  = GetModelo(modelo, pags[i].Escola.Nome, pags[i].SelectAno);
                        Size        pageSize = new Size(control.Width, control.Height);

                        FixedPage fixedPage = new FixedPage();
                        fixedPage.Width  = pageSize.Width;
                        fixedPage.Height = pageSize.Height;

                        fixedPage.Children.Add((UIElement)control);
                        fixedPage.Measure(pageSize);
                        fixedPage.Arrange(new Rect(new Point(), pageSize));
                        fixedPage.UpdateLayout();
                        // Add page to document
                        var pageContent = new PageContent();
                        ((IAddChild)pageContent).AddChild(fixedPage);
                        document.Pages.Add(pageContent);
                    }
                }
                printDialog.PrintDocument(document.DocumentPaginator, "Mod.2021 - Encomendas Escolares");
            }
        }