Пример #1
0
        [ConditionalFact(Helpers.AnyInstalledPrinters, Helpers.WindowsRS3OrEarlier)] // RS4 failures: https://github.com/dotnet/corefx/issues/29858
        public void Clone_Success()
        {
            PageSettings ps = new PageSettings();

            ps.Color     = false;
            ps.Landscape = true;
            ps.Margins   = new Margins(120, 130, 140, 150);
            ps.PaperSize = new PaperSize("My Custom Size", 222, 333);
            PageSettings clone = (PageSettings)ps.Clone();

            Assert.Equal(ps.Color, clone.Color);
            Assert.Equal(ps.Landscape, clone.Landscape);
            Assert.Equal(ps.Margins, clone.Margins);
            Assert.Same(ps.PrinterSettings, clone.PrinterSettings);

            // PaperSize
            Assert.Equal(ps.PaperSize.PaperName, clone.PaperSize.PaperName);
            Assert.Equal(ps.PaperSize.Width, clone.PaperSize.Width);
            Assert.Equal(ps.PaperSize.Height, clone.PaperSize.Height);
            Assert.Equal(ps.PaperSize.Kind, clone.PaperSize.Kind);

            // PrinterResolution
            Assert.Equal(ps.PrinterResolution.X, clone.PrinterResolution.X);
            Assert.Equal(ps.PrinterResolution.Y, clone.PrinterResolution.Y);
            Assert.Equal(ps.PrinterResolution.Kind, clone.PrinterResolution.Kind);

            // PaperSource
            Assert.Equal(ps.PaperSource.Kind, clone.PaperSource.Kind);
            Assert.Equal(ps.PaperSource.SourceName, clone.PaperSource.SourceName);
        }
        public static PageSettings DeepClonePageSettings(PageSettings pageSettings)
        {
            if (pageSettings == null)
            {
                return(null);
            }
            PageSettings pageSettings2 = (PageSettings)pageSettings.Clone();
            Margins      margins       = pageSettings.Margins;

            if (margins != null)
            {
                pageSettings2.Margins = (Margins)margins.Clone();
            }
            pageSettings2.PaperSize              = new PaperSize();
            pageSettings2.PaperSize.Height       = pageSettings.PaperSize.Height;
            pageSettings2.PaperSize.PaperName    = pageSettings.PaperSize.PaperName;
            pageSettings2.PaperSize.RawKind      = pageSettings.PaperSize.RawKind;
            pageSettings2.PaperSize.Width        = pageSettings.PaperSize.Width;
            pageSettings2.PaperSource            = new PaperSource();
            pageSettings2.PaperSource.RawKind    = pageSettings.PaperSource.RawKind;
            pageSettings2.PaperSource.SourceName = pageSettings.PaperSource.SourceName;
            pageSettings2.PrinterResolution      = new PrinterResolution();
            pageSettings2.PrinterResolution.Kind = pageSettings.PrinterResolution.Kind;
            pageSettings2.PrinterResolution.X    = pageSettings.PrinterResolution.X;
            pageSettings2.PrinterResolution.Y    = pageSettings.PrinterResolution.Y;
            if (pageSettings.PrinterSettings != null)
            {
                pageSettings2.PrinterSettings = pageSettings.PrinterSettings;
            }
            return(pageSettings2);
        }
Пример #3
0
 protected override void OnQueryPageSettings(QueryPageSettingsEventArgs e)
 {
     e.PageSettings = (PageSettings)m_pageSettings.Clone();
     //e.PageSettings.PrinterSettings.PrintRange = PrintRange.SomePages;
     //e.PageSettings.PrinterSettings.FromPage = 1;
     //e.PageSettings.PrinterSettings.ToPage = 1;
 }
