android 4.4打印功能

原创 2016年05月30日 15:14:48

Android 4.4goole提供了打印的统一接口,通过使用Android 的api,加上各个厂商提供的打印插件,实现起来相对比较容易些,因为之前在网上下载了一些打印app,连上打印机后打印不出来,有的就是按照提示下载驱动,同样无法打印,所以,最后选择的是Android api+厂家的的打印插件,

目前Android提供的比较容易的是打印图片和webview,代码相对比较简单

private void printPicture(Bitmap bitmap) {
        PrintHelper photoPrinter = new PrintHelper(this);
        photoPrinter.setScaleMode(PrintHelper.SCALE_MODE_FIT);

        photoPrinter.printBitmap("droids.jpg - test print", bitmap);
    }


打印webview设置自定义字体,首先将字体库放到assert子目录下:

InputStream in = new FileInputStream(new File(path));
    //    InputStream    in = getAssets().open("beihairen.doc");
            int len = in.available();
            byte[] buff = new byte[len];
            in.read(buff);
            String html = new String(buff, "UTF-8");

            html = html.replace("@fontPath0", "../font/fs_GBK.TTF");//设置webview中的字体为自定义的字体
            html = html.replace("@fontPath1", "../font/fzgfs.TTF");
            String baseurl = "file:///android_asset/html/";
            mwebView.loadDataWithBaseURL(baseurl, html, "text/html", "UTF-8",
                    null);
            mwebView.setWebViewClient(new WebViewClient() {
                @Override
                public void onPageFinished(WebView view, String url) {
                    // TODO Auto-generated method stub
                    super.onPageFinished(view, url);
                    createWebPrintJob(mwebView);
                }
            });

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

    private void createWebPrintJob(WebView webView) {
    
        // Get a PrintManager instance
        PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE);
        
        // Get a print adapter instance
        PrintDocumentAdapter printAdapter = webView
                .createPrintDocumentAdapter();
        // Create a print job with name and adapter instance
        String jobName = getString(R.string.app_name) + " Document";
        PrintJob printJob = printManager.print(jobName, printAdapter,
                new PrintAttributes.Builder().build());
    }

如果需要自定义字体html页面设置的style:

<style>
    .text0 { font-family: simsun; line-height:30.0pt;font-size:16.0pt;line-height:26.0pt}
    @font-face {
       font-family: simsun;
       src:url(@fontPath0);
    }
    .text1 { font-family: fangsong; line-height:30.0pt;font-size:16.0pt;}
    @font-face {
       font-family: fangsong;
       src:url(../font/fangsong.ttf);
    }
  .text3 {
    list-style: outside none none; border-bottom: 1px solid rgb(15, 15, 15);
    font-family: fangsong; line-height:30.0pt;font-size:14.0pt;
  }
  .text4 {
    font-family: fangsong; line-height:30.0pt;font-size:14.0pt;
  }  
    .text2 { font-family: fangzheng; line-height:30.0pt;text-align:center;font-size:22.0pt;}
    @font-face {
       font-family: fangzheng;
       src:url(../font/fzgfs.TTF);
    }
  li{
        list-style: outside none none; border-bottom: 1px solid rgb(15, 15, 15);font-size:14.0pt;
    font-family: fangsong; line-height:30.0pt;font-size:16.0pt;}
    }
</style>

打印pdf文件

打印pdf文档自定义adapter

PrintDocumentAdapter pda = new PrintDocumentAdapter() {

        @Override
        public void onLayout(PrintAttributes oldAttributes,
                PrintAttributes newAttributes,
                CancellationSignal cancellationSignal,
                LayoutResultCallback callback, Bundle extras) {
            if (cancellationSignal.isCanceled()) {
                callback.onLayoutCancelled();
                return;
            }
            PrintDocumentInfo info = new PrintDocumentInfo.Builder(
                    "printer_qr_code.pdf")
                    .setContentType(PrintDocumentInfo.CONTENT_TYPE_DOCUMENT)
                    .setPageCount(1).build();//setPageCount(1)不设置打印所有页
            callback.onLayoutFinished(info, true);

        }

        @Override
        public void onWrite(PageRange[] pages,
                ParcelFileDescriptor destination,
                CancellationSignal cancellationSignal,
                WriteResultCallback callback) {
            // TODO Auto-generated method stub
            InputStream input = null;
            OutputStream output = null;

            try {

                input = getAssets().open("beihairen.pdf");
                output = new FileOutputStream(destination.getFileDescriptor());

                byte[] buf = new byte[1024];
                int bytesRead;

                while ((bytesRead = input.read(buf)) > 0) {
                    output.write(buf, 0, bytesRead);
                }

                callback.onWriteFinished(new PageRange[] { PageRange.ALL_PAGES });

            } catch (FileNotFoundException ee) {
                // Catch exception
            } catch (Exception e) {
                // Catch exception
            } finally {
                try {
                    input.close();
                    output.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }

    };

参考:http://blog.csdn.net/sahadev_/article/details/51313384

蓝牙&WiFi 智能手机无线打印全攻略

蓝牙&WiFi 智能手机无线打印全攻略注:此文剽窃与:http://fbljava.blog.163.com/blog/static/2652117420085523713663/智能手机无线打印完全...
  • ligangok
  • ligangok
  • 2008年09月22日 09:42
  • 10318

android 控制POS机图文打印(一)

因为公司业务的需要,要用android客户端控制pos机打印票据,不单只是中文的

android 4.4 以太网网络共享功能研究和实现

android较新的版本中,已经加入了以太网功能,用户可在设置界面设置以太网的连接方式,如DHCP/静态IP/PPPOE。 显然,android的实现中默认以太网是作为一个出去的端口(相当于路由器的W...

Android 4.4(API 19)闹钟管理与计步器功能

Android 4.4好消息是从4.4开始,安卓系统自带计步传感器了,这样就再也不用我们自己通过监测加速传感器、重力传感器的数值变化去实现计步功能了,而且谷歌做的相当省电。 当然坏消息就是我们在使用...

Android 4.4新功能

网上查了一下 kk版本有如下新功能: 1、新的电话拨号应用,可快速搜索人名,甚至是地名 2、Hangouts直接整合了原来的短信应用,现在用Hangouts可以解决短信、网络文字、视频、彩...

Android4.4系统增加LCD 屏幕旋转功能

转载自 http://blog.csdn.net/wlwl0071986/article/details/51225087  我以前修改是太后面了,导致开机logo 会部分不旋转,试试这个文章,感觉修...

Android KitKat 4.4平台开发-添加USB ADB和MTP功能支持

http://blog.csdn.net/hantangsongming/article/details/26270933 ADB和MTP是Android基于USB实现的两个重要功能,极大地...

android4.4 系统时间同步,添加NTP备份地址功能

android4.4 系统时间同步,添加NTP备份地址功能

实现Android4.4系统设置分页滑动浏览功能

需求描述:     由于手机功能越来越完善,相应的偏好设置也就越来越多;从用户体验的角度考虑,为了让用户能够在短时间内对常用的偏好设置进行操作,如WIFI,蜂窝数据等。单独将一些常用的设置功能单独展示...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 4.4打印功能
举报原因:
原因补充:

(最多只允许输入30个字)