dsoframer填充图片javascript

售楼系统售楼合同采取了word模板套打方式,调用dsoframer微软提供的第三方在线编辑word控件。已有“销售合同”中支持文本域填充,使用模板.xml获取值,然后再PrintContract.aspx页面js加载数据。

页面中创建dsoframerActiveX对象,然后再页面获取到这个对象,打开模板文档,找到书签赋值。

这次技术验证是在套打合同中加入户型图的打印,系统已有的代码中没有使用到word动态获取图片的方法,网上搜索了很久,尝试了下面几个方案:

1.  word模板中添加“图像Activex”,然后再js加载数据在wordobj中找到这个控件,但是该image控件没有src直接属性,属性picture需要vb后台loadPicture(读取图片文件流到内存)来赋值,js实现不了。此方法行不通。

2.      在1基础上对该“图像Activex”,再增加户型图地址文本域(需要物理地址),然后绑定“图像Activex”点击事件,加载图片。但是前台找到该控件,但是没有click方法,obj.click()无效。此方法无效。

 

后来平台组同事提供NTKO控件帮助文档来做参考,通过word中添加图片录制宏,编辑宏,可以看到添加图片的代码,然后仿效添加到前台。

 

3.      录制宏添加图片获取相关代码,移植到前台js写法;

Selection.InlineShapes.AddPicture(sImgUrl, false,true,wordobj.ActiveDocument.Application.Selection.Range);

后来在平台同事帮忙下,可以在word第一页,第一行添加图片。

已能实现添加图片。

但是销售合同中户型图是有一定位置的,现在要解决能在指定位置添加图片。

4.      所有NTKO,获得在书签位置插入的图片,找到有效代码。

先找到对应书签,然后再书签后插入图片。

//页面加载
function onWindowLoad() {
//4.       获得在书签位置插入的图片:
//wordobj 为 js Object Activex 对象(objectid=*****.***)
var wordobj = document.getElementById("dsoframer1");
var remark = "HuXingPicture";
if(wordobj.ActiveDocument.BookMarks.Exists(remark)){//判断是否存在该书签
	var picrange = wordobj.ActiveDocument.BookMarks(remark);//获得插入图片处的书签位置
	if(picrange !=null){ //判读是否在该书签位置插入图片
		picrange.Select(); //选中书签的位置
		var selection = wordobj.ActiveDocument.Application.Selection; //获得刚选中的书签的位置
		var sImgUrl = "C:\\Users\\zhangzx\\Pictures\\2B.jpg";
		wordobj.ActiveDocument.Application.Selection.InlineShapes.AddPicture(sImgUrl, false, true,wordobj.ActiveDocument.Application.Selection.Range);
	}
}   
}

//如何word添加文本域或者图片Activex,word-选项-自定义选项,勾上开发工具


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值