Пример #4
0
        public static void PrintByPriner(Microsoft.Reporting.WinForms.ReportViewer viewer, string Printername)
        {
            //viewer.RefreshReport();
            //viewer.SetDisplayMode(Microsoft.Reporting.WinForms.DisplayMode.PrintLayout);
            PageSettings pagesettings   = viewer.GetPageSettings();
            object       objviewer      = viewer;
            FieldInfo    info           = viewer.GetType().GetField("m_lastUIState", BindingFlags.FlattenHierarchy | BindingFlags.IgnoreCase | BindingFlags.Instance | BindingFlags.NonPublic);
            object       m_lastUIState  = info.GetValue(objviewer);
            object       PostRenderArgs = null;
            var          variables      = from nn in viewer.GetType().Assembly.GetTypes() where nn.Name.Contains("ReportViewerStatus") || nn.Name.Contains("PostRenderArgs") select nn;

            foreach (Type type in variables)
            {
                if (type.Name.Contains("ReportViewerStatus"))
                {
                    object[] prms = { m_lastUIState };
                    ExecuteFunction(type, prms, "DoesStateAllowPrinting");
                }
                if (type.Name.Contains("PostRenderArgs"))
                {
                    object[] ooo = { false, false };
                    PostRenderArgs = Activator.CreateInstance(type, ooo);
                }
            }
            object pr = ExecuteFunction(objviewer, null, "CreateDefaultPrintSettings");

            (pr as System.Drawing.Printing.PrinterSettings).Copies = 1;
            //(pr as System.Drawing.Printing.PrinterSettings).PrinterName =  Printername ;

            {
                object[] prms = { objviewer, pr };
                ExecuteFunction(objviewer, prms, "OnPrintingBegin");
            }
            object[] processprms = { 0, 0 };
            string   deviceInfo  = ExecuteFunction(objviewer, processprms, "CreateEMFDeviceInfo").ToString();

            ExecuteFunction(objviewer, null, "ProcessAsyncInvokes");
            WriteProperityVal(objviewer, true, "PrintDialogDisplayed");
            //object[] parms = { "IMAGE", true, deviceInfo, Microsoft.Reporting.WinForms.PageCountMode.Estimate, report.CreateAndRegisterStream, report.AsyncCompletedEventHandler, PostRenderArgs, false };
            //ExecuteFunction(objviewer, parms, "BeginAsyncRender");
            object currentReport = GetPropertyVal(objviewer, "CurrentReport");
            object fileManager   = GetPropertyVal(currentReport, "FileManager");

            object ReportPrintDocument = null;
            var    variables2          = from nn in viewer.GetType().Assembly.GetTypes() where nn.Name.Contains("ReportPrintDocument") select nn;

            foreach (Type type in variables2)
            {
                object[]        parms2 = { fileManager, pagesettings.Clone() };
                ConstructorInfo ci     = type.GetConstructor(BindingFlags.NonPublic | BindingFlags.Instance, null, new Type[] { fileManager.GetType(), typeof(PageSettings) }, null);
                ReportPrintDocument = ci.Invoke(parms2);

                WriteProperityVal(ReportPrintDocument, pr, "PrinterSettings");
                WriteProperityVal(ReportPrintDocument, "Title", "DocumentName");
                ExecuteFunction(ReportPrintDocument, null, "Print");
            }
        }
        protected override void OnQueryPageSettings(QueryPageSettingsEventArgs e)
        {
            if (e == null)
            {
                throw new ArgumentNullException("e");
            }

            e.PageSettings = (PageSettings)m_pageSettings.Clone();
        }
Пример #6
0
        public void StoreSetting(string printerName, PageSettings settings)
        {
            Debug.Assert(!string.IsNullOrEmpty(printerName));
            _printerName = printerName;

            if (null == settings)
            {
                _InitPageSettings(_printerName);
            }
            else
            {
                _pageSettings = (PageSettings)settings.Clone();
            }
        }
Пример #7
0
        public MyPrintDocument(PageSettings pageSettings, PrinterSettings printerSettings)
        {
            this.DefaultPageSettings = (PageSettings)pageSettings.Clone();
            this.PrinterSettings     = (PrinterSettings)printerSettings.Clone();

            /*
             * using (var dcap = new PrintUtils.DeviceCaps(this.PrinterSettings))
             * {
             *  this.printArea = dcap.PrintMillimeterArea;
             * }
             */

            RectangleF rf = this.DefaultPageSettings.PrintableArea;

            this.printArea = new RectangleF(rf.X * 0.254f, rf.Y * 0.254f, rf.Width * 0.254f, rf.Height * 0.254f);

            this.OriginAtMargins = false;
        }
Пример #8
0
        public void CloneTest()
        {
            // Check for installed printers, because we need
            // to have at least one to test
            if (PrinterSettings.InstalledPrinters.Count == 0)
            {
                Assert.Ignore("No printers found.");
            }

            PageSettings ps = new PageSettings();

            ps.Color     = false;
            ps.Landscape = true;
            ps.Margins   = new Margins(120, 130, 140, 150);
            ps.PaperSize = new PaperSize("My Custom Size", 222, 333);
            PageSettings clone = (PageSettings)ps.Clone();

            Assert.AreEqual(ps.Color, clone.Color, "#1");
            Assert.AreEqual(ps.Landscape, clone.Landscape, "#2");
            Assert.AreEqual(ps.Margins, clone.Margins, "#3");
            Assert.AreSame(ps.PrinterSettings, clone.PrinterSettings, "#4");

            // PaperSize
            Assert.AreEqual(ps.PaperSize.PaperName, clone.PaperSize.PaperName, "#5");
            Assert.AreEqual(ps.PaperSize.Width, clone.PaperSize.Width, "#6");
            Assert.AreEqual(ps.PaperSize.Height, clone.PaperSize.Height, "#7");
            Assert.AreEqual(ps.PaperSize.Kind, clone.PaperSize.Kind, "#8");

            // PrinterResolution
            Assert.AreEqual(ps.PrinterResolution.X, clone.PrinterResolution.X, "#9");
            Assert.AreEqual(ps.PrinterResolution.Y, clone.PrinterResolution.Y, "#10");
            Assert.AreEqual(ps.PrinterResolution.Kind, clone.PrinterResolution.Kind, "#11");

            // PaperSource
            Assert.AreEqual(ps.PaperSource.Kind, clone.PaperSource.Kind, "#12");
            Assert.AreEqual(ps.PaperSource.SourceName, clone.PaperSource.SourceName, "#13");
        }
Пример #9
0
 protected override void OnQueryPageSettings(QueryPageSettingsEventArgs e)
 {
     e.PageSettings = (PageSettings)m_pageSettings.Clone();
 }