ArcGIS Engine - 地图打印

		/// <summary>
        /// 打印地图
        /// </summary>
        public static void PrintPage()
        {
            IActiveView pActiveView = PageLayoutControl.ActiveView;
            try
            {
                PrintDialog printDialog = new PrintDialog();
                printDialog.AllowPrintToFile = false;
                System.Drawing.Printing.PrintDocument pPrintDocument = new System.Drawing.Printing.PrintDocument();
                printDialog.Document = pPrintDocument;
                DialogResult result = printDialog.ShowDialog();
                if (result == DialogResult.OK)
                {
                    //获取打印份数
                    int Copies = pPrintDocument.PrinterSettings.Copies;
                    //获取打印方向
                    bool landscape = pPrintDocument.DefaultPageSettings.Landscape;
                    //获取打印分辨率
                    int ResolutionX = pPrintDocument.DefaultPageSettings.PrinterResolution.X;
                    int ResolutionY = pPrintDocument.DefaultPageSettings.PrinterResolution.Y;


                    IPaper pPaper = new Paper();
                    //设置打印机名称
                    pPaper.PrinterName = pPrintDocument.PrinterSettings.PrinterName;
                    //设置打印方向
                    if (landscape)
                    {
                        pPaper.Orientation = 2;
                    }
                    else
                    {
                        pPaper.Orientation = 1;
                    }

                    IPrinter pPrinter = new EmfPrinterClass();
                    
                    ///如果不设置打印名称的话发送到实体打印机打印时会报错
                    pPrinter.SpoolFileName = "地图打印";  
                    pPrinter.Paper = pPaper;
                    
                    //设置打印分辨率
                    ESRI.ArcGIS.esriSystem.tagRECT usertagRECT = pActiveView.ExportFrame;
                    usertagRECT.left = 0;
                    usertagRECT.top = 0;
                    usertagRECT.right = (int)(pPrinter.PrintableBounds.Width * ResolutionX);
                    usertagRECT.bottom = (int)(pPrinter.PrintableBounds.Height  * ResolutionY);
                    IEnvelope pDriverBounds = new EnvelopeClass();
                    pDriverBounds.PutCoords(usertagRECT.left, usertagRECT.top, usertagRECT.right, usertagRECT.bottom);

                    //开始打印
                    pActiveView.Output(pPrinter.StartPrinting(pDriverBounds, 0), pPrinter.Resolution, ref usertagRECT, null, null);
                    pPrinter.FinishPrinting();
                    
                    MessageBox.Show("地图打印成功!", "提示", MessageBoxButtons.OK);
                    
                }
                else
                {
                    return new Response(Constant.Nothing, "");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show("打印失败!" + ex.Message + ex.Source);
            }

            return new Response(Constant.Success, "");
        }

版权声明:本文为weixin_42562567原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。