Пример #1
0
        /// <summary>
        /// Initializes this instance.
        /// </summary>
        protected virtual void Init()
        {
            _mediaSize = PrintMediaSize.NorthAmericaLetter;
            Size pageSize = _dict[_mediaSize];

            _width  = pageSize.Width;
            _height = pageSize.Height;
        }
Пример #2
0
 /// <summary>
 /// Creates a new paper size setting with a custom paper size.
 /// </summary>
 /// <param name="width">The custom width.</param>
 /// <param name="height">The custom height.</param>
 public PaperSize(double width, double height) : this()
 {
     if (width <= 0.0)
     {
         throw new ArgumentOutOfRangeException("width", ResourceStrings.ReportingPaperSizeWidthError);
     }
     if (height <= 0.0)
     {
         throw new ArgumentOutOfRangeException("height", ResourceStrings.ReportingPaperSizeHightError);
     }
     _mediaSize = PrintMediaSize.PrinterCustom;
     _width     = width;
     _height    = height;
 }
Пример #3
0
        /// <summary>
        /// 处理打印请求
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnPrintTaskRequested(PrintManager sender, PrintTaskRequestedEventArgs e)
        {
            sender.PrintTaskRequested -= OnPrintTaskRequested;
            PrintTask printTask = null;

            printTask = e.Request.CreatePrintTask(_jobName, (src) =>
            {
                // 初始化打印预览时的方向和纸张大小
                printTask.Options.Orientation = (_info.Orientation == PrintPageOrientation.Portrait) ? PrintOrientation.Portrait : PrintOrientation.Landscape;
                PrintMediaSize size           = _info.PaperSize.MediaSize;
                if (size != PrintMediaSize.PrinterCustom)
                {
                    printTask.Options.MediaSize = size;
                }

                // 报表中包含图片,先将Excel导出,再导入。否则,图片打印不出来
                if (_hasPictures)
                {
                    _excel.ShowDecoration = false;
                    _cachedStream         = new MemoryStream();
                    _excel.SaveXmlBackground(_cachedStream);
                    _cachedStream.Seek(0L, SeekOrigin.Begin);
                    _excel.OpenXmlOnBackground(_cachedStream);
                }

                Memento memento = new Memento();
                Init(memento);
                StretchContent();
                src.SetSource(_printDoc.DocumentSource);

                // 打印任务完成时释放资源
                printTask.Completed += (s, args) =>
                {
                    if (_hasPictures)
                    {
                        // 恢复分页线
                        if (_showDeco)
                        {
                            _excel.ShowDecoration = true;
                            _cachedStream.Seek(0L, SeekOrigin.Begin);
                            _excel.OpenXmlOnBackground(_cachedStream);
                        }

                        _cachedStream.Close();
                        _cachedStream = null;
                    }
                    Resume(memento);
                };
            });
        }
Пример #4
0
        /// <summary>
        /// Reads the XML base.
        /// </summary>
        /// <param name="reader">The reader.</param>
        protected virtual void ReadXmlBase(XmlReader reader)
        {
            string str;

            Serializer.InitReader(reader);
            if ((reader.NodeType == ((XmlNodeType)((int)XmlNodeType.Element))) && ((str = reader.Name) != null))
            {
                if (str != "MediaSize")
                {
                    if (str != "PaperWidth")
                    {
                        if (str == "PaperHeight")
                        {
                            _height = Serializer.ReadAttributeDouble("value", 0.0, reader);
                        }
                        return;
                    }
                }
                else
                {
                    _mediaSize = Serializer.ReadAttributeEnum("value", PrintMediaSize.NorthAmericaLetter, reader);
                    if (_mediaSize != PrintMediaSize.PrinterCustom)
                    {
                        try
                        {
                            Size pageSize = _dict[_mediaSize];
                            _width  = (int)pageSize.Width;
                            _height = (int)pageSize.Height;
                        }
                        catch
                        {
                        }
                    }
                    return;
                }
                _width = Serializer.ReadAttributeDouble("value", 0.0, reader);
            }
        }
Пример #5
0
 public PaperSize(PrintMediaSize mediaSize) : this()
 {
     MediaSize = mediaSize;
 }