Java 中如何调用windows的打印程序? Java 中如何调用windows的打印程序? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 在JDK1.6中有新的类"Desktop",有个Print()可以调用。之前的嘛,自己写打印程序吧。不过JAVA关于打印的问题是最没人回答的。 我找到了DeskTop.java类,试图将该功能从jdk1.6的源代码中分离处理,但是牵连的类太多啦:(我不需要打印GUI,打印普通数据文件就可以啦,哪位用过?! <%@ page contentType="text/html; charset=GBK" %><html><head><title>sign6</title> <script language="javascript"> function printsetup(){ alert(wb); // 打印页面设置 wb.execwb(8,1); } function printpreview(){ // 打印页面预览 wb.execwb(7,1); } function printit() { alert(wb); if (confirm('确定打印吗?')) { wb.ExecWB(6,6); } } </script> </head><body bgcolor="#ffffff"><OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT> <form><table><tr><td><input type=button name=button_print value="打印" onclick="javascript:printit()"> <input type=button name=button_setup value="打印页面设置" onclick="javascript:printsetup();"> <input type=button name=button_show value="打印预览" onclick="javascript:printpreview();"> <input type=button name=button_fh value="关闭" onclick="javascript:window.close();"> </td></tr></table></form></body></html>我做过,不过只能打能txt,和图片文件,如果是.doc文件我是用jacob先转换为txt文件进行打印的,不过格式被破坏了!package com.szallcom.tools;import java.io.File;import java.io.FileInputStream;import javax.print.Doc;import javax.print.DocFlavor;import javax.print.DocPrintJob;import javax.print.PrintService;import javax.print.PrintServiceLookup;import javax.print.SimpleDoc;import javax.print.attribute.DocAttributeSet;import javax.print.attribute.HashDocAttributeSet;import javax.print.attribute.HashPrintRequestAttributeSet;import javax.print.attribute.PrintRequestAttributeSet;public class Printtupian {public void printjpg(String getfile,String fensu){ //构造一个文件选择器,默认为当前目录 File file = new File(getfile);//获取选择的文件 //构建打印请求属性集 PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet(); //设置打印格式,因为未确定文件类型,这里选择AUTOSENSE DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF; //查找所有的可用打印服务 //PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras); //定位默认的打印服务 PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService(); //显示打印对话框 long j=Integer.parseInt(fensu); for(int i=0;i<j;i++) { try { DocPrintJob job = defaultService.createPrintJob(); //创建打印作业 FileInputStream fis = new FileInputStream(file); //构造待打印的文件流 DocAttributeSet das = new HashDocAttributeSet(); Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式 job.print(doc, pras); //进行文件的打印 } catch(Exception e) { e.printStackTrace(); } }}} JDK1.4新加入的的打印API,像家用的喷墨打印机我用下来只支持图形.到是激光打印机可以设为DocFlavor.INPUT_STREAM再从ByteArrayInputStream内读出内存中的字符串. 写个脚本,window.print()就可以了 有两前提:1、用Java代码2、调用windows的打印组件(弹出打印设置界面)各位继续。 .....你都找到了Desktop了...直接File f = new File("xxxx.xxx");Desktop.getDesktop().print(f);直接就打印了。如果是DOC文件,一般直接调用WORD打印了。自己实现的话zuguanqun(小群) 的代码已经给出了,自己看一下帮助文档。 用Desktop貌似不能选择打印机,是后台程序去选择本机上的默认打印机,这个对我来说事个困扰,我是系统能让用户自己选打印机,能有什么好的解决办法吗? JCreator的调试问题 做了一个聊天的客户端,关于线程的问题。。。 邮箱验证的正则表达式 如何解析 牛津词典 mdx文件 请各位帮我做个选择题,最好能有说明,谢谢!! 请帮忙看一下下面的代码 关于jmf的问题:(real的包) 哪里有BAS4.5下载? 如何把draw方法转换buffImage对象 JAVA的GUI事件处理 jsp实现文件批量下载问题,请高手赐教 关于File类的length()方法的一个问题
之前的嘛,自己写打印程序吧。不过JAVA关于打印的问题是最没人回答的。
<html>
<head>
<title>
sign6
</title>
<script language="javascript">
function printsetup(){
alert(wb);
// 打印页面设置
wb.execwb(8,1);
}
function printpreview(){
// 打印页面预览
wb.execwb(7,1);
}
function printit()
{
alert(wb);
if (confirm('确定打印吗?')) {
wb.ExecWB(6,6);
}
}
</script> </head><body bgcolor="#ffffff">
<OBJECT classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height=0 id=wb name=wb width=0></OBJECT> <form>
<table>
<tr>
<td>
<input type=button name=button_print value="打印" onclick="javascript:printit()">
<input type=button name=button_setup value="打印页面设置" onclick="javascript:printsetup();">
<input type=button name=button_show value="打印预览" onclick="javascript:printpreview();">
<input type=button name=button_fh value="关闭" onclick="javascript:window.close();"> </td>
</tr>
</table>
</form>
</body>
</html>
我做过,不过只能打能txt,和图片文件,如果是.doc文件我是用jacob先转换为txt文件进行打印的,不过格式被破坏了!
package com.szallcom.tools;import java.io.File;
import java.io.FileInputStream;
import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.DocAttributeSet;
import javax.print.attribute.HashDocAttributeSet;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
public class Printtupian
{
public void printjpg(String getfile,String fensu)
{
//构造一个文件选择器,默认为当前目录 File file = new File(getfile);//获取选择的文件
//构建打印请求属性集
PrintRequestAttributeSet pras = new HashPrintRequestAttributeSet();
//设置打印格式,因为未确定文件类型,这里选择AUTOSENSE
DocFlavor flavor = DocFlavor.INPUT_STREAM.GIF;
//查找所有的可用打印服务
//PrintService printService[] = PrintServiceLookup.lookupPrintServices(flavor, pras);
//定位默认的打印服务
PrintService defaultService = PrintServiceLookup.lookupDefaultPrintService();
//显示打印对话框
long j=Integer.parseInt(fensu);
for(int i=0;i<j;i++)
{
try {
DocPrintJob job = defaultService.createPrintJob(); //创建打印作业
FileInputStream fis = new FileInputStream(file); //构造待打印的文件流
DocAttributeSet das = new HashDocAttributeSet();
Doc doc = new SimpleDoc(fis, flavor, das); //建立打印文件格式
job.print(doc, pras); //进行文件的打印
}
catch(Exception e) {
e.printStackTrace();
}
}
}}
1、用Java代码
2、调用windows的打印组件(弹出打印设置界面)各位继续。
File f = new File("xxxx.xxx");
Desktop.getDesktop().print(f);
直接就打印了。
如果是DOC文件,一般直接调用WORD打印了。
自己实现的话zuguanqun(小群) 的代码已经给出了,自己看一下帮助文档。