ArcGIS Engine - 地图打印

tech2026-04-24  3

/// <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, ""); }
最新回复(0)