弄了一周了,终于好了.最近我们公司在做人脸识别技术,识别完之后需要打印word(printShare实现).下面就看一下怎么实现吧.

首先在我们的项目里需要word文档,放在raw下或者是res下面,我这里是在raw下面写的.

然后还需要下载poi包,,当然下载这个需要积分,下载完之后直接导入到项目中,接着连接数据库,我这里是jtds连接的SqlServer数据库,需要下载jar包,注意是1.2.7版本的.连接SqlServer数据库,这个也是坑啊,连了半天没有连接上,最后在同事的帮助下解决,他需要启用点击进去设置已启用,然后设置是就好了,

接着代码实现:

//-----------word文档
private String docName = "demo.doc";
private String aafileurl;
private String bbfileurl;
private File demoFile;
private File newFile;
// 消息显示到控件,设置数据
Handler mHandler = new Handler() {public void handleMessage(android.os.Message msg) {switch (msg.what) {case 1001:String strXM = msg.getData().getString("XM");String strSFZHM = msg.getData().getString("SFZHM");String strKH = msg.getData().getString("KH");String strJZDName = msg.getData().getString("JZDName");String strDWMC = msg.getData().getString("DWMC");Map<String, String> map = new HashMap<String, String>();map.put("XM", strXM);//姓名map.put("SFZHM", strSFZHM);//身份证号map.put("KH", strKH);//体检编号map.put("JZDName", strJZDName);//区县map.put("DWMC", strDWMC);//报名单位writeDoc(demoFile, newFile, map);break;default:break;}};
};
/*** 为了保证模板的可用,最好在现有的模板上复制后修改*/
private void printer(String cardNo) {try {saveFile(docName, PersonInfoActivity.this, R.raw.demo);//文件目录res/raw} catch (IOException e) {e.printStackTrace();}//现场检查记录aafileurl = Environment.getExternalStorageDirectory() + "/inspection/demo.doc";bbfileurl = Environment.getExternalStorageDirectory() + "/inspection/demo_printer.doc";//获取模板文件demoFile = new File(aafileurl);//创建生成的文件newFile = new File(bbfileurl);if (newFile.exists()) {newFile.delete();}new Thread(new Runnable() {@Overridepublic void run() {/*** 查询数据库*/try {Connection conn = DBUtil.getSQLConnection();String sql = "select * from dbo.TT_GR_DJXX where SFZHM =" + cardNo;Statement stmt = conn.createStatement();ResultSet rs = stmt.executeQuery(sql);while (rs.next()) {String XM = rs.getString("XM");String SFZHM = rs.getString("SFZHM");String KH = rs.getString("KH");String JZDName = rs.getString("JZDName");String DWMC = rs.getString("DWMC");Message msg = new Message();msg.what = 1001;Bundle data = new Bundle();data.putString("XM", XM);//姓名data.putString("SFZHM", SFZHM);//身份证号data.putString("KH", KH);//体检编号data.putString("JZDName", JZDName);//区县data.putString("DWMC", DWMC);//报名单位msg.setData(data);mHandler.sendMessage(msg);}rs.close();stmt.close();conn.close();} catch (SQLException e) {e.printStackTrace();}}}).start();
}
/*** 将文件复制到SD卡,并返回该文件对应的对象** @return* @throws IOException*/
public void saveFile(String fileName, Context context, int rawid) throws IOException {// 首先判断该目录下的文件夹是否存在File dir = new File(Environment.getExternalStorageDirectory() + "/inspection/");if (!dir.exists()) {// 文件夹不存在 , 则创建文件夹dir.mkdirs();}// 判断目标文件是否存在File file1 = new File(dir, fileName);if (!file1.exists()) {file1.createNewFile(); // 创建文件}InputStream input = context.getResources().openRawResource(rawid); // 获取资源文件rawtry {FileOutputStream out = new FileOutputStream(file1); // 文件输出流、用于将文件写到SD卡中byte[] buffer = new byte[1024];int len = 0;while ((len = (input.read(buffer))) != -1) { // 读取文件,-- 进到内存out.write(buffer, 0, len);}input.close();out.close();} catch (Exception e) {e.printStackTrace();}
}
/*** demoFile 模板文件* newFile 生成文件* map 要填充的数据*/public boolean writeDoc(File demoFile, File newFile, Map<String, String> map) {try {FileInputStream in = new FileInputStream(demoFile);HWPFDocument hdt = new HWPFDocument(in);
//            // 读取word文本内容Range range = hdt.getRange();// 替换文本内容for (Map.Entry<String, String> entry : map.entrySet()) {range.replaceText(entry.getKey(), entry.getValue());}ByteArrayOutputStream ostream = new ByteArrayOutputStream();FileOutputStream out = new FileOutputStream(newFile, true);hdt.write(ostream);// 输出字节流out.write(ostream.toByteArray());out.close();ostream.close();// printershare打印docFile doc = new File(bbfileurl);ComponentName comp = new ComponentName("com.dynamixsoftware.printershare", "com.dynamixsoftware.printershare.ActivityPrintDocuments");Intent intent = new Intent();intent.setComponent(comp);intent.setAction("android.intent.action.VIEW");intent.setType("application/doc");intent.setData(Uri.fromFile(doc));startActivity(intent);return true;} catch (IOException e) {e.printStackTrace();} catch (Exception e) {e.printStackTrace();}return false;}

package com.cmos.smrzdevice;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;public class DBUtil {private static String IP = "200.0.0.225";private static String DBName = "ZB_TJ2018";private static String USER = "sa";private static String PWD = "password";/*** 创建数据库对象*/public static Connection getSQLConnection() {Connection con = null;try {Class.forName("net.sourceforge.jtds.jdbc.Driver");//加上 useunicode=true;characterEncoding=UTF-8 防止中文乱码
//            con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + IP + ":3306/" + DBName + ";useunicode=true;characterEncoding=UTF-8", USER, PWD);con = DriverManager.getConnection("jdbc:jtds:sqlserver://" + IP + ":1433/" + DBName, USER, PWD);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();}return con;}
}

这是连接的方法,最后打印就实现了,非常完美.有问题可以联系我哦.

printshare连接打印机 ,打印word相关推荐

  1. java打印word_Java jacob调用打印机打印word文档

    前面说了Java如何生成复杂的Word文档,今年记录下Java如何调用打印机打印word文档. 起初用的是自带的PrintJob,但是系统提供的打印机制并不成熟完整.网上的代码也是千篇一律,在我的打印 ...

  2. 自己的电脑不能连接打印机打印怎么办

    近来,自己购买了一台小型的打印机,原本想着打印一些比较简单的东西,可是没有想到使用过程中困难多多,卡纸.打印字迹不清晰等问题一件件接着来,我开始怀疑难道我购买的打印机质量太差劲了吗? 相信不少人在打印 ...

  3. python连接打印机打印文档、图片、pdf文件等

    引言 python连接打印机进行打印,可能根据需求的不同,使用不同的函数模块. 如果你只是简单的想打印文档,比如office文档,你可以使用ShellExecute方法,对于微软office的文档.p ...

  4. Secure CRT自动连接打印机打印乱码问题

    最近发现了一件怪事,发现自己的电脑会自动连接打印机打印文件. 关键是打印出来的都是乱码,一行行的电波文,看的脑阔疼. 刚开始还不知道是什么原有导致的. 后来一狠心把打印机给删除了. 第二天,过了一段时 ...

  5. 远程计算机打印,win7系统电脑如何远程连接打印机打印文件

    打印机设备是办公不可缺少一部分,将有需要的文件打印出来,是很简单一件事情.如果打印机不是连着自己电脑的,这时通常的做法是拿着U盘拷贝到连接打印机的电脑上进行打印,这个方法比较麻烦.其实还有一种很便捷的 ...

  6. Android 蓝牙连接打印机打印网络图片

    实现蓝牙连接打印机打印网络图片 经过自己一下午加一个小时的时间整理出来,希望能帮助到各位码兄弟! 主要分为以下几步: 将网络图片URL转为bitmap :其中需要进行网络请求,不可在主线程中进行,需另 ...

  7. 关于前端页面连接打印机打印

    关于前端连接打印机打印 页面代码 逻辑代码需要引入JQ 页面代码 <div class="print-Box" ><div id="test" ...

  8. 网页H5实现 美团接单 连接打印机打印客户下单信息

    1,首先映入jQuery插件 连接打印机 需要使用到JavaScript中window.print()方法把要打印的内容包裹在 ,通过开始.结束标记<!--startprint--> &l ...

  9. uniapp APP实现通过蓝牙连接打印机打印

    蓝牙连接德佟打印机打印 1.导入插件: 在插件市场中搜索LPAPI,进入之后,点击右侧的"购买for云打包",选择目标项目,按照提示操作即可: 2. 配置插件: 用HBuilder ...

最新文章

  1. bzoj 5092: [Lydsy1711月赛]分割序列
  2. 记录一下vlfeat视觉库配置
  3. 二维数组的查找 java_二维数组中的查找
  4. MySQL隧道创建方式
  5. 基于webrtc多人音视频的研究(一)
  6. 160 - 47 DueList.2
  7. linux改文件后run,linux下.run文件如何安装与卸载
  8. oracle12c磁带恢复,第12章 备份与恢复
  9. 【Java】兔子问题
  10. 阿里云云计算 26 SLB的配置
  11. webstorm汉化怎样切回英文_webstorm 单词快捷翻译设置
  12. Cluster-level pseudo-labelling forsource-free cross-domain facial expressionrecognition
  13. VMware虚拟机如何迁移到阿里云
  14. 超微服务器 通电自动启动,让主板一通电就自动开机的方法
  15. hive:建库建表、表分区、内部表外部表、数据导入导出
  16. fdisk分区详解【适用于2T以内的新硬盘分区】
  17. XAPP1052理解
  18. 干货|以太坊全景介绍及入门学习路径(分享实录)
  19. 腾讯云服务器无法使用账号密码登录
  20. ubuntu启动时的初始化信息一

热门文章

  1. c语言程序模拟点灯,点灯游戏(自己编的)
  2. (2018)建筑物占用率估算与检测综述
  3. 创建maven父工程统一管理版本号
  4. Flutter TextStyle超级方便的统一管理器
  5. 计算机平面设计创意教案,平面设计教案1
  6. 数通工程师是干嘛的?
  7. b站电脑客户端_苹果最强电脑和显示器即将发售 / 央视新闻入驻 B 站 / 淘集集启动破产清算...
  8. 尚鼎峰:抖音播放量不够高?如何制作吸睛封面?
  9. 腾讯云技术中台,打破SaaS应用的篱笆墙
  10. 爱旅行项目中实现支付宝支付