网上一堆用Spire实现的这个功能,但是免费的Spire有水印,收费的售价上万,只是简单的实现打印功能,太贵了,所以转用jacob实现。
后期遇到的问题,错误提示:no jacob-1.20-x86 in java.library.path
,由dll文件引发的问题
- 这个问题与jdk版本有关系,如果是jdk17,会从java/bin目录和环境变量path中的所有路径中查找dll文件
- 如果是jdk1.8,只会在java的bin目录下查找
使用时要注意版本的问题
使用jacob实现打印功能
- 下载jacob
- 将压缩文件里面的dll文件拷贝到,C:\Windows\System32
- 将jar加载到idea中
public class JacobPrint {
static void print( String filePath){// filePath="D:\\1.doc";//测试使用的路径
System.out.println("开始打印");
ComThread.InitSTA();
ActiveXComponent word=new ActiveXComponent("Word.Application");
Dispatch doc=null;
Dispatch.put(word, "Visible", new Variant(false));
Dispatch docs=word.getProperty("Documents").toDispatch();
doc=Dispatch.call(docs, "Open", filePath).toDispatch();//这里也需要修改路径
try {
Dispatch.call(doc, "PrintOut");//打印
} catch (Exception e) {
e.printStackTrace();
System.out.println("打印失败");
}finally{
try {
if(doc!=null){
//关闭文件
Dispatch.call(doc, "Close",new Variant(0));
}
} catch (Exception e2) {
e2.printStackTrace();
}
//释放资源
ComThread.Release();
}
}