java调用打印机打印问题求解

/***打印Excel*@parampath*@paramprinterName*@throwsException*/publicstaticvoidprint(Stri... /**
* 打印Excel
* @param path
* @param printerName
* @throws Exception
*/
public static void print(String path, String printerName)
throws Exception {
ComThread.InitSTA();
ActiveXComponent xl = new ActiveXComponent("Excel.Application");
try {
Dispatch workbooks = xl.getProperty("Workbooks").toDispatch();
Dispatch workbook = Dispatch.call(workbooks, "Open", path).toDispatch();
Dispatch.callN(workbook, "PrintOut", new Object[] {
Variant.VT_MISSING, Variant.VT_MISSING, new Integer(1),
new Boolean(false), printerName, new Boolean(true),
Variant.VT_MISSING, "" });
Dispatch.call(workbook, "Close");
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
xl.invoke("Quit", new Variant[] {});
ComThread.Release();
}
}
这是打印方法,我用main方法调用这个方法能成功的打印出来,但是用我页面调用(弄个button访问后台方法),就不能打印了,这是怎么回事?
ComThread.InitSTA();到这个就不往下面走了
展开
 我来答
tiankongml
2013-01-11
知道答主
回答量:19
采纳率:0%
帮助的人:6.2万
展开全部
按你的描述,这句在初始化线程,分配资源,你查看下,是不是你的数据量过大,消耗的内存过多,导致溢出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友845f74e61
2013-01-11 · TA获得超过6929个赞
知道大有可为答主
回答量:4050
采纳率:50%
帮助的人:1632万
展开全部
ComThread.InitSTA();这个里面的内容是什么?

ComThread这个类被封在jar中了?
更多追问追答
追问
对的,这个问题我已经解决了,但是推翻重做了,不用这个了,最终可以打印的,但是只能是服务器端的那台机子连着打印机方可打印,客户端是打印不了的。唉
追答
嗯,这个是正常的。
你用网页的话,肯定是向服务器端发送请求,所有的java代码都是在服务器端运行,
所以打印只能在服务器端进行,是正常的。

网页的打印方式有两种。
1.用浏览器打开你要打印的文件,调用浏览器的打印功能。(当然,这个也得是用户自己去点。用javascript好象也可以实现,但不是很把握,有可能会受安全限制而出问题)
2.下载文件到本地,让用户自己去打印。

我开始以为 ComThread 运行是被阴塞了,后来发现是init方法,所以问你类的内容是什么,
现在想来,可能是连接打印机的地方出了问题。
我 估计 ComThread这个类中,连接打印机是本机的,而不是网络的,你看看这个类有没有set方法可以设置打印机路径的,这样,你的WEB服务器可以连接打印服务器,进行打印,不用WEB服务器安装打印机。(当然这只是个猜测)

总得来说,不能直接实现WEB客户端实现打印。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式