android通过局域网连接打印机不是很好实现,最近做了个通过android生成pdf上传到后台,后台调用pc驱动完成打印功能。

Desktop desktop;        if (Desktop.isDesktopSupported()) {            desktop = Desktop.getDesktop();            try {             <span style="color:#ff6666;">   desktop.print(new File("d:\\upload\\" + fileName));</span>                map.put("resultId", 1);                map.put("detail", "success print");            } catch (Exception e) {                // TODO: handle exception                e.printStackTrace();                map.put("resultId", 0);                map.put("detail", e.getMessage());            }        } else {            map.put("resultId", -1);            map.put("detail", "not Support print");        }

1:利用Itext插件生成pdf

public int dkzzszyfp() {// 1:建立Document对象实例Document document = new Document(PageSize.A4, 50, 50, 50, 50);FileOutputStream fos;try {fos = new FileOutputStream(new File(Environment.getExternalStorageDirectory()+ "/kuangtiecheng1.pdf"));// 2:建立一个PDF 写入器与document对象关联通过书写器(Writer)可以将文档写入到磁盘中PdfWriter.getInstance(document, fos);// 3:打开文档document.open();// 解决中文不显示问题BaseFont bfChinese = BaseFont.createFont("STSong-Light","UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);Font fontChina18 = new Font(bfChinese, 18);Font fontChina12 = new Font(bfChinese, 12);// 4:向文档添加内容// 标题Paragraph titleParagraph = new Paragraph("业务顾问分析表", fontChina18);titleParagraph.setAlignment(Element.ALIGN_CENTER);// 居中document.add(titleParagraph);// 空格Paragraph blank1 = new Paragraph(" ");document.add(blank1);// 编号Chunk c1 = new Chunk("编号:", fontChina12);Chunk c2 = new Chunk("20160531001", fontChina12);Paragraph snoParagraph = new Paragraph();snoParagraph.add(c1);snoParagraph.add(c2);snoParagraph.setAlignment(Element.ALIGN_RIGHT);document.add(snoParagraph);// 填开日期Chunk c5 = new Chunk("填开日期:2016年05月14日", fontChina12);Paragraph tkrqParagraph = new Paragraph();tkrqParagraph.add(c5);tkrqParagraph.setAlignment(Element.ALIGN_RIGHT);document.add(tkrqParagraph);// 空格document.add(blank1);// 表格处理PdfPTable table = new PdfPTable(6);// 八列table.setWidthPercentage(100);// 表格宽度为100%InputStream abpath = getClass().getResourceAsStream("/assets/bq.png");// String path = new String(InputStreamToByte(abpath ));//// String path = "file:///android_asset/bq.png";Image image2 = Image.getInstance(InputStreamToByte(abpath));PdfPCell cell8 = new PdfPCell();// cell8.setFixedHeight(20);// cell8.setImage(image2);//// cell8.disableBorderSide(1);// cell8.disableBorderSide(2);// cell8.disableBorderSide(4);// cell8.disableBorderSide(8);// cell8.setHorizontalAlignment(RIGHT);cell8.setBorderWidth(1);// cell8.setColspan(2);// 跨2列cell8.setVerticalAlignment(Element.ALIGN_MIDDLE);cell8.setHorizontalAlignment(Element.ALIGN_CENTER);cell8.setImage(image2);table.addCell(cell8);PdfPCell cell9 = new PdfPCell();cell9.setBorderWidth(1);cell9.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell9.setColspan(4);// 跨两列cell9.setPhrase(new Paragraph("北汽服务问诊", fontChina12));table.addCell(cell9);PdfPCell cell10 = new PdfPCell();cell10.setBorderWidth(1);cell10.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell10.setPhrase(new Paragraph("经销商代码001211", fontChina12));table.addCell(cell10);// Row1PdfPCell cell14 = new PdfPCell();cell14.setBorderWidth(1);cell14.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell14.setPhrase(new Paragraph("客服姓名", fontChina12));table.addCell(cell14);PdfPCell cell15 = new PdfPCell();cell15.setBorderWidth(1);cell15.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell15.setPhrase(new Paragraph("旷铁成", fontChina12));table.addCell(cell15);PdfPCell cell16 = new PdfPCell();cell16.setBorderWidth(1);cell16.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell16.setPhrase(new Paragraph("车牌号", fontChina12));table.addCell(cell16);PdfPCell cell17 = new PdfPCell();cell17.setBorderWidth(1);cell17.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell17.setPhrase(new Paragraph("京NY2008", fontChina12));table.addCell(cell17);PdfPCell cell18 = new PdfPCell();cell18.setBorderWidth(1);cell18.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell18.setPhrase(new Paragraph("里程数", fontChina12));table.addCell(cell18);PdfPCell cell19 = new PdfPCell();cell19.setBorderWidth(1);cell19.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell19.setPhrase(new Paragraph("1098公里", fontChina12));table.addCell(cell19);PdfPCell cell22 = new PdfPCell();cell22.setBorderWidth(1);cell22.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell22.setPhrase(new Paragraph("联系电话", fontChina12));table.addCell(cell22);PdfPCell cell23 = new PdfPCell();cell23.setBorderWidth(1);cell23.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell23.setPhrase(new Paragraph(myString + "", fontChina12));table.addCell(cell23);PdfPCell cell24 = new PdfPCell();cell24.setBorderWidth(1);cell24.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell24.setPhrase(new Paragraph("VNI", fontChina12));table.addCell(cell24);PdfPCell cell25 = new PdfPCell();cell25.setBorderWidth(1);cell25.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell25.setPhrase(new Paragraph("LSVFA257845", fontChina12));table.addCell(cell25);PdfPCell cell26 = new PdfPCell();cell26.setBorderWidth(1);cell26.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell26.setPhrase(new Paragraph("进店时间", fontChina12));table.addCell(cell26);PdfPCell cell27 = new PdfPCell();cell27.setBorderWidth(1);cell27.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell27.setPhrase(new Paragraph("2016/4/15", fontChina12));table.addCell(cell27);// 价税合计PdfPCell cell30 = new PdfPCell();cell30.setBorderWidth(1);cell30.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell30.setPhrase(new Paragraph("车型", fontChina12));table.addCell(cell30);PdfPCell cell31 = new PdfPCell();cell31.setBorderWidth(1);// cell31.setColspan(4);// 跨四列cell31.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell31.setPhrase(new Paragraph("X65", fontChina12));table.addCell(cell31);PdfPCell cell32 = new PdfPCell();cell32.setBorderWidth(1);cell32.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell32.setPhrase(new Paragraph("颜色", fontChina12));table.addCell(cell32);PdfPCell cell33 = new PdfPCell();cell33.setBorderWidth(1);// cell33.setColspan(2);// 跨两列cell33.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell33.setPhrase(new Paragraph("香槟金", fontChina12));table.addCell(cell33);// 备注PdfPCell cell34 = new PdfPCell();cell34.setBorderWidth(1);// cell34.setMinimumHeight(40);cell34.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell34.setPhrase(new Paragraph("预约客户", fontChina12));table.addCell(cell34);PdfPCell cell35 = new PdfPCell();cell35.setBorderWidth(1);// cell35.setColspan(7);cell35.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell35.setPhrase(new Paragraph("是", fontChina12));table.addCell(cell35);// 销货单位PdfPCell cell36 = new PdfPCell();cell36.setBorderWidth(1);// Border宽度为1// cell36.setRowspan(3);// 跨三行cell36.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell36.setPhrase(new Paragraph("是否车检", fontChina12));table.addCell(cell36);PdfPCell cell37 = new PdfPCell();cell37.setBorderWidth(1);cell37.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell37.setPhrase(new Paragraph("是", fontChina12));table.addCell(cell37);PdfPCell cell38 = new PdfPCell();cell38.setBorderWidth(1);// cell38.setColspan(3);// 跨三列cell38.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell38.setPhrase(new Paragraph("维修类别", fontChina12));table.addCell(cell38);PdfPCell cell39 = new PdfPCell();cell39.setBorderWidth(1);cell39.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell39.setPhrase(new Paragraph("板喷", fontChina12));table.addCell(cell39);PdfPCell cell40 = new PdfPCell();cell40.setBorderWidth(1);// cell40.setColspan(2);// 跨两列cell40.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell40.setPhrase(new Paragraph("是否洗车", fontChina12));table.addCell(cell40);PdfPCell cell41 = new PdfPCell();cell41.setBorderWidth(1);cell41.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell41.setPhrase(new Paragraph("是", fontChina12));table.addCell(cell41);PdfPCell cell42 = new PdfPCell();cell42.setBorderWidth(1);cell42.setColspan(3);// 跨三列存储cell42.setRowspan(3);cell42.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell42.setPhrase(new Paragraph("用户表述", fontChina12));table.addCell(cell42);PdfPCell cell43 = new PdfPCell();cell43.setBorderWidth(1);cell43.setColspan(3);// 跨三列存储cell43.setRowspan(3);cell43.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell43.setPhrase(new Paragraph("初步诊断", fontChina12));table.addCell(cell43);PdfPCell cell44 = new PdfPCell();cell44.setBorderWidth(1);// cell44.setColspan(2);// 跨两列cell42.setRowspan(5);cell44.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell44.setPhrase(new Paragraph("问诊", fontChina12));table.addCell(cell44);PdfPCell cell45 = new PdfPCell();cell45.setBorderWidth(1);cell45.setColspan(5);cell42.setRowspan(5);cell45.setVerticalAlignment(PdfPCell.ALIGN_MIDDLE);cell45.setPhrase(new Paragraph("1:发生时间:3天前\n2:出现频率:3天前\n3:工作状态:p档\n4:何时发生:起步\n5:天气状况:全天",fontChina12));table.addCell(cell45);document.add(table);document.add(blank1);// // 底部额外信息// StringBuilder sb1 = new StringBuilder();// sb1.append("申请代开发票纳税人(公章)_________");// sb1.append("法人代表_________");// sb1.append("财务负责人_________");// sb1.append("填写人_________");// Paragraph pE = new Paragraph(sb1.toString(), fontChina12);// pE.setAlignment(Element.ALIGN_CENTER);// document.add(pE);//// document.add(blank1);//// // 注// StringBuilder sb2 = new StringBuilder();// sb2.append("注:第一联:税务机关代开发票岗位留存。");// sb2.append("第二联:税务机关税款征收岗位留存。");// Paragraph pZ = new Paragraph(sb2.toString(), fontChina12);// pZ.setAlignment(Element.ALIGN_CENTER);// document.add(pZ);// 5:关闭文档document.close();fos.flush();fos.close();flag = 1;} catch (FileNotFoundException e) {e.printStackTrace();flag = -1;} catch (DocumentException e) {e.printStackTrace();flag = -1;} catch (IOException e) {e.printStackTrace();flag = -1;}return flag;}


2:转换成html文件通过WebView显示打印预览

package com.example.mytabletest;import java.io.BufferedInputStream;import java.io.BufferedWriter;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.net.URL;import java.net.URLConnection;import javax.xml.parsers.ParserConfigurationException;import javax.xml.transform.TransformerException;import org.apache.http.util.ByteArrayBuffer;import org.apache.http.util.EncodingUtils;import org.json.JSONException;import org.json.JSONObject;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.os.Environment;import android.util.Log;import android.view.View;import android.view.View.OnClickListener;import android.view.Window;import android.webkit.WebSettings;import android.webkit.WebView;import android.widget.TextView;import android.widget.Toast;public class ShowWordActivity extends Activity implements OnClickListener {private WebView webview;private String htmlPath;String filePath = Environment.getExternalStorageDirectory()+"/bb.doc";private String fileUrlpdf;@Overrideprotected void onCreate(Bundle savedInstanceState) {this.requestWindowFeature(Window.FEATURE_NO_TITLE);super.onCreate(savedInstanceState);setContentView(R.layout.showword);TextView title = (TextView) findViewById(R.id.middle_tv); title.setText("预览"); TextView right=(TextView)  findViewById(R.id.right_tv); right.setText("打印"); right.setVisibility(View.VISIBLE); right.setOnClickListener(this);webview = (WebView) findViewById(R.id.webview); filePath = this.getIntent().getExtras().getString("filePath"); fileUrlpdf = this.getIntent().getExtras().getString("filePathpdf");if(!isExists(filePath)) {try {Log.e("文件不存在", "HTML路径 :" + htmlPath + "| " + filePath);WordToHtml.convert2Html(filePath, htmlPath);} catch (TransformerException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();} catch (ParserConfigurationException e) {e.printStackTrace();}}WebSettings settings = webview.getSettings();          //settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);        settings.setJavaScriptEnabled(true);        webview.loadUrl("file://"+ htmlPath);}public boolean isExists(String path) {htmlPath = path.replace(".doc", ".html");File file = new File(htmlPath);if(file.exists()) {file.delete();}return false;} public String getHtmlString(String urlString) { try {  URL url = null;  url = new URL(urlString); URLConnection ucon = null; ucon = url.openConnection(); InputStream instr = null; instr = ucon.getInputStream(); BufferedInputStream bis  =  new BufferedInputStream(instr); ByteArrayBuffer baf = new ByteArrayBuffer(500); int current = 0;  while((current = bis.read()) != -1) { baf.append((byte) current); } return EncodingUtils.getString(baf.toByteArray(), "UTF-8"); } catch(Exception e) { return "";  }  } public void print(File file,String str) {FileWriter fw = null;BufferedWriter bw = null;try {fw = new FileWriter(file, false);bw = new BufferedWriter(fw);bw.write(str);bw.flush();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} finally {try {bw.close();fw.close();} catch (IOException e) {e.printStackTrace();}}}int resultID = -1;String result1 = "";@Overridepublic void onClick(View v) {// TODO Auto-generated method stubswitch (v.getId()) {case R.id.right_tv:showProgressBar();AsyUpFile upFile = new AsyUpFile(this, fileUrlpdf){ @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); Log.i("result", "upfile"+result); if (result.equals("")) { Toast.makeText(ShowWordActivity.this, "后台出错", Toast.LENGTH_LONG).show(); return; } try { JSONObject json = new JSONObject(result); result1 = json.getString("detail"); resultID = json.getInt("resultID"); if (resultID==1) { printpdfs(); } else { Toast.makeText(ShowWordActivity.this, "打印失败", Toast.LENGTH_LONG).show(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } }};upFile.execute();break;default:break;}}private void printpdfs(){ AsyPrint prinTask = new AsyPrint( this, fileUrlpdf) { @Override protected void onPostExecute(String result) { // TODO Auto-generated method stub super.onPostExecute(result); hideProgressBar(); Log.i("result", "print"+result); if (result.equals("")) { Toast.makeText(ShowWordActivity.this, "后台出错", Toast.LENGTH_LONG).show(); return; } try { JSONObject json = new JSONObject(result); result1 = json.getString("detail"); resultID = json.getInt("resultId"); if (resultID==1) { Toast.makeText(ShowWordActivity.this, "打印成功", Toast.LENGTH_LONG).show(); } else { Toast.makeText(ShowWordActivity.this, "打印失败", Toast.LENGTH_LONG).show(); } } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }; prinTask.execute();}protected Dialog progressDialog;// 显示载入弹窗public void showProgressBar() {hideProgressBar();// dialogProgress =new CustomProgressDialog(this, "正在加载中");// dialogProgress.show();progressDialog = new Dialog(this, R.style.progress_dialog);progressDialog.setContentView(R.layout.progress_dialog_ios);progressDialog.setCancelable(true);progressDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);TextView msg = (TextView) progressDialog.findViewById(R.id.id_tv_loadingmsg);msg.setText("打印文件发送中");progressDialog.show();}// 隐藏载入弹窗public void hideProgressBar() {// if(dialogProgress!=null)// dialogProgress.dismiss();if (progressDialog != null)progressDialog.dismiss();}}


更多相关文章

  1. 基于Android的Word在线预览
  2. android命令行编译生成apk(翻译官方文档)
  3. 我眼中最好用的Android日志记录库Logger。
  4. Android(安卓)4.4 打印探究
  5. Android调用C# .net 的WebService接口
  6. Android官方开发文档Training系列课程中文版:使用Fragment构建动
  7. Android(安卓)Studio官方文档之添加多种密度的矢量图形
  8. iOS后台机制
  9. Android中实现程序前后台切换效果。

随机推荐

  1. Android中的动画详解系列【4】——Activi
  2. android:layout_gravity和android:gravit
  3. Android优缺点
  4. 【源码】Android(安卓)面包屑导航效果源
  5. Android(安卓)Apk加固的初步实现思路(dex
  6. 美国Android占28%份额 摩托Droid最受欢迎
  7. 摩托罗拉何以靠Android重生
  8. Android的BUG,一个频繁重启问题
  9. Android中回调函数的理解---本人Android
  10. 转:Android前途分析