private static FixedDocument CreateDocument(Size pageSize, PrintProcessorCollection p)
        {
            if (p != null)
            {
                for (int index = 0; index < p.Count; index++)
                {
                    var printProcessor = p[index];

                    if (index > 0 && p.IndividualPageOrientation)
                    {
                        if ((pageSize.Width > pageSize.Height && printProcessor.PageOrientation == PageOrientation.Portrait) ||
                            (pageSize.Height > pageSize.Width && printProcessor.PageOrientation == PageOrientation.Landscape))
                        {
                            pageSize = new Size(pageSize.Height, pageSize.Width);
                        }
                    }

                    printProcessor.SetPrintOnAttributes();
                    printProcessor.Prepare(pageSize);
                }
            }

            var internalPrintProcessor = new InternalPrintProcessor();

            return(internalPrintProcessor.CreateFixedDocument(p));
        }
        internal static void PreviewDocument(PrintProcessorCollection ppc)
        {
            var pd = ppc.First().PrintDialog;

            var fixedDocument = CreateDocument(new Size(pd.PrintableAreaWidth, pd.PrintableAreaHeight), ppc);

            XpsHelper.ShowFixedDocument(fixedDocument, ppc.FileName);
        }
        public static bool PrintDocument(PrintDialog printDialog, PrintProcessorCollection pp)
        {
            var pageSize = new Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);

            var fixedDocument = CreateDocument(pageSize, pp);

            printDialog.PrintDocument(fixedDocument.DocumentPaginator, ReplaceInvalidCharsFromFilename(pp.FileName));

            return(true);
        }
        internal static void PreviewDocument(PrintProcessorCollection ppc, IWindowProvider windowsProvider = null)
        {
            if (!ppc.Any())
            {
                return;
            }
            var pd = ppc.First().PrintDialog;

            var fixedDocument = CreateDocument(new Size(pd.PrintableAreaWidth, pd.PrintableAreaHeight), ppc);

            XpsHelper.ShowFixedDocument(fixedDocument, ppc.FileName, windowsProvider);
        }
        private static FixedDocument CreateDocument(Size pageSize, PrintProcessorCollection p)
        {
            if (p != null)
            {
                foreach (var printProcessor in p)
                {
                    printProcessor.SetPrintOnAttributes();
                    printProcessor.Prepare(pageSize);
                }
            }

            var internalPrintProcessor = new InternalPrintProcessor();

            return(internalPrintProcessor.CreateFixedDocument(p));
        }