当前位置:知识库 / MxDraw网页开发 / 详情
如何直接打印,不出现打印对话框?
如何直接打印,不出现打印对框?
MxDraw网页开发|黄洪辉|2018-06-11 15:26
回答:

主要用到函数说明:


MxDrawXCustomFunction::Mx_Print


直接打印,不出现打印对话框,详细说明如下:


参数说明

double ptLBx

打印的范围左下角x

double ptLBy

打印的范围左下角y

double ptRTx

打印的范围右上角x

double ptRTy

打印的范围右上角y

LPCTSTR pszPrintName

打印机名,如果传为空,取系统默认打印机

LPCTSTR pszPaperName

打印的图纸名,如果传为空,取系统默认打印机设置

LONG iPrintDirection

打印的方向,2 为横向,1为纵向,默认取1

LONG iLeftMargin

打印的页边的左边距离,如果为-1,取打印机默认的页边距

LONG iRightMargin

打印的页边的右边距离,如果为-1,取打印机默认的页边距

LONG iTopMargin

打印的页边的上边距离,如果为-1,取打印机默认的页边距

LONG iBottomMargin

打印的页边的下边距离,如果为-1,取打印机默认的页边距

LPCTSTR pszLayoutName

打印的布局,为NULL就是模型Model中的内容

LPCTSTR pszPrintConfig

打印配制,暂没有使用

LPCTSTR pszDocName

打印的文档名称,在用pdf虚拟打印机时,指定打印的pdf文件的缺省文件名

LONG lIsPrintLineWdith

是否打印线宽,默认值为1,表示打印,传0表示不打印

iFlag

pRectPageMargin参数的含义,iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置


js代码实现如下:


            function  myprint()
            {
                var axMxDrawX = document.getElementById("MxDrawXCtrl");
                var viewBound  = axMxDrawX.Call("Mx_GetViewCoord","");

                var printParam =  axMxDrawX.Call("Mx_NewResbuf","");                
                // 打印范围取当前视区显示内容                
                printParam.AddDouble(viewBound.AtDouble(1));
                printParam.AddDouble(viewBound.AtDouble(2));
                printParam.AddDouble(viewBound.AtDouble(3));
                printParam.AddDouble(viewBound.AtDouble(4));

                 var jpgWidth = viewBound.AtDouble(3) - viewBound.AtDouble(1);
                var jpgHeight = viewBound.AtDouble(4) - viewBound.AtDouble(2);                
                // 把jpg的宽度,高度,求文档坐标变成象素宽高.
                //var jpgWidth = axMxDrawX.CallDoubleParam1("Mx_DocLongToViewCoord",jpgWidth);
                // jpgWidth = jpgWidth.AtLong(1);
                //var jpgHeight = axMxDrawX.CallDoubleParam1("Mx_DocLongToViewCoord",jpgHeight);
                //jpgHeight = jpgHeight.AtLong(1);

                var printWidth = 50;
                var printHeight = 50;                
                if(jpgWidth > 1)
                    printHeight = printWidth * jpgHeight / jpgWidth;                
                    // 打印机名,取空就取系统默认的。                
                    printParam.AddString("");                
                    // 图纸名,取空就取系统默认的                
                    printParam.AddString("");                
                    // 打印的方向,2 为横向,1为纵向,默认取1
                printParam.AddLong(1);                
                // 打印区域的左上角X坐标,图纸单为mm
                printParam.AddLong(50);                
                // 打印区域的右下角X坐标,图纸单为mm
                printParam.AddLong(50 + printWidth );                
                // 打印区域的左上角Y坐标,图纸单为mm
                printParam.AddLong(50);                
                // 打印区域的右下角Y坐标,图纸单为mm
                printParam.AddLong(50 + printHeight);                
                // 打印的布局,为NULL就是模型Model中的内容
                printParam.AddString("");                
                // 打印配制,暂没有使用
                printParam.AddString("");                
                // 打印的文档名称,在用pdf虚拟打印机时,指定打印的pdf文件的缺省文件名
                printParam.AddString("");                
                // 前面打印参数说明:iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置                printParam.AddLong(1);                // 开始打印                var ret = axMxDrawX.CallEx("Mx_Print",printParam);                if(ret.AtString(0) == "Ok")
                    alert("打印成功");
            }
相关问题
如何对视区进行缩放?
在网页中如何设置显示亮度?
在网页中如何得到所有组名?
在网页中如何删除组?
在网页中如何得到用户自定义事件的参数?
如何把实体放到当前选择集中?
如何全屏显示控件?
在网页中如何得到圆?
在网页中如何只让图纸上的圆显示线宽?
在网页中如何打碎块?
梦想CAD是专业的CAD插件(控件),可轻松在网页、手机及BS/CS程序中浏览编辑DWG文件,不需安装AutoCAD即可运行。经十余年累积已非常稳定可靠,有关键的空间搜索算法,并使用汇编优化,可同时处理50万级实体,有非常高的图形显示和处理效率。
联系我们
技术TEL:400-888-5703
185-8173-1060
客服I QQ: 3570505660
技术I QQ: 827867134
技术II QQ:6884123
VIP服务购买
销售TEL:156-8136-8971
销售QQ:710714273
用户交流
控件QQ交流群1:73281982
控件QQ交流群2:112199959
MxCAD软件群 1:515771658
技术I:QQ
827867134
客服I:QQ
3570505660
销售QQ
710714273
联系电话400-888-5703