コード例 #1
0
        /// <summary>
        /// Gets the default page settings object if there is any exception condition
        /// </summary>
        /// <param name="pageSettingString">The page settings string object</param>
        /// <returns>Returns the page settings object</returns>
        private PageSettings GetDefaultPageSettings(string pageSettingString)
        {
            // this should not be the case ever, still puttinga  safety net, so that printing doesn't stop and it prints to
            // default printer.
            if (string.IsNullOrEmpty(pageSettingString))
            {
                throw new ArgumentNullException(Resources.PageSettingsNotNull);
            }

            PageSettings pageSettingsOfPrinter = null;

            // Xml Document holding the page settings user has set
            var textReader = new StringReader(pageSettingString);

            var readerSettings = new XmlReaderSettings
            {
                DtdProcessing = DtdProcessing.Prohibit,
                XmlResolver   = null
            };

            using (XmlReader xmlReader = XmlReader.Create(textReader, readerSettings))
            {
                var pageSettingSetByUser = new XmlDocument
                {
                    XmlResolver = null
                };

                pageSettingSetByUser.Load(xmlReader);
                var pageSettingsRootNode = pageSettingSetByUser.DocumentElement;

                pageSettingsOfPrinter = new PageSettings();
                var printerName = PageSettingsHelper.GetPrinterNameFromPageSettings(pageSettingsRootNode);

                if (string.IsNullOrEmpty(printerName))
                {
                    throw new ArgumentException(Resources.PrinterNameMustNotBeNull);
                }

                pageSettingsOfPrinter.PrinterSettings.PrinterName = printerName;
                this.SetDefaultPageSettings(pageSettingsOfPrinter, pageSettingsRootNode);
            }

            return(pageSettingsOfPrinter);
        }
コード例 #2
0
        internal static string PrinterNameFromPageSettings(string pageSettings)
        {
            if (string.IsNullOrWhiteSpace(pageSettings))
            {
                return(null);
            }

            var value = string.Empty;

            TextReader textReader = null;

            try
            {
                textReader = new StringReader(pageSettings);
                var readerSettings = new XmlReaderSettings()
                {
                    DtdProcessing = DtdProcessing.Prohibit,
                    XmlResolver   = null
                };

                using (var xmlReader = XmlReader.Create(textReader, readerSettings))
                {
                    var doc = new XmlDocument
                    {
                        XmlResolver = null
                    };

                    doc.Load(xmlReader);

                    value = PageSettingsHelper.GetPrinterNameFromPageSettings(doc.DocumentElement);
                }
            }
            finally
            {
                if (textReader != null)
                {
                    textReader.Dispose();
                }
            }

            return(value);
        }
コード例 #3
0
        private PageSettings ProcessPageSettingsInternal(string pageSettingString)
        {
            if (string.IsNullOrEmpty(pageSettingString))
            {
                throw new ArgumentNullException("PageSettings set by user cannot be empty");
            }

            PageSettings pageSettingsOfPrinter = null;
            TextReader   textReader            = null;

            try
            {
                // Xml Document holding the page settings user has set
                textReader = new StringReader(pageSettingString);

                var readerSettings = new XmlReaderSettings
                {
                    DtdProcessing = DtdProcessing.Prohibit,
                    XmlResolver   = null
                };

                using (var xmlReader = XmlReader.Create(textReader, readerSettings))
                {
                    XmlDocument pageSettingSetByUser = new XmlDocument
                    {
                        XmlResolver = null
                    };

                    pageSettingSetByUser.Load(xmlReader);

                    var pageSettingsRootNode = pageSettingSetByUser.DocumentElement;

                    // Gets the non empty nodes, i.e. nodes which actually user has set a value
                    var nonEmptyNodes = this.GetNonEmptyNodes(pageSettingsRootNode);

                    // Gets the printer name from the same xml. If printer name is not set or not valid , no need to go further
                    var printerName = PageSettingsHelper.GetPrinterNameFromPageSettings(pageSettingsRootNode);

                    if (string.IsNullOrWhiteSpace(printerName))
                    {
                        throw new ArgumentNullException(Resources.NoPrinterName);
                    }

                    // Get the default page settings of the printer and sets the printer name and orientation
                    pageSettingsOfPrinter = new PageSettings();
                    pageSettingsOfPrinter.PrinterSettings.PrintFileName = Constants.Empty;
                    pageSettingsOfPrinter.PrinterSettings.PrinterName   = printerName;
                    pageSettingsOfPrinter.Landscape = this.IsLandscape(pageSettingsRootNode);

                    // serialize the pagesettings
                    var pageSettingsStringForPrinter = this.GetSerializedPageSettingsOfPrinter(pageSettingsOfPrinter);

                    if (string.IsNullOrEmpty(pageSettingsStringForPrinter))
                    {
                        throw new ArgumentNullException("PageSettings set by user cannot be empty");
                    }

                    // Copy the pageSettings from user set to one sent to printer
                    var pageSettingsTobeSet = this.TransferPageSettingsSetByUserToPrinter(pageSettingsStringForPrinter, nonEmptyNodes);

                    // finally deserialize it and give it back
                    pageSettingsOfPrinter = (PageSettings)XmlHelper.XmlDeserialize(typeof(PageSettings), pageSettingsTobeSet, string.Empty);
                    if (pageSettingsOfPrinter == null)
                    {
                        throw new ArgumentNullException(Resources.NoPageSettings);
                    }
                }
            }
            finally
            {
                if (textReader != null)
                {
                    textReader.Dispose();
                }
            }

            return(pageSettingsOfPrinter);
        }