Java中通过js调用高拍仪和扫描仪
首先想要用js去调用高拍仪和扫描仪的时候你需要有你所适配的高拍仪和扫描仪的 sdk注册表
如图所示:
将注册表放入c:盘下的system32这个文件夹下,在这个文件下执行cmd.exe的小黑框输入: regsvr32 “SDKOCX.ocx” 注意regsvr32和 "SDKOCX.ocx"之间是有空格的。
注册完sdk之后需要将高拍仪或者扫描仪器的驱动安装,进行过上面这些步骤之后就可以安心的进行代码编写了。
调用高拍仪和扫描仪最重要的就是你需要有多对应仪器的clsid如下图所示,否则无法调用仪器的方法
我们这里就以紫光扫描仪为例子调用:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%@ taglib uri="http://java.sun/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun/jsp/jstl/functions" prefix="fn" %>
<!DOCTYPE html>
<html>
//这个是jsp的页面
<head>
<script type="text/javascript" src="resources/js/lib/jquery.min.js"></script>
</head>
<body class="page-upload-scan-doc min-height-554 page-upload-scan-gp">
<input type="hidden" name="hasocx" id="hasocx">
<div class="top-tools-bar clearfix">
<a class="button common-fl common-mr10 js_scanPaper">扫描</a>
</div>
<div class="scan-box">
<!-- 固定添加虹光扫描仪,因为使用了虹光的预览 -->
<object name="winmage" border=0 classid="clsid:0EA4F39C-A442-4E3C-BD0C-C4A73B6AA79C" width=0 height=0></object>
<!-- 固定添加紫光扫描仪 -->
<object id="DOcxtest1" border=0 classid="clsid:677C2EAE-057E-4900-97ED-1520F080942D" width=0 height=490></object>
</div>
<div id="outer">
<div id="inner">
<!-- 固定添加虹光扫描仪,因为使用了虹光的预览 -->
<object name="imagecanvas" border=0 classid="clsid:F462E368-D2AC-4B16-9286-EA5A6078C49F" width="100%" height=490></object>
</div>
</div>
<div class="bottom-tools-bar clearfix fixBar_autoReply">
<a class="button common-fl common-mr10 js_firstPage">首页</a>
<a class="button common-fl common-mr10 js_prevPage">上一张</a>
<a class="button common-fl common-mr10 js_nextPage">下一张</a>
<a class="button common-fl common-mr10 js_lastPage">尾页</a>
<td colspan="3" width="60%">
<select name="DeviceList" id = "DeviceList" onchange = "ChangeDevice()" style = " width:20%"></select></td>
</div>
<div id="globeDiv">
<div class="globeDiv-innerDiv">
<div class="globeDiv-objectDiv">
<!-- 固定添加紫光高拍仪,因为使用到了紫光识别二维码 -->
<object classid="clsid:556DBC8A-FE4A-4DA7-A82E-3926C8D4AC41" id="CamSDKOCX" width="80%" height="470" ></object>
</div>
</div>
</div>
</body>
<script type="text/javascript" src="resources/js/pub/zgScan.js"></script>
<script language="javascript" for="imagecanvas" event="OnCanvasClicked()" type="text/javascript">
imagecanvas.SetBackgroundColor(0xffffff); //米黄色 0xbbggrr
</script>
</html>;
有了clsid你就可以调用扫描仪或者高拍仪的内部自己的方法了,这个都会有自带的ocx的文档里面都会详细的介绍里面的每种方法的介绍,下面我们就开始写js的调用紫光扫描仪的内部方法:
var zg_savePath = "c:\\"; //存储图片临时路径
//有不懂的方法且旁边没有注解的就去doc去找相应的api的文档吧 哈哈哈哈哈哈 毕竟我很善良
try {
var fso = new ActiveXObject("Scripting.FileSystemObject");
if(fso.DriveExists("d")){
zg_savePath="d:\\";
}else{
zg_savePath="c:\\";
}
} catch (e) {
zg_savePath="c:\\";
}
var zg_pageNum = 1; // 当前查看的扫描页数
var pagecount = 0 ;//给扫描的照片命名
var zg_xh = 0; //用来选择型号的参数
var winmage = document.getElementsByName("winmage")[0]; //扫描仪扫描
var imagecanvas = document.getElementsByName("imagecanvas")[0]; // 图片预览
var DOcxtest1 = document.getElementById("DOcxtest1"); // 紫光扫描
/**
* 关掉浏览器的时候执行删除事件
*/
$(window).unload(function(){
debugger;
try {
var asd = CamSDKOCX.GetDirectoryFileCount(zg_savePath+"newTest",65535);
for(var i=0;i<asd;i++){
var shifou=zg_savePath.lastIndexOf("d");//判断根目录是在哪个磁盘
if(shifou == 0){
var aa = "d://" +"newTest/"+ "zg_sdgj"+i+"0000.jpg";
}else{
aa = "c://" +"newTest/"+ "zg_sdgj"+i+"0000.jpg";
}
CamSDKOCX.DeleteFile(aa);// 删除到本地回收站
}
//var result = CamSDKOCX.DeleteFile("d://newTest/123/新建文本文档.txt"); // 删除到本地回收站
//var result2 = CamSDKOCX.CreateDirectory("d://newTest/123");
if (closeWin != null && closeWin != "" && typeof(closeWin)!='undefined') {
window.opener.window.eval(closeWin + "()");
}
} catch (e) {
}
try {
UnInitCamOCX();
} catch (e) {
}
})
//创建目录
function createside(){
var a=zg_savePath.lastIndexOf("d");
if(a == 0){
CamSDKOCX.CreateDirectory("d://newTest")
}else{
CamSDKOCX.CreateDirectory("c://newTest")
}
}
//(因为gp_scanreply添加了虹光classid所以可以调用它的方法不管有没有插仪器 )
//扫描仪删除图片
function delFile(total) {
for (var i = 0; i < total; i++) {
winmage.DeleteImage(0);
}
}
// 初始化背景色
function initFrame() {
imagecanvas.SetBackgroundColor(0xffffff);
}
//初始化紫光扫描仪
function Load()
{
debugger;
var tt = DOcxtest1.LoadDll();
if (tt < 0){
alert("加载失败");
}
else {
alert("加载成功");
}
}
//选择扫描仪;函数未执行前,程序会以系统默认扫描仪
function SelectScanner()
{
var ts;
ts = DOcxtest1.SelectScanner("");
//alert(ts);
return ts;
}
//显示扫描后的图片
function imageget(n) {
debugger;
try {
imagecanvas.SetImageFile(n);
} catch (e) {
}
}
/**
* 获取图片路径
*
* @param i
* @returns
*/
function zg_GetItemPath(i) {
var zgpath = zg_savePath + "newTest\\" + "zg_sdgj" + i + "0000.jpg";
return zgpath;
}
//显示扫描后的图片
function zg_imageget(n) {
var image = zg_GetItemPath(n - 1);
imagecanvas.SetImageFile(image);
}
/**
* 扫描后查看首页
*/
function zg_firstPage() { // 扫描后查看第一页
debugger;
zg_pageNum = 1;
zg_imageget(zg_pageNum);
}
/**
* 扫描后查看上一页
*/
function zg_prevPage() { // 扫描后查看上一页
zg_pageNum--;
if (zg_pageNum < 1) {
zg_pageNum = 1;
}
zg_imageget(zg_pageNum);
}
/**
* 扫描后查看下一页
*/
function zg_nextPage() { // 扫描后查看下一页
zg_pageNum++;
if (zg_pageNum > zg_GetListCount()) {
zg_pageNum = zg_GetListCount();
}
zg_imageget(zg_pageNum);
}
/**
* 扫描后查看最后一页
*/
function zg_lastPage() { // 扫描后查看最后一页
zg_pageNum = zg_GetListCount();
zg_imageget(zg_pageNum);
}
/**
* 获取列表中图片总数
*
* @returns 图片总数
*/
function zg_GetListCount() {
var zg_total = CamSDKOCX.GetDirectoryFileCount(zg_savePath+"newTest",65535);
return zg_total;
}
//扫描的方法
function Scan(nScan)
{
debugger;
var ts;
ts = DOcxtest1.EnConnect(1);
//alert(ts);
var rt;
rt = DOcxtest1.SetScannerSource(1);
//alert(rt);
DOcxtest1.SetScannerImageType(3); //设置扫描类型
DOcxtest1.SetScannerDPI(200);
DOcxtest1.SetScanner(0,2,70,1,0);
DOcxtest1.SetCoverFile(1); //是否覆盖同名文件,1为覆盖,0为不覆盖
var picture = "zg_sdgj"+ pagecount;
var tt = DOcxtest1.StartScanner(zg_savePath+"newTest", picture); //需要保证生成路径存在
//alert(tt);
var a = DOcxtest1.GetFullFileName();
if(tt > 0){
alert("扫描成功!")
picture = zg_savePath+"newTest/"+"zg_sdgj" + pagecount;
}
var filepath=picture+"0000.jpg";
imageget(filepath);//因为紫光扫描仪扫出来的jpg图片都是X:\XXX\XX0000.jpg固定格式
var ImageNumber = DOcxtest1.GetImageNumber();//查看扫描的页数
if (ImageNumber <= 0) {
alert("扫描失败");
}
else {
alert("扫描页数:"+ImageNumber);
}
DOcxtest1.DisConnect();//连接到扫描仪,与EnConnect 配合使用;
pagecount++;
}
$(function(){
debugger;
try{
createside();
initFrame(); //初始化扫描仪背景色
Load();
SelectScanner();
$("body").on("click", ".js_scanPaper", function () {
if(zg_xh == 0){
var a = SelectScanner();
if(a == 1){
zg_xh = 1;
}
}
Scan(0); //扫描仪的扫描按钮
});
$("body").on("click", ".js_firstPage", function () {
zg_firstPage(); //查看第一页
});
$("body").on("click", ".js_prevPage", function () {
zg_prevPage(); //上一页
});
$("body").on("click", ".js_nextPage", function () {
zg_nextPage(); //下一页
});
$("body").on("click", ".js_lastPage", function () {
zg_lastPage(); //最后一页
});
}catch(err){
}
});
这样就可以通过js实现高拍仪和扫描仪的简单调用了,js当中大部分都是高拍仪和扫描仪的ocx文档自带的方法只有少数的逻辑,大家到时候只要找对应的ocx文档直接替换就可以了,希望我的分享可以给你们带来帮助!!!!!!!!!!!!!!!
更多推荐
Java中通过js简单的调用高拍仪和扫描仪
发布评论