public void Print_WPF_Preview(FrameworkElement wpf_Element)
        {
            string sPrintFilename = "report.xps";

            if (File.Exists(sPrintFilename) == true)
            {
                File.Delete(sPrintFilename);
            }

            XpsDocument doc = new XpsDocument(sPrintFilename, FileAccess.ReadWrite);

            XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);

            SerializerWriterCollator outputDocument = writer.CreateVisualsCollator();

            outputDocument.BeginBatchWrite();
            outputDocument.Write(wpf_Element);
            outputDocument.EndBatchWrite();

            FixedDocumentSequence preview = doc.GetFixedDocumentSequence();

            //prozor koji trea da otvorimo
            //trea ga prikazati

            PrintWindow printWindow = new PrintWindow(preview);

            printWindow.Show();

            doc.Close();
            writer         = null;
            outputDocument = null;
            doc            = null;
        }
Esempio n. 2
0
        public static void PrintWpfPreview(FrameworkElement element)
        {
            string printFileName = "print_preview.xps";

            if (File.Exists(printFileName))
            {
                File.Delete(printFileName);
            }

            //System.Printing.PrintDocumentImageableArea ia = null;
            using XpsDocument doc = new XpsDocument(printFileName, FileAccess.ReadWrite);

            XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);

            SerializerWriterCollator outputDocument = writer.CreateVisualsCollator();

            outputDocument.BeginBatchWrite();
            outputDocument.Write(element);
            outputDocument.EndBatchWrite();

            FixedDocumentSequence preview   = doc.GetFixedDocumentSequence();
            DocumentPaginator     paginator = preview.DocumentPaginator;

            preview.DocumentPaginator.PageSize = new Size(200, 100);
            var         a           = preview.DocumentPaginator.PageCount;
            PrintWindow printWindow = new PrintWindow(preview);

            printWindow.Show();

            doc.Close();
            writer         = null;
            outputDocument = null;
        }
Esempio n. 3
0
        private static void printKundeinfo(SerializerWriterCollator batchPrinter, FrameworkElement kundeinfoKontroll, Size outputSize, double leftMargin, double topMargin)
        {
            Size elementSize = new Size(outputSize.Width, outputSize.Height);
            Rect rec         = new Rect(new Point(leftMargin, topMargin), elementSize);

            kundeinfoKontroll.Arrange(rec);
            batchPrinter.Write(kundeinfoKontroll);
        }
Esempio n. 4
0
        private static void printKundeinfoToPdf(SerializerWriterCollator batchPrinter, FrameworkElement kundeinfoKontroll, Size outputSize, double leftMargin, double topMargin)
        {
            Size elementSize = new Size(outputSize.Width + leftMargin + leftMargin, outputSize.Height + topMargin + topMargin);
            Rect rec         = new Rect(new Point(leftMargin, topMargin), elementSize);

            kundeinfoKontroll.ClipToBounds = true;
            kundeinfoKontroll.Clip         = new RectangleGeometry(new Rect(outputSize));
            kundeinfoKontroll.Measure(elementSize);
            kundeinfoKontroll.Arrange(rec);
            batchPrinter.Write(kundeinfoKontroll);
        }
Esempio n. 5
0
        /// <summary>
        /// Create a SerializerWriterCollator to gobble up multiple Visuals
        /// </summary>
        public override SerializerWriterCollator CreateVisualsCollator(PrintTicket documentSequencePT, PrintTicket documentPT)
        {
            CheckDisposed();

            SerializerWriterCollator collator = _xpsDocumentWriter.CreateVisualsCollator(documentSequencePT, documentPT);

            // swc will close these
            _xpsDocument       = null;
            _xpsDocumentWriter = null;
            _package           = null;

            return(collator);
        }
