/// <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版权协议,转载请附上原文出处链接和本声明。