www.mxdraw.com
|
实现把多个控件的内容打印到一张图纸,实现嵌套打印
static bool Mx_NestedPrint(LPCTSTR pszPrintName, LPCTSTR pszPaperName, int iPrintDirection, LPCTSTR pszPrintConfig, LPCTSTR pszDocName, long lHOcx, double ptLBx, double ptLBy, double ptRTx, double ptRTy, LONG iLeftMargin, LONG iRightMargin, LONG iTopMargin, LONG iBottomMargin, LPCTSTR pszLayoutName, LONG iFlag);
参数 |
说明 |
LPCTSTR pszPrintName |
打印机名,如果传为空,取系统默认打印机 |
LPCTSTR pszPaperName |
打印的图纸名,如果传为空,取系统默认打印机设置 |
int iPrintDirection |
打印的方向,2 为横向,1为纵向 |
LPCTSTR pszPrintConfig |
打印配制,暂没有使用 |
LPCTSTR pszDocName |
打印的文档名称,在用pdf虚拟打印机时,指定打印的pdf文件的缺省文件名 |
long lHOcx |
控件对象id,调用Mx_GetMxDrawXId函数得到. |
double ptLBx |
打印的范围左下角x |
double ptLBy |
打印的范围左下角y |
double ptRTx |
打印的范围右上角x |
double ptRTy |
打印的范围右上角y |
LONG iLeftMargin |
打印的页边的左边距离,如果为-1,取打印机默认的页边距 |
LONG iRightMargin |
打印的页边的右边距离,如果为-1,取打印机默认的页边距 |
LONG iTopMargin |
打印的页边的上边距离,如果为-1,取打印机默认的页边距 |
LONG iBottomMargin |
打印的页边的下边距离,如果为-1,取打印机默认的页边距 |
LPCTSTR pszLayoutName |
打印的布局,为NULL就是模型Model中的内容 |
LONG iFlag |
pRectPageMargin参数的含义,iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置 |
lHOcx2 |
控件对象id,调用Mx_GetMxDrawXId函数得到. |
ptLBx2 |
打印的范围左下角x |
ptLBy2 |
打印的范围左下角y |
ptRTx2 |
打印的范围右上角x |
ptRTy2 |
打印的范围右上角y |
iLeftMargin2 |
打印的页边的左边距离,如果为-1,取打印机默认的页边距 |
iRightMargin2 |
打印的页边的右边距离,如果为-1,取打印机默认的页边距 |
iTopMargin2 |
打印的页边的上边距离,如果为-1,取打印机默认的页边距 |
iBottomMargin2 |
打印的页边的下边距离,如果为-1,取打印机默认的页边距 |
pszLayoutName2 |
打印的布局,为NULL就是模型Model中的内容 |
iFlag2 |
pRectPageMargin参数的含义,iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置 ..... - 下一个打印参数. |
成功返回.
例如: JS代码
function NestedPrint() { var axMxDrawX = document.getElementById("MxDrawXCtrl"); // 设置打印机数据. var printParam = axMxDrawX.Call("Mx_NewResbuf",""); // pszPrintName - 打印机名,如果传为空,取系统默认打印机 printParam.AddString(""); // pszPaperName - 打印的图纸名,如果传为空,取系统默认打印机设置 printParam.AddString(""); // iPrintDirection - 打印的方向,2 为横向,1为纵向 printParam.AddLong(1); // pszPrintConfig - 打印配制,暂没有使用 printParam.AddString(""); // pszDocName - 打印的文档名称,在用pdf虚拟打印机时,指定打印的pdf文件的缺省文件 printParam.AddString(""); // 设置控件1的打印数据 var viewBound = axMxDrawX.Call("Mx_GetViewCoord",""); var jpgWidth = viewBound.AtDouble(3) - viewBound.AtDouble(1); var jpgHeight = viewBound.AtDouble(4) - viewBound.AtDouble(2); var printWidth = 100; var printHeight = 100; if(jpgWidth > 1) printHeight = printWidth * jpgHeight / jpgWidth; // 得到控件id; var ocxIdRet = axMxDrawX.Call("Mx_GetMxDrawXId",""); printParam.AddLong(ocxIdRet.AtLong(1)); // ptLBx - 打印的范围左下角x printParam.AddDouble(viewBound.AtDouble(1)); // ptLBy - 打印的范围左下角y printParam.AddDouble(viewBound.AtDouble(2)); // ptRTx - 打印的范围右上角x printParam.AddDouble(viewBound.AtDouble(3)); // ptRTy - 打印的范围右上角y printParam.AddDouble(viewBound.AtDouble(4)); // 打印区域的左上角X坐标,图纸单为mm printParam.AddLong(50); // 打印区域的右下角X坐标,图纸单为mm printParam.AddLong(50 + printWidth ); // 打印区域的左上角Y坐标,图纸单为mm printParam.AddLong(50); // 打印区域的右下角Y坐标,图纸单为mm printParam.AddLong(50 + printHeight); // pszLayoutName - 打印的布局,为NULL就是模型Model中的内容 printParam.AddString(""); // 前面打印参数说明:iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置 printParam.AddLong(1); // // 设置控件2的打印数据 var axMxDrawX2 = document.getElementById("MxDrawXCtrl2"); var viewBound = axMxDrawX2.Call("Mx_GetViewCoord",""); var jpgWidth = viewBound.AtDouble(3) - viewBound.AtDouble(1); var jpgHeight = viewBound.AtDouble(4) - viewBound.AtDouble(2); var printWidth = 100; var printHeight = 100; if(jpgWidth > 1) printHeight = printWidth * jpgHeight / jpgWidth; // 得到控件id; var ocxIdRet = axMxDrawX2.Call("Mx_GetMxDrawXId",""); printParam.AddLong(ocxIdRet.AtLong(1)); // ptLBx - 打印的范围左下角x printParam.AddDouble(viewBound.AtDouble(1)); // ptLBy - 打印的范围左下角y printParam.AddDouble(viewBound.AtDouble(2)); // ptRTx - 打印的范围右上角x printParam.AddDouble(viewBound.AtDouble(3)); // ptRTy - 打印的范围右上角y printParam.AddDouble(viewBound.AtDouble(4)); // 打印区域的左上角X坐标,图纸单为mm printParam.AddLong(50); // 打印区域的右下角X坐标,图纸单为mm printParam.AddLong(50 + printWidth ); // 打印区域的左上角Y坐标,图纸单为mm printParam.AddLong(160); // 打印区域的右下角Y坐标,图纸单为mm printParam.AddLong(160 + printHeight); // pszLayoutName - 打印的布局,为NULL就是模型Model中的内容 printParam.AddString(""); // 前面打印参数说明:iFlag = 0表示页边距,iFlag = 1表示打印区域矩形框位置 printParam.AddLong(1); // 开始打印 var ret = axMxDrawX.CallEx("Mx_NestedPrint",printParam); if(ret.AtString(0) == "Ok") alert("打印成功"); else alert("打印失败"); }