Esempio n. 6
0
        /// <summary>
        /// Create a SerializerWriterCollator to gobble up multiple Visuals
        /// </summary>
        public override SerializerWriterCollator CreateVisualsCollator()
        {
            CheckDisposed();

            SerializerWriterCollator collator = _xpsDocumentWriter.CreateVisualsCollator();

            // swc will close these
            _xpsDocument       = null;
            _xpsDocumentWriter = null;
            _package           = null;

            return(collator);
        }
Esempio n. 7
0
        private static void Print(FrameworkElement kundeInfo, ScrollViewer scrollViewer)
        {
            if (kundeInfo == null && scrollViewer == null)
            {
                return;
            }

            PrintDocumentImageableArea area      = null;
            PageRangeSelection         selection = PageRangeSelection.AllPages;
            PageRange         range  = new PageRange();
            XpsDocumentWriter xpsdw1 = PrintQueue.CreateXpsDocumentWriter("Corinor prisforslag", ref area, ref selection, ref range);

            if (xpsdw1 == null)
            {
                return;
            }

            //TODO: DEBUG
            //if (File.Exists("D:\\test.xps")) File.Delete("D:\\test.xps");
            //XpsDocument _xpsDocument = new XpsDocument("D:\\test.xps", FileAccess.ReadWrite);
            //XpsDocumentWriter xpsdw = XpsDocument.CreateXpsDocumentWriter(_xpsDocument);


            Thickness Margins = new Thickness(96);

            double leftMargin   = Margins.Left - area.OriginWidth;
            double topMargin    = Margins.Top - area.OriginHeight;
            double rightMargin  = Margins.Right - (area.MediaSizeWidth - area.ExtentWidth - area.OriginWidth);
            double bottomMargin = Margins.Bottom - (area.MediaSizeHeight - area.ExtentHeight - area.OriginHeight);
            Size   outputSize   = new Size(
                area.MediaSizeWidth - leftMargin - rightMargin,
                area.MediaSizeHeight - topMargin - bottomMargin);

            SerializerWriterCollator batchPrinter = xpsdw1.CreateVisualsCollator();

            batchPrinter.BeginBatchWrite();

            if (kundeInfo != null)
            {
                printKundeinfo(batchPrinter, kundeInfo, outputSize, leftMargin, topMargin);
            }
            if (scrollViewer != null && scrollViewer.Content != null)
            {
                printScrollViewer(batchPrinter, scrollViewer, outputSize, leftMargin, topMargin);
            }

            batchPrinter.EndBatchWrite();

            //TODO: Debug
            //_xpsDocument.Close();
        }
Esempio n. 8
0
        private static void printScrollViewer(SerializerWriterCollator batchPrinter, ScrollViewer scrollViewer, Size outputSize, double leftMargin, double topMargin)//, PrintDocumentImageableArea area)
        {
            //if (scrollViewer == null || scrollViewer.Content == null || !(scrollViewer.Content is FrameworkElement)) return;
            FrameworkElement element = scrollViewer.Content as FrameworkElement;

            //Husker properties
            bool      originalClipToBounds = element.ClipToBounds;
            Geometry  originalClip         = element.Clip;
            Thickness originalMargin       = element.Margin;
            Size      elementSize          = new Size(outputSize.Width, element.ActualHeight);
            Size      orginalSize          = new Size(element.ActualWidth, element.ActualHeight);

            element.ClipToBounds = true;
            element.Clip         = new RectangleGeometry(new Rect(outputSize));
            element.Measure(elementSize);
            element.Arrange(new Rect(new Point(leftMargin, topMargin), elementSize));

            batchPrinter.Write(element);
            double currHeight = outputSize.Height;

            while (currHeight < element.ActualHeight)
            {
                elementSize.Height -= outputSize.Height;
                element.Margin      = new Thickness(0, -currHeight, 0, 0);
                element.Clip        = new RectangleGeometry(new Rect(new Point(0, currHeight), outputSize));
                element.Measure(elementSize);
                element.Arrange(new Rect(new Point(leftMargin, topMargin), elementSize));
                batchPrinter.Write(element);
                currHeight += outputSize.Height;
            }

            //Rydder opp
            element.ClipToBounds = originalClipToBounds;
            element.Clip         = originalClip;
            element.Margin       = originalMargin;
            element.Arrange(new Rect(new Point(0, 0), orginalSize));
        }
