Пример #1
0
        private void Export(LocalReport Report)
        {
            string strMessage = string.Empty;

            EMFDeviceInfo emfdi = this.ReadSetting(out strMessage);

            string strDeviceInfo = emfdi.DeviceInfoString;

            emfdi = null;

            Microsoft.Reporting.WinForms.Warning[] Warnings;

            this.m_EMFStreams = new System.Collections.Generic.List <System.IO.Stream>();

            Report.Render("Image", strDeviceInfo, this.CreateStream, out Warnings);

            foreach (System.IO.Stream s in this.m_EMFStreams)
            {
                s.Position = 0;
            }
        }
Пример #2
0
        private EMFDeviceInfo ReadSetting(out string WarningMessage)
        {
            WarningMessage = string.Empty;

            DataSet dsXML = new DataSet();

            EMFDeviceInfo emfdi = new EMFDeviceInfo();

            dsXML.ReadXml(System.Windows.Forms.Application.StartupPath + @"\ReportSettings.xml");

            DataTable dtXML = new DataTable();

            foreach (DataTable dt in dsXML.Tables)
            {
                if (dt.TableName == this.m_ReportName)
                {
                    dtXML = dt;
                    break;
                }
            }

            if (dtXML.Rows.Count != 0)
            {
                DataRow dr = dtXML.Rows[0];
                //if (Printer.PrinterInList(dr["PrinterName"].ToString()))
                //{
                base.PrinterSettings.PrinterName = dr["PrinterName"].ToString();
                //判断打印机是否支持纸张样式
                if (Printer.FormInPrinter(dr["PrinterName"].ToString(), dr["PaperName"].ToString()))
                {
                    //判断纸张样式的宽高与设置的是否相符
                    if (Printer.FormSameSize(dr["PrinterName"].ToString(), dr["PaperName"].ToString(), System.Convert.ToDecimal(dr["PageWidth"]), System.Convert.ToDecimal(dr["PageHeight"])))
                    {
                        bool bolExist = false;

                        foreach (System.Drawing.Printing.PaperSize ps in base.PrinterSettings.PaperSizes)
                        {
                            if (ps.PaperName == dr["PaperName"].ToString())
                            {
                                base.PrinterSettings.DefaultPageSettings.PaperSize = ps;
                                base.DefaultPageSettings.PaperSize = ps;
                                bolExist = true;
                                break;
                            }
                        }

                        if (!bolExist)
                        {
                            WarningMessage += "\r\n Can not use the customized paper, because the printer selected does not the customized papersize!";

                            if (dtXML != null)
                            {
                                dtXML.Dispose();
                            }
                            if (dsXML != null)
                            {
                                dsXML.Clear();
                                dsXML = null;
                            }

                            return(null);
                        }

                        if (dr["Orientation"].ToString() == "Z")
                        {
                            base.DefaultPageSettings.Landscape = false;
                            base.PrinterSettings.DefaultPageSettings.Landscape = false;
                            emfdi.Landscape = false;
                        }
                        else
                        {
                            base.DefaultPageSettings.Landscape = true;
                            base.PrinterSettings.DefaultPageSettings.Landscape = true;
                            emfdi.Landscape = true;
                        }

                        this.bolOrientation = emfdi.Landscape;

                        emfdi.PageWidth    = System.Convert.ToDecimal(dr["PageWidth"].ToString());
                        emfdi.PageHeight   = System.Convert.ToDecimal(dr["PageHeight"].ToString());
                        emfdi.MarginTop    = System.Convert.ToDecimal(dr["MarginTop"].ToString());
                        emfdi.MarginBottom = System.Convert.ToDecimal(dr["MarginBottom"].ToString());
                        emfdi.MarginLeft   = System.Convert.ToDecimal(dr["MarginLeft"].ToString());
                        emfdi.MarginRight  = System.Convert.ToDecimal(dr["MarginRight"].ToString());

                        base.PrinterSettings.PrinterName = dr["PrinterName"].ToString();

                        if (dtXML != null)
                        {
                            dtXML.Dispose();
                        }
                        if (dsXML != null)
                        {
                            dsXML.Clear();
                            dsXML = null;
                        }
                        WarningMessage = string.Empty;
                        return(emfdi);
                    }
                    else
                    {
                        WarningMessage += "\r\n Papersize defined in the config file is not the same with the one in the system!";
                    }
                }
                else
                {
                    WarningMessage += "\r\n Printer defined in the config file does not support the customized papersize!";
                }
                //}
                //else
                //    WarningMessage += "\r\n Printer defined in the config file is not in the available printer list!";
            }
            else
            {
                WarningMessage += "\r\n Can not get any information about the report in the config file!";
            }

            if (dtXML != null)
            {
                dtXML.Dispose();
            }
            if (dsXML != null)
            {
                dsXML.Clear();
                dsXML = null;
            }
            return(null);
        }