Example #1
0
        /// <summary>
        /// Prints to XPS file.
        /// </summary>
        public bool PrintToXpsFile(LayoutPages pages, PrinterSettings printerSettings, IEnumerable <LayoutElement> elements, string filename)
        {
            _pages    = pages;
            _elements = elements;

            const string printer = "Microsoft XPS Document Writer";

            if (!PrinterSettings.InstalledPrinters.OfType <string>().Contains(printer))
            {
                MessageService.Current.Info("Failed to find \"Microsoft XPS Document Writer\" which is used for PDF conversion.");
                return(false);
            }

            printerSettings.PrinterName   = printer;
            printerSettings.PrintFileName = filename;
            printerSettings.PrintToFile   = true;

            var _printDocument = new PrintDocument {
                OriginAtMargins = true, PrinterSettings = printerSettings
            };

            _printDocument.PrintPage      += PrintNextPage;
            _printDocument.EndPrint       += (s, e) => DelegateHelper.FireEvent(this, EndPrint, e);
            _printDocument.PrintController = new StandardPrintController();

            _printDocument.Print();

            return(true);
        }
Example #2
0
        /// <summary>
        /// Schedules which pages should be rendered
        /// </summary>
        private void SchedulePages(LayoutPages pages, IEnumerable <LayoutElement> elements, PrintRange printRange, int?fromPage, int?toPage)
        {
            _pages    = pages;
            _elements = elements;

            pages.MarkUnprinted();

            switch (printRange)
            {
            case PrintRange.AllPages:
                foreach (var page in pages)
                {
                    page.Scheduled = true;
                }
                break;

            case PrintRange.Selection:
                foreach (var page in pages)
                {
                    page.Scheduled = page.Selected;
                }
                break;

            case PrintRange.SomePages:
                foreach (var page in pages)
                {
                    var index = pages.PageIndex(page);
                    page.Scheduled = (index >= fromPage && index <= toPage);
                }
                break;
            }
        }
Example #3
0
        /// <summary>
        /// Schedules which pages should be rendered depending on print dialog.
        /// </summary>
        private void SchedulePages(LayoutPages pages, PrintDialog pd)
        {
            pages.MarkUnprinted();

            switch (pd.PrinterSettings.PrintRange)
            {
            case PrintRange.AllPages:
                foreach (var page in pages)
                {
                    page.Scheduled = true;
                }
                break;

            case PrintRange.Selection:
                foreach (var page in pages)
                {
                    page.Scheduled = page.Selected;
                }
                break;

            case PrintRange.SomePages:
                foreach (var page in pages)
                {
                    var index = pages.PageIndex(page);
                    page.Scheduled = (index >= pd.PrinterSettings.FromPage && index <= pd.PrinterSettings.ToPage);
                }
                break;
            }
        }
Example #4
0
 public XmlPaper(PageSettings settings, LayoutPages pages)
 {
     PaperName  = settings.PaperSize.PaperName;
     Landscape  = settings.Landscape;
     Width      = settings.PaperSize.Width;
     Height     = settings.PaperSize.Height;
     PageCountX = pages.PageCountX;
     PageCountY = pages.PageCountY;
     Margins    = settings.Margins;
 }
Example #5
0
        /// <summary>
        /// Creates the print dialog.
        /// </summary>
        private PrintDialog CreateAndShowPrintDialog(LayoutPages pages, PrinterSettings printerSettings)
        {
            var  pd           = new PrintDialog();
            bool hasSelection = pages.SelectedCount > 0;

            pd.AllowSelection             = hasSelection;
            pd.AllowSomePages             = true;
            pd.PrinterSettings            = printerSettings;
            pd.PrinterSettings.FromPage   = 1;
            pd.PrinterSettings.ToPage     = 1;
            pd.PrinterSettings.PrintRange = hasSelection ? PrintRange.Selection : PrintRange.AllPages;

            return(pd.ShowDialog() == DialogResult.OK ? pd : null);
        }
Example #6
0
        protected LayoutControlBase()
        {
            _fullRedraw = true;

            _pages = new LayoutPages();

            InitPrinterSettings();

            InitializeComponent();

            Resize += LayoutControlResize;

            _zoom = 1;
        }
Example #7
0
        /// <summary>
        /// Prints to a file using the specified printer
        /// </summary>
        public bool PrintToFile(LayoutPages pages, IEnumerable <LayoutElement> elements, PrinterSettings printerSettings, string filename, string printerName)
        {
            SchedulePages(pages, elements, PrintRange.AllPages, null, null);

            if (!UsePrinter(printerSettings, printerName))
            {
                return(false);
            }

            printerSettings.PrintFileName = filename;
            printerSettings.PrintToFile   = true;

            Print(printerSettings);

            return(true);
        }
Example #8
0
        /// <summary>
        /// Runs printing including user printer selection
        /// </summary>
        public void Print(LayoutPages pages, PrinterSettings printerSettings, IEnumerable <LayoutElement> elements)
        {
            using (var pd = CreateAndShowPrintDialog(pages, printerSettings))
            {
                if (pd == null)
                {
                    return;
                }

                SchedulePages(
                    pages, elements,
                    pd.PrinterSettings.PrintRange, pd.PrinterSettings.FromPage, pd.PrinterSettings.ToPage);
            }

            Print(printerSettings);
        }
Example #9
0
        /// <summary>
        /// Runs printing including printer selection
        /// </summary>
        public void Print(LayoutPages pages, PrinterSettings printerSettings, IEnumerable <LayoutElement> elements)
        {
            var pd = CreateAndShowPrintDialog(pages, printerSettings);

            if (pd == null)
            {
                return;
            }

            _pages    = pages;
            _elements = elements;

            SchedulePages(pages, pd);

            var _printDocument = new PrintDocument {
                OriginAtMargins = true, PrinterSettings = printerSettings
            };

            _printDocument.PrintPage      += PrintNextPage;
            _printDocument.EndPrint       += (s, e) => DelegateHelper.FireEvent(this, EndPrint, e);
            _printDocument.PrintController = new StandardPrintController();

            _printDocument.Print();
        }
Example #10
0
 /// <summary>
 /// Prints to XPS file.
 /// </summary>
 public bool PrintToXpsFile(LayoutPages pages, PrinterSettings printerSettings, IEnumerable <LayoutElement> elements, string filename)
 => PrintToFile(pages, elements, printerSettings, filename, "Microsoft XPS Document Writer");
Example #11
0
 /// <summary>
 /// Prints to PDF file.
 /// </summary>
 public bool PrintToPdfFile(LayoutPages pages, PrinterSettings printerSettings, IEnumerable <LayoutElement> elements, string filename)
 => PrintToFile(pages, elements, printerSettings, filename, "Microsoft Print to PDF");