/// <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); }
/// <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; } }
/// <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; } }
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; }
/// <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); }
protected LayoutControlBase() { _fullRedraw = true; _pages = new LayoutPages(); InitPrinterSettings(); InitializeComponent(); Resize += LayoutControlResize; _zoom = 1; }
/// <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); }
/// <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); }
/// <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(); }
/// <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");
/// <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");