Esempio n. 9
0
        public static void Print_WPF_Preview(FrameworkElement wpf_Element)
        {
            string sPrintFilename = "print_preview.xps";

            if (File.Exists(sPrintFilename) == true)
            {
                File.Delete(sPrintFilename);
            }


            // - <create xps document> -

            XpsDocument       doc    = new XpsDocument(sPrintFilename, FileAccess.ReadWrite);
            XpsDocumentWriter writer = XpsDocument.CreateXpsDocumentWriter(doc);

            SerializerWriterCollator preview_Document = writer.CreateVisualsCollator();

            preview_Document.BeginBatchWrite();
            preview_Document.Write(wpf_Element);  // * this or wpf xaml control
            preview_Document.EndBatchWrite();

            // - </ create xps document> -
            FixedDocumentSequence preview = doc.GetFixedDocumentSequence();

            // - </Open> -

            // - </Open preview window> -

            var window = new Window();

            window.Content = new DocumentViewer {
                Document = preview
            };
            window.ShowDialog();
            doc.Close();
        }
Esempio n. 10
0
        private static string PrintToPDF(FrameworkElement kundeInfo, ScrollViewer scrollViewer, string lagreTilUrl, bool liggende)
        {
            if (kundeInfo == null && scrollViewer == null)
            {
                return("");
            }

            string prisforslagXPSuri = Path.Combine(Hjelpeklasser.GlobaleUrier.standardMappe2(), "Prisforslag.xps");
            string prisforslagPDFuri = Path.Combine(Hjelpeklasser.GlobaleUrier.standardMappe2(), "Prisforslag.pdf");

            if (!string.IsNullOrEmpty(lagreTilUrl))
            {
                prisforslagPDFuri = lagreTilUrl;
            }

            if (File.Exists(prisforslagXPSuri))
            {
                File.Delete(prisforslagXPSuri);
            }
            XpsDocument       _xpsDocument = new XpsDocument(prisforslagXPSuri, FileAccess.ReadWrite);
            XpsDocumentWriter xpsdw        = XpsDocument.CreateXpsDocumentWriter(_xpsDocument);

            Size docSize;

            if (liggende)
            {
                docSize = new Size(1122.24, 793.59874015748028);
            }
            else
            {
                docSize = new Size(793.59874015748028, 1122.24);
            }

            double leftMargin   = 84.5; //Margins.Left - area.OriginWidth;
            double topMargin    = 84.5; ///Margins.Top - area.OriginHeight;
            double rightMargin  = 84.5; //Margins.Right - (docSize.Width - area.ExtentWidth - area.OriginWidth);
            double bottomMargin = 84.5; //Margins.Bottom - (docSize.Height - area.ExtentHeight - area.OriginHeight);
            Size   outputSize   = new Size(
                docSize.Width - leftMargin - rightMargin,
                docSize.Height - topMargin - bottomMargin);


            SerializerWriterCollator batchPrinter = xpsdw.CreateVisualsCollator();

            batchPrinter.BeginBatchWrite();

            if (kundeInfo != null)
            {
                printKundeinfoToPdf(batchPrinter, kundeInfo, outputSize, leftMargin, topMargin);
            }
            if (scrollViewer != null && scrollViewer.Content != null)
            {
                printScrollViewer(batchPrinter, scrollViewer, outputSize, leftMargin, topMargin);
            }

            batchPrinter.EndBatchWrite();

            _xpsDocument.Close();
            PdfSharp.Xps.XpsConverter.Convert(prisforslagXPSuri, prisforslagPDFuri, 0);



            return(prisforslagPDFuri);
        }